任意文件下载漏洞总结
网站提供文件下载功能,用户点击链接即可下载对应的文件,如果文件下载功能设计不当,攻击者可以通过构造文件路径 从而获取到后台服务器上的其他敏感文件 俗称任意文件下载,有时候我们不知道网站路径,还有环境只能通过../
来逐层猜测路径,
漏洞原理
给用户提供了一个下载的功能,并能接收相关的参数变量开发时候,使用了读去文件的相关函数对前端用户读取文件请求,没有进行相应的控制或控制不严(限制、校验)能输出请求文件的内容,提供给前端下载
漏洞危害
下载服务器的任意文件:获得网站web源码,再对代码进行审计,以获得更多的漏洞获得网站、服务器、系统、数据库等中间件配置文件获得应用于系统配置文件对内网的信息进行一个探测下载各种.log文件,并寻找后台地址、文件上传点等地方
利用条件
存在读文件的函数
读取文件的路径用户可控并且未校验或校验不严
输出了文件内容谷歌语法: inurl:"readfile.php?file="
遇到一个任意文件下载漏洞需要注意权限的问题,权限决定我们能下载文件的范围,尝试读取 /root/.bash_history
看自己是否有root
权限,如果没有的话只能按部就班的利用 ../
来逐层跳转读取对于的文件,存在下载的功能点右键看看路径
修复防范
Pikachu
靶场
靶场中模拟场景点击球员名字就可以成功下载下来 存在文件下载的功能,那么点击的这个接口就是存在路径
选择球员名字右键在新标签页打开链接 查看是否存在路径
发现是存在路径的,通过Get
请求 前端将信息传递到后端,后端查找 a1.png
又输出到前端 用户可以在前端下载信息,我们可以通过修改 filename
参数下载其他的文件
127.0.0.1/pikachu/vul/unsafedownload/execdownload.php?filename=ai.png
通过修改路径发现是可以下载的,我们可以通过../../../
来跳转到根目录进行猜测爆破下载任意的文件
http://127.0.0.1/pikachu/vul/unsafedownload/down_nba.php?filename=../down_nba.php