某次攻防演练中对任意文件读取漏洞的利用
字数 1738 2025-08-10 19:49:14
任意文件读取漏洞利用实战教学
漏洞概述
任意文件读取漏洞(Arbitrary File Read)是指攻击者能够读取服务器上任意文件的漏洞,通常由于应用程序未对用户输入的文件路径进行严格过滤导致。
漏洞发现
在攻防演练中,发现目标系统部署了kkfileview组件,该组件存在任意文件读取漏洞。
漏洞利用方法
基本利用方式
通过构造特殊URL路径读取服务器文件:
http://ip/getCorsFile?urlPath=file:文件路径
Linux系统关键文件路径
-
用户信息相关
/etc/passwd- 账户信息/etc/shadow- 账户密码文件(加密)/root/.bash_history- root用户历史命令记录/root/.mysql_history- mysql历史命令记录
-
SSH相关
/root/.ssh/authorized_keys- 远程登录公钥/root/.ssh/id_rsa- SSH私钥/root/.ssh/id_rsa.pub- SSH公钥/root/.ssh/known_hosts- 访问过的主机公钥记录
-
配置文件
/etc/my.cnf- MySQL配置文件/etc/httpd/conf/httpd.conf- Apache配置文件/etc/redhat-release- 系统版本信息/etc/orayconfig.conf- 向日葵远程控制配置文件
-
进程信息
/proc/self/cmdline- 当前进程的cmdline参数/proc/pid/cmdline- 特定pid进程的完整命令行/proc/self/environ- 环境变量/proc/self/loginuid- 当前用户
-
网络信息
/proc/net/fib_trie- 内网IP信息/proc/sched_debug- 当前运行进程及对应pid
-
其他有用文件
/var/lib/mlocate/mlocate.db- 全文件路径数据库/proc/mounts- 系统挂载设备/proc/config.gz- 内核配置文件
Windows系统关键文件路径
-
系统信息
C:\boot.ini- 查看系统版本C:\Windows\repair\sam- 存储系统初次安装的密码
-
服务配置
C:\Windows\System32\inetsrv\MetaBase.xml- IIS配置文件C:\Windows\php.ini- PHP配置信息
-
数据库相关
C:\Program Files\mysql\my.ini- MySQL配置C:\Program Files\mysql\data\mysql\user.MYD- MySQL root用户信息C:\Windows\my.ini- MySQL配置信息
实战案例
-
读取应用配置文件
- 通过逆向找到的jar包,发现
BOOT-INF\classes\application-dev.yml文件包含数据库账号密码
- 通过逆向找到的jar包,发现
-
向日葵远程控制利用
- 读取
/etc/orayconfig.conf获取向日葵配置:encry_pwd- 本机验证码fastcode- 本机识别码(去掉第一个字母,只需后面数字)
- 使用
Sunflower_get_Password脚本解密(需安装unicorn库)
- 读取
渗透技巧
-
目录遍历技巧
- 尝试常见路径如
/data/、/opt/等寻找有用文件 - 查找应用部署目录下的配置文件
- 尝试常见路径如
-
信息关联利用
- 数据库密码可用于尝试其他服务
- 内网信息可用于进一步横向移动
防御建议
- 严格过滤用户输入的文件路径
- 限制应用程序运行权限
- 敏感配置文件设置适当权限
- 定期检查系统关键文件权限
- 对文件读取功能进行白名单限制
工具准备
Sunflower_get_Password脚本(用于解密向日葵验证码)- 安装依赖:
pip3 install unicorn
总结
任意文件读取漏洞虽然看似简单,但通过系统性地遍历关键文件路径,往往能获取大量敏感信息,为进一步渗透提供有力支持。渗透测试中应保持耐心,细致检查每一个可能的路径。