任意文件下载
任意文件下载漏洞总结
网站提供文件下载功能,用户点击链接即可下载对应的文件,如果文件下载功能设计不当,攻击者可以通过构造文件路径 从而获取到后台服务器上的其他敏感文件 俗称任意文件下载,有时候我们不知道网站路径,还有环境只能通过../
来逐层猜测路径,
漏洞原理
给用户提供了一个下载的功能,并能接收相关的参数变量
开发时候,使用了读去文件的相关函数
对前端用户读取文件请求,没有进行相应的控制或控制不严(限制、校验)
能输出请求文件的内容,提供给前端下载
漏洞危害
下载服务器的任意文件:
获得网站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