一.漏洞介绍
一些网站由于业务需求,往往需要提供文件查看或文件下载功能,但若对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意敏感文件,这就是文件查看与下载漏洞。
二.实验
1.下载一个文件
先进入pikachu,选中一个图片下载
这时可以成功查看到下载的图片文件
2.下载上一级文件
输入../是返回上一级这时,可以成功下载文件
能下载说明网页存在漏洞,是任意文件下载漏洞
三.任意文件读取漏洞
有些浏览器下载不了文件,因为没有脚本可执行,它会把文件内容展现出来,这叫任意文件读取漏洞
四.任意文件下载漏洞是如何产生的
查看文件代码
它没有对filename进行过滤
只允许下载某个文件或只允许下载某个目录下的文件叫白名单过滤
五.任意文件下载漏洞产生的原因
程序员写代码时没有对../进行过滤和程序员没有采用白名单的方式严格控制下载的文件
六.发现漏洞应该怎样做
1.下载常规的配置文件,例如: ssh,weblogic,ftp,mysql等相关配置(这些文件含有账号和密码)
2.下载各种.log文件,从中寻找一些后台地址,文件上传点之类的地方,如果运气好的话会获得一些前辈们的后门(可以获取管理员后台或网站地址,还有文件上传点)
3.下载web业务文件进行白盒审计,利用漏洞进一步攻入服务器。
尝试读取/root/.bash_history看自己是否具有root权限。
如果没有的话。我们只能按部就班的利用../来回跳转读取一些.ssh下的配置信息文件,读取mysql下的.bash_history文件。来查看是否记录了一些可以利用的相关信息。然后逐个下载我们需要审计的代码文件,但是下载的时候变得很繁琐,我们只能尝试去猜解目录,然后下载一些中间件的记录日志进行分析。
七.漏洞修复
1.过滤".",使用户在url中不能回溯上级目录
2.正则严格判断用户输入参数的格式
3.php.ini配置open_basedir限定文件访问范围
只允许访问某个目录下的文件,不允许跳转根目录
打开phpstudy的其他选项菜单的打开配置文件选择php-ini
八.怎样去防御
1.通过代码限制
2.通过PHP自身的功能来限制目录