该系列专栏旨在让漏洞检测变得更简单,只用于学习用途
靶机环境请看专栏前言专栏前言-WooYun漏洞库环境搭建-CSDN博客
一、漏洞描述
任意文件下载漏洞是指应用程序在实现文件下载功能时,由于对用户输入的文件路径等参数未进行严格的过滤和校验,导致攻击者可以通过构造特定的请求,让应用程序下载服务器上的任意文件,包括敏感的系统文件、配置文件、数据库文件等。
二、漏洞等级
高危
三、漏洞检测方法
1、 通过web漏洞扫描工具对网站实施扫描可能发现目录遍历或者任意文件下载漏洞,发送一系列”../”字符来遍历高层目录,并且尝试找到系统的配置文件或者系统中存在的敏感文件。
2、 也可通过判断网站语言,并根据其url中部分提供的参数,进行构造相关的路径信息,如收集到网站中间件版本为apache,则想办法构造../../../ WEB-INF/web.xml等,然后查看其是否可被下载出来。随后可构造下载系统文件。
检查burp,appscan ,acunetix,nikto扫描结果是否有diectory listing,或者下载的路径是否可以自定义任意路径进行下载文件,文件中是否有敏感信息,如信用卡信息、IP、数据库连接池、身份证、账号、密码、手机、邮箱、公司资产、设计图纸、财务报表等
四、漏洞检测
1.AWVS扫描
可以看到存在目录穿越Directing listing漏洞
2.BP扫描
使用bp的扫描可以看到扫描出来目录穿越,及其对应目录
五、漏洞利用
使用dirsearch工具扫描目标
dirsearch -u http://10.4.7.173 -e *
dirsearch工具下载
sudo apt-get install dirsearch
可以看到可以访问到目录
我们直接访问
导致可以任意下载目录中的内容,造成任意文件下载
六、漏洞修复方案
1、 净化数据:对用户传过来的文件名参数进行硬编码或统一编码,对文件类型进行白名单控制,对包含恶意字符或者空字符的参数进行拒绝。
2、 web应用程序可以使用chroot环境包含被访问的web目录,或者使用绝对路径+参数来访问文件目录,时使其即使越权也在访问目录之内。
什么是 chroot
chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以 /
,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为 /
位置,就像将web应用放在了一个牢笼里,无法直接访问其他目录。
chroot 实践_chroot 环境有什么作用-CSDN博客
3、 任意文件下载漏洞也有可能是web所采用的中间件的版本低而导致问题的产生,例如ibm的websphere的任意文件下载漏洞,需更新其中间件的版本可修复。
4、 要下载的文件地址保存至数据库中。
5、 文件路径保存至数据库,让用户提交文件对应ID下载文件。
6、 用户下载文件之前需要进行权限判断。
7、 文件放在web无法直接访问的目录下。
8、 不允许提供目录遍历服务。
9、 公开文件可放置在web应用程序下载目录中通过链接进行下载。