任意文件下载/读取漏洞利用

时间:2022-07-23
本文章向大家介绍任意文件下载/读取漏洞利用,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

正文

字面意思理解,就是你能够读取任何 你有权限读取到的文件,但有一个最主要的问题就是,你不知道 文件名

一般情况下,任意文件读取/下载漏洞存在于 可下载资源,可读取文件的接口,比如网站读取指定图片

http://www.example.com/filedown.php?filename=testpic.png

或者是学校网站给下载文档的地方

http://www.example.com/filedown.php?file=xxxxx&filetype=doc

那么通过修改参数,就可以进行任意文件读取/下载

http://www.example.com/filedown.php?filename=../../../../../../../../../../etc/passwd

要注意的是,部分网站可能存在编码问题,所以构造的时候需要将 /转为url编码 %2f

http://www.example.com/filedown.php?filename=..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fetc%2fpasswd

可以说,任意文件读取/下载漏洞存在后,最经典的还是下载 /etc/passwd文件

在我利用的漏洞中,这个文件也可以说是最关键的文件,下面有两种思路

思路1

根据当前目录,配合请求的url,来对文件进行读取,接着慢慢的通过源码,读取整个网站关联到的文件

例如

那么通过a href就可以得到 DisplayFIle.php这个文件名

http://www.example.com/filedown.php?filename=./filedown.php

通过读取 displayfile.php这个文件,在获取到其他文件的名字,最后找到敏感代码文件,审计绕过

思路2

这是我最爱的思路,因为我根本懒得审计代码

通过下载 /etc/passwd文件,我们可以得到这台机器上的所有文件,以及用户主目录

最好的情况就是,你当前的用户,就能去下载 /root/.bash_history文件,如果不行的话,可以考虑用以下脚本

执行后,会自动获取用户主目录,然后一个一个去尝试下载,最后下载下来审计用户操作记录,我有一次就是利用这个方法,最后定位到用户,接着深入挖掘

深入挖掘

那么有了 .bash_history后,就可以开始审计操作记录了,首先我们要确定一个东西,那就是任何终端输入的东西,都会被记录到 .bash_history中,比如 mysql-u root-p123456这样一来,我们就相当于直接获取到了mysql的账号密码

上图是我挖edu的时候,读到的东西

除此之外,通过用户history,我们还可以下载到所有的例如网站备份脚本,网站备份文件,调用其他网站的api key 和 api id

如果存在备份脚本的话,还可通过审计脚本,逆推着写一个脚本来下载备份数据库文件,贴一张我漏洞报告中的记录

下载到 mysql_backup.sh后,进行审计,然后写出脚本获取备份文件

总结

除了思路1那种审计网站的思路外,我最常用的其实就是,跟着管理员的操作来进行文件读取,因为有的网站是直接外面写好后,传入里面解压后,才部署的网站,如果管理员没删除部署文件的话,直接整站下载美滋滋

在针对登录的页面,进行审计绕过,也不失为一种方式,但是我还是偏向于,读取备份文件、网站脚本、网站配置文件