一次异常艰难的渗透测试
字数 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
技术路线
- 查询
secure_file_priv设置 - 尝试通过日志写入获取shell
- 遇到XML解析问题(<>符号被转义)
- 使用XML实体编码绕过:
<转换为<>转换为>
- 成功写入webshell并访问
- 教学点:MySQL日志写入技术、XML编码绕过、权限提升思路
0x03 技术总结与教学要点
渗透测试流程总结
- 信息收集 → 2. 漏洞发现 → 3. 初步利用 → 4. 权限提升 → 5. 横向移动 → 6. 目标达成
关键技术要点
-
堆叠注入的利用:
- 多条SQL语句执行
- 数据回显利用
- 结合其他功能实现更高危害
-
文件读取技巧:
- WEB-INF目录结构理解
- 类文件逆向分析
- 路径拼接绕过长度限制
-
权限绕过技术:
- 多数据源系统分析
- 配置信息泄露利用
- 低权限到高权限的跨越
-
RCE实现路径:
- 从SQL注入到文件写入
- 日志文件写入技术
- 编码绕过技巧
防御建议
- 避免使用弱口令
- 严格过滤SQL注入
- 限制数据库权限
- 禁用堆叠查询
- 妥善保护配置文件
- 限制文件读取范围
- 避免动态SQL执行
- 正确处理特殊字符
0x04 完整攻击链还原
暴力破解 → 发现注入点 → 堆叠注入 → 文件路径操控 → 任意文件读取 →
源码审计 → 发现多数据源设计 → 获取高权限数据源 → 后台登录 →
发现SQL执行功能 → 日志写入webshell → XML编码绕过 → RCE
0x05 教学实验建议
-
基础实验:
- 搭建存在堆叠注入的测试环境
- 练习文件路径操控实现任意读取
-
进阶实验:
- 多数据源系统的渗透测试
- MySQL日志写入webshell
-
综合实验:
- 完整复现本案例攻击链
- 尝试寻找替代方案绕过各环节防御
0x06 参考资料
- MySQL堆叠注入研究
- WEB-INF目录结构解析
- JDBC反序列化攻击技术
- MySQL日志文件利用技术
- XML编码与绕过技术