记一次Shiro反序列化渗透测试
字数 1634 2025-08-05 08:19:51
Apache Shiro反序列化漏洞渗透测试实战教学文档
0x00 前言
本文详细记录了一次针对Apache Shiro反序列化漏洞的完整渗透测试过程,包含信息收集、漏洞探测、利用工具开发以及最终获取系统权限的全流程。通过本案例,读者可以学习到Shiro反序列化漏洞的实战利用技巧。
0x01 目标环境
- 目标系统:后台登录页面系统
- 防护机制:存在前端加密和防爬机制
- 开放端口:80(http)、443(https)
- Web服务器:nginx/1.18.0
- 框架特征:Apache Shiro(通过Cookie rememberMe特征判断)
0x02 信息收集阶段
1. 基础信息探测
使用工具:
- Wappalyzer:识别网站平台架构
- Shodan:获取IP和开放端口
- Nslookup & 多地ping:确认真实IP和CDN情况
发现:
- 目标IP:xxx.xxx.1.59
- 无CDN防护
- 仅开放80和443端口
2. 端口扫描
使用Nmap扫描结果:
Nmap scan report for xxx.xxx.1.59
PORT STATE SERVICE VERSION
80/tcp open http nginx 1.18.0
443/tcp open ssl/https
8080/tcp closed http-proxy
3. 目录扫描
尝试工具:
- dirsearch:无果(可能被防护机制拦截)
- dirb:成功发现关键路径
发现关键路径:/xxxx/xxxx/xxxx(路径打码)
0x03 漏洞发现
1. Shiro特征确认
通过添加Cookie测试:
Cookie: rememberMe=1
响应中包含:
Set-Cookie: rememberMe=deleteMe
确认存在Apache Shiro框架
2. 反序列化漏洞验证
使用DNSLOG和默认密钥检测,确认存在Shiro反序列化漏洞
0x04 前端加密分析
1. 加密特征
登录请求中账号密码被加密:
- 示例:123456 → s2ypDtQpq5F/4xvZUu9HxA==
2. 加密算法分析
通过前端JS分析发现:
- 加密算法:AES
- 加密模式:ECB
- 填充方式:pkcs7
- 输出格式:base64
- 密钥:o7H8uIM2O5qv65l2
- 无偏移量(iv)
3. 开发Burp加密插件
使用jsEncrypter插件自定义AES加密模块:
-
创建AES文件夹,包含:
- crypto-js.js(加密依赖)
- jsEncrypter_aes.js(加密逻辑)
-
关键加密代码:
function jsEncrypt(burp_payload){
var new_payload;
// AES加密逻辑实现
var key = CryptoJS.enc.Utf8.parse("o7H8uIM2O5qv65l2");
var encrypted = CryptoJS.AES.encrypt(burp_payload, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
new_payload = encrypted.toString();
return new_payload;
}
- 测试验证:
- 输入:123456
- 输出:s2ypDtQpq5F/4xvZUu9HxA==
- 与Burp拦截数据一致,验证成功
0x05 漏洞利用
1. 使用Shiro反序列化回显工具
工具特性:
- 支持Tomcat 7/8/9回显
- 支持内存shell写入与卸载
- 支持自定义UA和Accept-Header
- 支持AES-GCM加密方式
2. 写入内存shell
配置参数:
- Shell类型:内存马
- 连接密码:自定义
- Header:根据目标环境配置
3. 蚁剑连接配置
关键配置项:
- URL需要包含ver参数
- 连接类型:CUSTOM
- 设置正确的Header
0x06 渗透后操作
- 成功获取系统权限
- 记录渗透测试痕迹
- 生成渗透测试报告
- 可一键卸载内存shell(工具功能)
0x07 总结与经验
-
工具选择:
- 不同目录扫描工具效果可能差异很大(dirsearch vs dirb)
- 及时更新测试字典和工具
-
Shiro漏洞利用关键点:
- 准确识别Shiro框架特征
- 密钥检测要全面
- 回显工具配置要正确
-
前端加密处理:
- 掌握常见加密算法识别技巧
- 具备定制化工具开发能力
-
推荐工具:
- Shiro反序列化回显工具(支持多种内存shell)
- jsEncrypter插件(应对前端加密场景)
0x08 防御建议
-
针对Shiro反序列化漏洞:
- 升级到最新安全版本
- 修改默认密钥
- 禁用rememberMe功能(如非必要)
-
针对前端加密:
- 避免在前端暴露加密密钥
- 使用更安全的加密方案
-
通用防护:
- 限制目录访问权限
- 部署WAF防护
- 定期安全审计
通过本案例,我们展示了从信息收集到漏洞利用的完整渗透测试流程,特别强调了Shiro反序列化漏洞的实战利用技巧和前端加密处理方案。这些技术和方法可以应用于类似场景的安全测试工作中。