任意文件读取漏洞的曲折历程
字数 1935 2025-08-18 11:39:30
任意文件读取漏洞的深入利用与实战教学
1. 漏洞概述
任意文件读取漏洞是一种严重的安全漏洞,攻击者通过该漏洞可以读取服务器上的敏感文件,包括配置文件、密码文件、日志文件等。本教学将基于实战案例,详细讲解如何发现、利用和扩展任意文件读取漏洞。
2. 环境信息
- 目标系统: wy.xxx.com.cn (子域名)
- 服务器IP: 114.xxx.xxx.xxx (阿里云)
- 技术栈:
- 编程语言: Java
- Web服务器: Apache Tomcat 7.0.61
- 数据库: MySQL
- 操作系统: Linux
- 开放端口: 大量开放端口,其中30126为SSH端口
3. 漏洞发现与初步利用
3.1 漏洞发现点
在系统中发现"下载模板文件"功能,通过抓包发现path参数存在文件路径可控问题:
GET /download?path=/path/to/template.xls
3.2 利用方法
- 构造恶意请求:修改path参数指向敏感文件
- 使用字典fuzz:系统化测试常见敏感文件路径
- 分析响应:根据返回内容判断文件是否存在及权限
3.3 常用敏感文件路径
/etc/passwd # 用户账户信息
/etc/shadow # 用户密码哈希
/root/.bash_history # root用户命令历史
/proc/self/environ # 环境变量
/var/log/ # 各种日志文件
WEB-INF/web.xml # Java Web应用配置
4. 信息收集与系统侦察
4.1 获取的关键信息
-
用户信息:
/etc/passwd显示只有root和ftpimage账户可登录/etc/shadow可读取,说明当前权限较高
-
系统操作历史:
/root/.bash_history显示root执行过的命令- 确认当前为root权限运行的服务
-
网站路径信息:
- 发现网站绝对路径:
/www/xxx-tomcat1/ - 尝试读取
tomcat-users.xml(未配置manager访问)
- 发现网站绝对路径:
-
日志文件:
- 下载
catalina.out日志(1.9GB) - 使用wget从服务器直接下载大文件
- 下载
4.2 日志分析技巧
- 检索关键词:
/www/xxx-tomcat1/发现多个war包 - 分析部署结构:一个war包对应一个域名
5. 深入利用:获取配置文件
5.1 定位配置文件
Java Web应用的配置文件通常位于:
/WEB-INF/classes/config.properties
/WEB-INF/classes/application.properties
5.2 获取的敏感配置
-
FTP账户信息:
- 用户名:ftpimage
- 密码:(从配置文件中获取)
- 图片服务域名:image.xx.com.cn
-
数据库配置:
- 可能包含数据库连接字符串、用户名和密码
6. 尝试其他攻击向量
6.1 Axis2框架利用
发现部分war包包含Axis2框架:
- 尝试上传arr格式的webshell
- 发现404错误,确认框架无法利用
6.2 提权尝试
使用获取的ftpimage凭证登录:
- 权限受限,仅能访问www和var目录
- 发现nginx和redis目录
- 尝试提权命令失败(阿里云环境限制)
7. 分析Nginx配置
读取nginx.conf文件:
- 发现33个域名配置
- 确认nginx设置了白名单(仅允许image.xxx.com.cn)
- 建立网站路径与域名的映射关系:
/www/xxx-tomcat1/wy/ROOT/ -> wy.xxx.com.cn
/www/xxx-tomcat1/care/ROOT/ -> care.xxx.com.cn
/www/xxx-tomcat1/nd/ROOT/ -> nd.xxx.com.cn
/www/xxx-tomcat1/elder/ROOT/ -> elder.xxx.com.cn
/www/xxx-tomcat1/wx2/xxxx.war/ -> wx2.xxx.com.cn
8. 发现上传漏洞
8.1 上传目录发现
- 目标路径:
/www/xxx-tomcat1/wy/ROOT/upload/ - 包含大量xls和jsp文件
- 权限异常:无法访问
/www/xxx-tomcat1/但能访问子目录
8.2 文件上传验证
- 通过系统功能上传xls文件
- 抓包发现响应包含upload路径
- 检查upload目录,确认文件被写入
- 尝试上传webshell(jsp文件)
8.3 上传webshell
- 构造包含恶意代码的jsp文件
- 通过上传功能提交文件
- 访问上传的jsp文件获取webshell
9. 漏洞利用总结
9.1 利用链
任意文件读取 → 获取配置文件 → 发现上传点 → 上传webshell
9.2 关键经验
-
文件上传漏洞利用:
- 不限于图片上传,尝试各种文件上传点
- 包括模板上传、数据导入、视频上传等
-
任意文件读取的价值:
- 收集系统路径、配置文件、备份文件等信息
- 发现其他漏洞的跳板
- 结合多个漏洞实现更大危害
-
持久性侦察:
- 不要轻易放弃,持续收集信息
- 分析日志和配置文件寻找突破口
10. 防御建议
10.1 防止任意文件读取
- 对文件读取功能实施严格路径校验
- 使用白名单限制可访问的文件
- 避免将敏感信息存储在web可访问区域
10.2 安全配置建议
- 为Tomcat配置适当权限,避免root运行
- 定期检查并清理不必要的配置文件
- 实现严格的文件上传验证机制
- 对敏感操作实施日志记录和监控
11. 扩展思考
- 如何自动化任意文件读取漏洞的探测?
- 在云环境下,如何利用此类漏洞获取更多信息?
- 除了webshell,还能通过此漏洞实现哪些攻击?
- 如何将文件读取与SSRF等其他漏洞结合利用?
通过本案例可以看出,一个看似简单的任意文件读取漏洞,经过深入分析和利用,可以发展成为获取系统完全控制权的严重安全事件。安全人员应当重视此类漏洞,并采取适当的防御措施。