任意文件下载漏洞
任意文件下载漏洞
一、任意文件下载漏洞概要
由于业务需求,网站提供文件查看或下载功能,如果对用户查看或下载的文件不做限制,则恶意用户能够查看或下载任意文件,可以是源代码、敏感文件等。攻击者可以读取下载服务器中的配置文件、敏感文件等,会提供攻击者更多可用信息,提高被入侵的风险。
二、任意文件下载漏洞利用条件
存在读文件的函数
读取文件的路径用户可控且未校验或校验不严
输出了文件内容
三、任意文件下载漏洞案例
1、PHP源码中的问题
1 |
|
2、超链接
网站URL中存在下载参数,并且未进行过滤../../字符,且输出了文件内容。
从链接上看,形如:
download.php?path=
download.php?file=
down.php?file=
data.php?file=
readfile.php?file=
read.php?filename=
利用Hacker语法查找相关url链接:inurl:"readfile.php?file="
3、数据包参数
从数据包里的参数名看,形如:
- FilePath=
- fifilepath=
- path=
- inputFile=
- url=
- data=
- readfifile=
- src=
4、Nginx目录遍历
漏洞简介:
和Apache目录遍历一样属于配置错误,可导致源码泄露与目录遍历
漏洞复现:
访问test
目录
核心配置:
修改/usr/local/nginx/conf/nginx.conf
,在如下图位置添加autoindex on
,默认是没有这一行的
然后访问test
目录,成功实现目录遍历
修复方法:
将autoindex on
改为autoindex off
5、Nginx目录穿越
漏洞简介:
Nginx
在配置别名(Alias)的时候,如果忘记加/
,将造成一个目录穿越漏洞
配置不当:
在如下配置中设置目录别名时/test
配置为/home/
的别名,那么当我们访问/test../
时,nginx
实际处理的路径时/home/../
,从而实现了穿越目录
漏洞复现:
修复方法:
将Nginx
配置文件中的/test
改为/test/
(闭合)
四、任意文件下载漏洞的利用
常规思路
1、下载常规的配置文件,例如: ssh,weblogic,ftp,mysql等相关配置
2、下载各种.log文件,从中寻找一些后台地址,文件上传点之类的地方,如果运气好的话会获得一些前人后门。
3、下载web业务文件进行白盒审计,利用漏洞进一步攻入服务器。
不同操作系统的思路
1、Windows
C:\boot.ini//查看系统版本
C:\Windows\repair\sam//存储系统初次安装的密码
C:\Program Files\mysqlmy.ini//Mysql配置
C:\Windows\php.ini //php配置信息
C:\Windows\my.ini//Mysql配置信息
C:\Windows\System32\inetsrvMetaBase.xml//1S配置文件
C:\VProgram Files\mysqNdata\mysql\user.MYD//Mysql root
C:\Windows\win.ini//Windows系统的一个基本系统配置文件
2、Linux
/root/.ssh/authorized_keys
/root/.ssh/id_rsa
/root/.ssh/id_ras.keystore
/root/.ssh/known_hosts//记录每个访问计算机用户的公钥
/etc/passwd@/etc/shadow
/etc/my.cnf//mysql配置文件
/etc/httpd/conf/httpd.conf//apache配置文件
/root/.bash_history//用户历史命令记录文件
/root/.mysql_history //mysql历史命令记录文件
/porc/config.gz//内核配置文件
附加:Linux下root可以下载/var/lib/mlocate/mlocate.db数据库,通过 locate mlocate.db root
命令可以获得所有root的文件列表。