java-deserialization-methodology

$npx mdskill add wgpsec/AboutSecurity/java-deserialization-methodology

Detect and exploit Java deserialization vulnerabilities in web applications.

  • Identifies RCE risks in Tomcat, Spring, and middleware via magic bytes or headers.
  • Integrates ysoserial, Fastjson, Jackson, and JNDI payload generators.
  • Analyzes request content, cookies, and ports to prioritize attack vectors.
  • Executes gadget chains and returns exploit payloads or CVE references.

SKILL.md

.github/skills/java-deserialization-methodologyView on GitHub ↗
---
name: java-deserialization-methodology
description: "Java 反序列化漏洞检测与利用。当目标是 Java 应用(Tomcat/Spring/WebLogic/JBoss/Jenkins)、发现 rO0AB/aced0005 开头的 Base64 数据、HTTP 请求中有 application/x-java-serialized-object Content-Type、或存在 T3/IIOP/RMI/JNDI 协议端口时使用。覆盖 ysoserial gadget chain、JNDI 注入、Fastjson/Jackson 反序列化、Shiro rememberMe、常见中间件 CVE 利用"
metadata:
  tags: "java,deserialization,反序列化,ysoserial,jndi,rmi,ldap,fastjson,jackson,shiro,weblogic,jboss,jenkins,log4j,gadget,rce"
  category: "exploit"
---

# Java 反序列化漏洞方法论

Java 反序列化是 Java 生态中最危险的漏洞类之一——一旦成功通常直接 RCE。

## ⛔ 深入参考(必读)

- 需要 ysoserial gadget chain 优先级表、URLDNS 检测、payload 构造 → [references/ysoserial-gadgets.md](references/ysoserial-gadgets.md)
- 需要 JNDI 注入、Fastjson 版本 payload、Shiro/WebLogic/JBoss/Jenkins 专项 → [references/jndi-fastjson.md](references/jndi-fastjson.md)

---

## Phase 1: 识别 Java 反序列化入口

### 1.1 原生 Java 序列化数据(魔术字节)
- 二进制:`\xac\xed\x00\x05`(hex: `aced0005`)
- Base64 编码后:以 `rO0AB` 开头
- Gzip 压缩后再 Base64:以 `H4sIAAAA` 开头

**检查位置**:Cookie(`rememberMe`/`VIEWSTATE`)、POST Body、自定义 Header、WebSocket、RMI/T3/IIOP 协议端口

### 1.2 JSON 反序列化(Fastjson/Jackson)
- Fastjson:JSON 中含 `@type` 字段 → [references/jndi-fastjson.md](references/jndi-fastjson.md)
- Jackson:启用了 `DefaultTyping` → JSON 中含类名数组 `["com.xxx.Class", {...}]`
- 识别:发送畸形 JSON 观察错误堆栈中的库名

### 1.3 特定中间件端口

| 端口 | 服务 | 漏洞方向 |
|------|------|----------|
| 7001/7002 | WebLogic | T3/IIOP 反序列化 |
| 8009 | AJP (Tomcat) | GhostCat (CVE-2020-1938) |
| 1099 | RMI Registry | RMI 反序列化 |
| 1090/8500 | JBoss JMX | JMXInvokerServlet |
| 50000 | Jenkins | Jenkins CLI 反序列化 |

## Phase 2: 利用决策树

```
发现序列化入口
├─ 原生序列化 (rO0AB/aced0005)?
│   ├─ 先 URLDNS 确认漏洞存在 → [references/ysoserial-gadgets.md](references/ysoserial-gadgets.md)
│   └─ 逐个尝试 CC1-7 → CommonsBeanutils → Spring → Groovy
├─ Fastjson (@type 字段)?
│   └─ 识别版本 → 选择对应 payload → [references/jndi-fastjson.md](references/jndi-fastjson.md)
├─ Shiro (rememberMe=deleteMe)?
│   └─ 默认密钥 kPH+bIxk5D2deZiIxcaaaA== → [references/jndi-fastjson.md](references/jndi-fastjson.md)
└─ Log4j (Java 应用 + 用户输入)?
    └─ ${jndi:ldap://...} → [references/jndi-fastjson.md](references/jndi-fastjson.md)
```

## 注意事项
- **先用 URLDNS 检测**,确认漏洞存在后再尝试命令执行 gadget
- ysoserial 的 `Runtime.exec()` 不支持管道/重定向,需要 Base64 编码命令
- Java 版本影响 JNDI 利用方式(JDK < 8u191 最简单,8u191+ 需本地 Gadget)
- 多个 gadget chain 逐一尝试,不同 classpath 环境适用不同 gadget

More from wgpsec/AboutSecurity

SkillDescription
401-403-bypass401/403 访问拒绝绕过方法论。当遇到管理后台、API 端点返回 401/403 Forbidden 时使用。覆盖路径操纵、HTTP 方法篡改、Header 注入、协议降级、组合攻击
ad-acl-abuseActive Directory ACL 滥用攻击方法论。当 BloodHound 发现 GenericAll/WriteDACL/WriteOwner/GenericWrite/ForceChangePassword 等危险 ACE 时使用。覆盖 ACE 枚举、权限滥用链、Shadow Credentials、RBCD 攻击
ad-delegation-attackKerberos 委派攻击(非约束/约束/RBCD)。当 BloodHound 发现委派配置、或已获取有 SPN 的服务账号/机器账号控制权时使用。通过 S4U 协议滥用可实现跨服务模拟任意用户,常用于域内权限提升和横向移动。
ad-domain-attackActive Directory 域环境攻击全链路。当目标主机在域环境中(systeminfo 显示 Domain 非 WORKGROUP)、发现 88/389/636 端口、或获取到域用户凭据时使用。覆盖域信息收集、用户枚举、Kerberoasting、AS-REP Roasting、委派攻击、ACL 滥用、DCSync、Golden/Silver Ticket
ad-persistenceAD 域环境持久化技术。当已获取域管/本地管理员权限、需要建立持久访问以确保重启或密码更改后仍能回到目标环境时使用。覆盖主机级持久化(计划任务/注册表Run/COM劫持/WMI事件订阅/Windows服务/启动文件夹)、域级持久化(Golden Ticket/Silver Ticket/Skeleton Key/DSRM/AdminSDHolder)、DCShadow/GoldenGMSA高级技术、清理命令与检测规避
ad-trust-attack域信任关系攻击。当目标存在多域/多林环境时使用。包含父子域提权(Golden Ticket + ExtraSid)、跨林攻击(SID History/MSSQL Trust Links)、单向信任利用。已获取子域 Domain Admin 或发现信任关系时优先加载。
adcs-certipy-attackActive Directory Certificate Services (ADCS) 证书攻击。当发现域内有 CA 服务器、ADCS Web Enrollment、证书模板配置错误时使用。覆盖 ESC1-ESC11 所有证书滥用路径、Certipy 工具链、证书伪造、NTLM 中继到 ADCS。发现 ADCS/CA/证书/certsrv 相关内容时一定要使用此技能
adinfo-enum使用 Adinfo 进行 Active Directory 信息收集。当获得域用户凭据后需要快速收集域环境信息时使用。Adinfo 是一个快速 AD 信息收集工具,一条命令输出域控列表、域管用户、信任关系、GPO、SPN、委派配置等关键信息——比手动 LDAP 查询快得多。发现域环境后第一步信息收集使用此技能
agent-security|
ai-data-security|