概述
一些网站由于业务需求,往往需要提供文件查看或文件下载功能,但若对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意敏感文件,这就是文件查看与下载漏洞
漏洞产生原因
- 存在读取下载文件的函数
- 存在文件输出和下载功能
- 读取下载文件的路径用户可控,且未校验或校验不严
文件读取函数 readfile()、file_get_contents()、fopen()
漏洞危害
- 下载常规的配置文件,服务器及系统配置文件。例如: ssh,weblogic,ftp,mysql等相关配置
- 下载各种
.log文件,从中寻找一些后台地址,文件上传点之类的地方,如果运气好的话会获得一些前辈们的后门。 - 下载web业务文件进行白盒审计,利用漏洞进一步攻入服务器。
漏洞挖掘
- 通过web漏洞扫描工具对网站实施扫描可能发现任意文件读取/下载漏洞,发送一系列”…/”字符来遍历高层目录,并且尝试找到系统的配置文件或者系统中存在的敏感文件。
- 也可通过判断网站语言,并根据其url中部分提供的参数,进行构造相关的路径信息,如收集到网站中间件版本为apache,则想办法构造…/…/…/ WEB-INF/web.xml等,然后查看其是否可被读取或者下载出来。
- 有些WAF会过滤…/,可以构造 /.%252e/.%252e/.%252e/ , %25对应的是%,%2e对应的是.,所以 .%252e/ 对应的是 …/
漏洞防御
- 过滤“.(点)”,使用户在url中不能回溯上级目录
- 正则严格判断用户输入参数的格式
- 配置限定文件访问范围,目录权限设置或单独文件权限设置
- 将下载区独立出来,放在项目路径外,给每个下载资源固定的URL,而不是所有的下载资源都是统一的URL:http://www.test.com/download?filename=文件名
- 净化数据:对用户传过来的文件名参数进行硬编码或统一编码,对文件类型进行白名单控制,对包含恶意字符或者空字符的参数进行拒绝。
- 用户下载文件之前需要进行权限判断。
- 文件放在web无法直接访问的目录下。
- 不允许提供目录遍历服务。
常见敏感文件信息
Windows
C:\boot.ini //查看系统版本
C:\Windows\System32\inetsrv\MetaBase.xml //IIS配置文件
C:\Windows\repair\sam //存储系统初次安装的密码
C:\Program Files\mysql\my.ini //Mysql配置
C:\Program Files\mysql\data\mysql\user.MYD //Mysql root
C:\Windows\php.ini //php配置信息
C:\Windows\my.ini //Mysql配置信息
C:\Windows\win.ini //Windows系统的一个基本系统配置文件
Linux
/root/.ssh/authorized_keys //如需登录到远程主机,需要到.ssh目录下,新建authorized_keys文件,并将id_rsa.pub内容复制进去
/root/.ssh/id_rsa //ssh私钥,ssh公钥是id_rsa.pub
/root/.ssh/id_ras.keystore //记录每个访问计算机用户的公钥
/root/.ssh/known_hosts //记录每个访问计算机用户的公钥
/etc/passwd //账户信息
/etc/shadow //账户密码文件
/etc/my.cnf //mysql配置文件
/root/.bash_history //用户历史命令记录文件
/root/.mysql_history //mysql历史命令记录文件
/var/lib/mlocate/mlocate.db //全文件路径

本文详细介绍了文件查看与下载漏洞的原因、危害及如何挖掘此类漏洞。恶意用户可能通过文件读取函数获取敏感信息,如配置文件、系统日志等。防御措施包括过滤特殊字符、权限验证和文件存放位置的隔离。列举了Windows和Linux系统下的敏感文件路径,提醒管理员加强防护。

被折叠的 条评论
为什么被折叠?



