任意文件读取漏洞的曲折历程
字数 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 利用方法

  1. 构造恶意请求:修改path参数指向敏感文件
  2. 使用字典fuzz:系统化测试常见敏感文件路径
  3. 分析响应:根据返回内容判断文件是否存在及权限

3.3 常用敏感文件路径

/etc/passwd         # 用户账户信息
/etc/shadow         # 用户密码哈希
/root/.bash_history # root用户命令历史
/proc/self/environ  # 环境变量
/var/log/           # 各种日志文件
WEB-INF/web.xml     # Java Web应用配置

4. 信息收集与系统侦察

4.1 获取的关键信息

  1. 用户信息

    • /etc/passwd显示只有root和ftpimage账户可登录
    • /etc/shadow可读取,说明当前权限较高
  2. 系统操作历史

    • /root/.bash_history显示root执行过的命令
    • 确认当前为root权限运行的服务
  3. 网站路径信息

    • 发现网站绝对路径:/www/xxx-tomcat1/
    • 尝试读取tomcat-users.xml(未配置manager访问)
  4. 日志文件

    • 下载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 文件上传验证

  1. 通过系统功能上传xls文件
  2. 抓包发现响应包含upload路径
  3. 检查upload目录,确认文件被写入
  4. 尝试上传webshell(jsp文件)

8.3 上传webshell

  1. 构造包含恶意代码的jsp文件
  2. 通过上传功能提交文件
  3. 访问上传的jsp文件获取webshell

9. 漏洞利用总结

9.1 利用链

任意文件读取 → 获取配置文件 → 发现上传点 → 上传webshell

9.2 关键经验

  1. 文件上传漏洞利用

    • 不限于图片上传,尝试各种文件上传点
    • 包括模板上传、数据导入、视频上传等
  2. 任意文件读取的价值

    • 收集系统路径、配置文件、备份文件等信息
    • 发现其他漏洞的跳板
    • 结合多个漏洞实现更大危害
  3. 持久性侦察

    • 不要轻易放弃,持续收集信息
    • 分析日志和配置文件寻找突破口

10. 防御建议

10.1 防止任意文件读取

  1. 对文件读取功能实施严格路径校验
  2. 使用白名单限制可访问的文件
  3. 避免将敏感信息存储在web可访问区域

10.2 安全配置建议

  1. 为Tomcat配置适当权限,避免root运行
  2. 定期检查并清理不必要的配置文件
  3. 实现严格的文件上传验证机制
  4. 对敏感操作实施日志记录和监控

11. 扩展思考

  1. 如何自动化任意文件读取漏洞的探测?
  2. 在云环境下,如何利用此类漏洞获取更多信息?
  3. 除了webshell,还能通过此漏洞实现哪些攻击?
  4. 如何将文件读取与SSRF等其他漏洞结合利用?

通过本案例可以看出,一个看似简单的任意文件读取漏洞,经过深入分析和利用,可以发展成为获取系统完全控制权的严重安全事件。安全人员应当重视此类漏洞,并采取适当的防御措施。

任意文件读取漏洞的深入利用与实战教学 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 参数存在文件路径可控问题: 3.2 利用方法 构造恶意请求 :修改path参数指向敏感文件 使用字典fuzz :系统化测试常见敏感文件路径 分析响应 :根据返回内容判断文件是否存在及权限 3.3 常用敏感文件路径 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应用的配置文件通常位于: 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) 建立网站路径与域名的映射关系: 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 利用链 9.2 关键经验 文件上传漏洞利用 : 不限于图片上传,尝试各种文件上传点 包括模板上传、数据导入、视频上传等 任意文件读取的价值 : 收集系统路径、配置文件、备份文件等信息 发现其他漏洞的跳板 结合多个漏洞实现更大危害 持久性侦察 : 不要轻易放弃,持续收集信息 分析日志和配置文件寻找突破口 10. 防御建议 10.1 防止任意文件读取 对文件读取功能实施严格路径校验 使用白名单限制可访问的文件 避免将敏感信息存储在web可访问区域 10.2 安全配置建议 为Tomcat配置适当权限,避免root运行 定期检查并清理不必要的配置文件 实现严格的文件上传验证机制 对敏感操作实施日志记录和监控 11. 扩展思考 如何自动化任意文件读取漏洞的探测? 在云环境下,如何利用此类漏洞获取更多信息? 除了webshell,还能通过此漏洞实现哪些攻击? 如何将文件读取与SSRF等其他漏洞结合利用? 通过本案例可以看出,一个看似简单的任意文件读取漏洞,经过深入分析和利用,可以发展成为获取系统完全控制权的严重安全事件。安全人员应当重视此类漏洞,并采取适当的防御措施。