This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
# 打包为可执行 fat JAR(含所有依赖)
mvn clean package -DskipTests
# 生成产物路径
target/shiro_attack-4.5.6-SNAPSHOT-all.jar
# 运行(需要 JavaFX 运行时,Java 8)
java -jar target/shiro_attack-4.5.6-SNAPSHOT-all.jar本项目无测试套件,无 CI/CD 配置。
ShiroAttack2 是一个利用 Apache Shiro rememberMe AES 反序列化漏洞(Shiro-550)的 JavaFX GUI 工具。
- 密钥爆破 —
deser/plugins/keytest/KeyEcho.java将SimplePrincipalCollection序列化后用候选密钥(resources/data/shiro_key.txt)逐一加密,通过响应判断有效密钥 - Gadget 链选择 — 用户在 UI 中选择适合目标 classpath 的
CommonsBeanutils变体(1.8.3 / 1.9.2 / AttrCompare) - 回显类型选择 — Tomcat / Spring / DFS-AllEcho / NoEcho / 反弹 Shell
- Payload 构造 —
deser/util/Gadgets.java用 Javassist 将回显类嵌入TemplatesImpltranslet,Gadget 链包装后序列化 - 加密发送 —
Encrypt/CbcEncrypt.java(AES-CBC)或Encrypt/GcmEncrypt.java(AES-GCM)加密后 Base64 编码,写入 rememberMe cookie 发送
| 包 | 职责 |
|---|---|
attack.UI |
JavaFX 入口 (Main) 和主窗口控制器 |
attack.core |
AttackService — 串联爆破、Gadget、加密、发送的编排层 |
attack.Encrypt |
AES-CBC / AES-GCM 加密;KeyGenerator 生成新密钥 |
attack.deser.payloads |
CommonsBeanutils gadget 链实现 |
attack.deser.echo |
各平台回显 Payload 生成(Tomcat/Spring/DFS/Reverse/NoEcho) |
attack.deser.plugins |
内存马注入(InjectMemTool)、密钥探测(KeyEcho) |
attack.deser.frame |
Shiro cookie 序列化/加密封装 |
attack.deser.util |
Gadgets(TemplatesImpl 构造)、反射工具、JavaVersion |
attack.utils |
HTTP 请求(Hutool)、AES 工具、控制台输出 |
attack.entity |
ControllersFactory(JavaFX 控制器注册表)、RequestInfo |
org.apache.shiro.* |
内嵌 Shiro 加密源码(AesCipherService 等),便于定制 |
lib/目录下的本地 JAR(commons-beanutils-1.8.3.jar等)通过pom.xml中systemPath引入,是 Gadget 链的实际攻击依赖,与常规 Maven 依赖分开管理assembly.xml配置将 test-scope 依赖也解包进 fat JAR- Allatori 混淆配置已存在但在
pom.xml中被注释,发布时可按需启用