一次异常艰难的渗透测试
字数 1669 2025-08-22 22:47:30

异常艰难的渗透测试案例分析与教学文档

0x01 案例概述

本案例记录了一次从暴力破解开始,经过多重技术组合最终获取系统权限的完整渗透测试过程。攻击者通过弱口令、SQL注入、文件读取、源码审计等技术手段,最终实现了RCE(远程代码执行)。

0x02 技术要点分解

1. 暴力破解与弱口令利用

  • 系统存在弱口令漏洞
  • 怀疑可能是交互式蜜罐(但最终证实不是)
  • 教学点:渗透测试应从最基本的弱口令测试开始,不要忽视简单漏洞

2. 文件上传机制分析

  • 所有文件上传功能使用同一机制
  • 文件存储路径结构:FileDir + FilePath
  • 文件名处理:GUID去掉"-"号
  • 文件加载方式:通过FileGUID从数据库查询路径
  • 教学点:理解文件上传和加载机制是后续漏洞利用的基础

3. SQL注入漏洞利用

发现点

  • 投票功能的"修改参与人"功能存在注入
  • 用户表为t_userinfo
  • 存在堆叠注入(可执行多条SQL语句)

绕过技术

  • WAF存在但较弱
  • 使用左右括号绕过WAF
  • 报错注入被吞字符串,使用substr分割

特殊发现

  • 堆叠注入中可直接返回数据
  • 获取到管理员账号密码但后台无收获
  • 教学点:堆叠注入的利用方式、WAF绕过技术、数据回显的利用

4. 组合漏洞利用(文件读取)

  • 利用堆叠注入修改文件加载路径
  • 结合文件加载机制实现任意文件读取
  • 成功读取Tomcat web路径下的文件
  • 教学点:漏洞组合利用思维,将不同漏洞串联实现更高危害

5. 源码审计技术

文件读取

  • 读取web.xml发现/admin/login.jsp
  • 读取类文件路径:/WEB-INF/classes/目录
  • 处理路径长度限制:利用FileDir+FilePath组合

源码分析

  • 发现认证权限绕过漏洞
  • 发现更多注入点
  • 教学点:WEB-INF目录结构理解、Java Web应用逆向分析

6. 数据库架构分析

  • 发现系统使用多数据源设计:
    • 前台使用普通用户权限的数据源
    • 配置信息存储在ROOT权限的数据库中
  • 通过注入获取配置源信息
  • 教学点:复杂数据库架构分析、权限分离系统的渗透思路

7. JDBC反序列化尝试

  • 发现数据源配置功能点
  • 尝试JDBC反序列化攻击
  • 因目标不出网而失败
  • 教学点:JDBC反序列化攻击条件与限制

8. 最终RCE实现

发现点

  • 后台存在SQL语句调试功能
  • 该功能使用ROOT权限执行SQL

技术路线

  1. 查询secure_file_priv设置
  2. 尝试通过日志写入获取shell
  3. 遇到XML解析问题(<>符号被转义)
  4. 使用XML实体编码绕过:
    • < 转换为 &lt;
    • > 转换为 &gt;
  5. 成功写入webshell并访问
  • 教学点:MySQL日志写入技术、XML编码绕过、权限提升思路

0x03 技术总结与教学要点

渗透测试流程总结

  1. 信息收集 → 2. 漏洞发现 → 3. 初步利用 → 4. 权限提升 → 5. 横向移动 → 6. 目标达成

关键技术要点

  1. 堆叠注入的利用

    • 多条SQL语句执行
    • 数据回显利用
    • 结合其他功能实现更高危害
  2. 文件读取技巧

    • WEB-INF目录结构理解
    • 类文件逆向分析
    • 路径拼接绕过长度限制
  3. 权限绕过技术

    • 多数据源系统分析
    • 配置信息泄露利用
    • 低权限到高权限的跨越
  4. RCE实现路径

    • 从SQL注入到文件写入
    • 日志文件写入技术
    • 编码绕过技巧

防御建议

  1. 避免使用弱口令
  2. 严格过滤SQL注入
  3. 限制数据库权限
  4. 禁用堆叠查询
  5. 妥善保护配置文件
  6. 限制文件读取范围
  7. 避免动态SQL执行
  8. 正确处理特殊字符

0x04 完整攻击链还原

暴力破解 → 发现注入点 → 堆叠注入 → 文件路径操控 → 任意文件读取 → 
源码审计 → 发现多数据源设计 → 获取高权限数据源 → 后台登录 → 
发现SQL执行功能 → 日志写入webshell → XML编码绕过 → RCE

