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限定文件访问范围