0x05 教学实验建议

  1. 基础实验

    • 搭建存在堆叠注入的测试环境
    • 练习文件路径操控实现任意读取
  2. 进阶实验

    • 多数据源系统的渗透测试
    • MySQL日志写入webshell
  3. 综合实验

    • 完整复现本案例攻击链
    • 尝试寻找替代方案绕过各环节防御

0x06 参考资料

  1. MySQL堆叠注入研究
  2. WEB-INF目录结构解析
  3. JDBC反序列化攻击技术
  4. MySQL日志文件利用技术
  5. XML编码与绕过技术
异常艰难的渗透测试案例分析与教学文档 0x01 案例概述 本案例记录了一次从暴力破解开始,经过多重技术组合最终获取系统权限的完整渗透测试过程。攻击者通过弱口令、SQL注入、文件读取、源码审计等技术手段,最终实现了RCE(远程代码执行)。 0x02 技术要点分解 1. 暴力破解与弱口令利用 系统存在弱口令漏洞 怀疑可能是交互式蜜罐(但最终证实不是) 教学点 :渗透测试应从最基本的弱口令测试开始,不要忽视简单漏洞 2. 文件上传机制分析 所有文件上传功能使用同一机制 文件存储路径结构: FileDir + FilePath 文件名处理:GUID去掉"-"号 文件加载方式:通过FileGUID从数据库查询路径 教学点 :理解文件上传和加载机制是后续漏洞利用的基础 3. SQL注入漏洞利用 发现点 投票功能的"修改参与人"功能存在注入 用户表为 t_userinfo 存在堆叠注入(可执行多条SQL语句) 绕过技术 WAF存在但较弱 使用左右括号绕过WAF 报错注入被吞字符串,使用substr分割 特殊发现 堆叠注入中可直接返回数据 获取到管理员账号密码但后台无收获 教学点 :堆叠注入的利用方式、WAF绕过技术、数据回显的利用 4. 组合漏洞利用(文件读取) 利用堆叠注入修改文件加载路径 结合文件加载机制实现任意文件读取 成功读取Tomcat web路径下的文件 教学点 :漏洞组合利用思维,将不同漏洞串联实现更高危害 5. 源码审计技术 文件读取 读取 web.xml 发现 /admin/login.jsp 读取类文件路径: /WEB-INF/classes/ 目录 处理路径长度限制:利用 FileDir+FilePath 组合 源码分析 发现认证权限绕过漏洞 发现更多注入点 教学点 :WEB-INF目录结构理解、Java Web应用逆向分析 6. 数据库架构分析 发现系统使用多数据源设计: 前台使用普通用户权限的数据源 配置信息存储在ROOT权限的数据库中 通过注入获取配置源信息 教学点 :复杂数据库架构分析、权限分离系统的渗透思路 7. JDBC反序列化尝试 发现数据源配置功能点 尝试JDBC反序列化攻击 因目标不出网而失败 教学点 :JDBC反序列化攻击条件与限制 8. 最终RCE实现 发现点 后台存在SQL语句调试功能 该功能使用ROOT权限执行SQL 技术路线 查询 secure_file_priv 设置 尝试通过日志写入获取shell 遇到XML解析问题( <>符号被转义) 使用XML实体编码绕过: < 转换为 &lt; > 转换为 &gt; 成功写入webshell并访问 教学点 :MySQL日志写入技术、XML编码绕过、权限提升思路 0x03 技术总结与教学要点 渗透测试流程总结 信息收集 → 2. 漏洞发现 → 3. 初步利用 → 4. 权限提升 → 5. 横向移动 → 6. 目标达成 关键技术要点 堆叠注入的利用 : 多条SQL语句执行 数据回显利用 结合其他功能实现更高危害 文件读取技巧 : WEB-INF目录结构理解 类文件逆向分析 路径拼接绕过长度限制 权限绕过技术 : 多数据源系统分析 配置信息泄露利用 低权限到高权限的跨越 RCE实现路径 : 从SQL注入到文件写入 日志文件写入技术 编码绕过技巧 防御建议 避免使用弱口令 严格过滤SQL注入 限制数据库权限 禁用堆叠查询 妥善保护配置文件 限制文件读取范围 避免动态SQL执行 正确处理特殊字符 0x04 完整攻击链还原 0x05 教学实验建议 基础实验 : 搭建存在堆叠注入的测试环境 练习文件路径操控实现任意读取 进阶实验 : 多数据源系统的渗透测试 MySQL日志写入webshell 综合实验 : 完整复现本案例攻击链 尝试寻找替代方案绕过各环节防御 0x06 参考资料 MySQL堆叠注入研究 WEB-INF目录结构解析 JDBC反序列化攻击技术 MySQL日志文件利用技术 XML编码与绕过技术