java-exploit-chain

$npx mdskill add wgpsec/AboutSecurity/java-exploit-chain

Assemble Java vulnerabilities into high-risk exploit chains.

  • Combines low-severity flaws into critical attack paths.
  • Analyzes source code, dependency trees, and CVE databases.
  • Validates causal links and data flow between vulnerabilities.
  • Outputs feasibility scores and evidence-backed attack steps.

SKILL.md

.github/skills/java-exploit-chainView on GitHub ↗
---
name: java-exploit-chain
description: |
  Java 白盒审计漏洞利用链组装。当需要将 Java 审计中发现的多个漏洞组合为完整攻击路径、
  或需要评估 Maven/Gradle 依赖中的已知 CVE 对项目的实际影响时触发。
  核心: 单个中低危漏洞通过组合可升级为高危/Critical 利用链。
  覆盖: 信息泄露→认证绕过→RCE 的典型链路、Gadget Chain 分析方法(ysoserial/marshalsec)、
  Maven 依赖 CVE 审计与实际可利用性评估。
metadata:
  tags: exploit chain, gadget chain, ysoserial, marshalsec, maven, dependency audit, cve, 利用链, 漏洞组合, 攻击路径, java source audit
  category: code-audit
---

# Java 漏洞利用链组装
白盒利用链组装 = 在源码层面验证多漏洞串联的可行性。工作范围是: 从已发现的单点漏洞出发,分析它们之间的因果关系和数据流衔接,评估组合后的实际危害等级。构造远程 exploit、发送 payload、绕过 WAF 等运行时黑盒利用技术属于对应 exploit skill 范畴。

## 深入参考

- 利用链方法论 / 依赖审计表 / Gadget 分析 / 5 种典型链路详解 → [references/chain-patterns.md](references/chain-patterns.md)

---

## 利用链组装原则

**三阶段模型**: 信息收集(INFO)→ 权限获取(AUTH)→ 代码执行(RCE)

每条利用链按三阶段拆解,每个阶段的输出必须满足下一阶段的前置条件。任何一个环节断裂则链路不成立。

**评分规则**: 链整体严重度 = 最终效果严重度 x 链路可行性系数(0.6-1.0)
- 全路径可行、无额外条件: 系数 1.0
- 需特定配置或低概率条件: 系数 0.8
- 强环境依赖(特定 JDK 版本、关闭 SecurityManager 等): 系数 0.6

**证据要求**: 每个环节必须有 EVID 证据支撑(代码位置、配置项、数据流截断点),不可凭推测补全链路。

## Maven/Gradle 依赖 CVE 审计

**依赖清单提取**:
- Maven: `mvn dependency:tree -DoutputType=dot` 生成完整依赖图
- Gradle: `gradle dependencies --configuration runtimeClasspath` 列出运行时依赖
- 自动化: OWASP Dependency-Check 插件集成到 CI,生成 HTML/JSON 报告

**NVD/GitHub Advisory 交叉比对**: 使用 NVD API 或 GitHub Advisory Database 查询依赖的 CPE 匹配 CVE。

**关键判断 — 有 CVE 不等于可利用**:
1. **版本匹配**: 确认项目使用的版本确实在受影响范围内(注意传递依赖可能引入不同版本)
2. **代码路径可达**: 漏洞触发代码是否在项目的实际调用链中(依赖了库但未使用漏洞函数则不可利用)
3. **攻击面暴露**: 漏洞入口是否对外可达(内部工具类 vs 面向用户的 API)

**高频危险依赖**: commons-collections 3.x、fastjson <1.2.83、log4j-core 2.0-2.17.0、shiro <1.2.5、struts2 2.0-2.5.30、spring-cloud-gateway <3.1.1、jackson-databind <2.13.4

## Gadget Chain 分析方法

- **classpath 扫描**: 从 `pom.xml`/`build.gradle` 及 `WEB-INF/lib` 确认目标环境中存在哪些可用 Gadget 库及版本
- **ysoserial payload 选择**: 根据 classpath 依赖匹配可用链(CommonsCollections1-7、BeanShell、Groovy、Spring、Hibernate 等),选择触发效果(命令执行 / JNDI lookup / 文件写入)
- **marshalsec 用于 JNDI 利用**: 搭建恶意 LDAP/RMI 服务 → 目标 JNDI lookup 触发远程类加载 → RCE;注意 JDK 版本限制
- **自定义 Gadget 发掘**: 当标准链不可用时,在项目代码中搜索 `readObject`/`readResolve`/`readExternal` 重写,追踪其中的危险操作(反射调用、文件 I/O、Runtime.exec、JNDI lookup),尝试构造项目特有的 Gadget Chain

## 典型利用链模式(5 种)

| 编号 | 链路 | 最终效果 | 典型系数 |
|------|------|----------|----------|
| 1 | Actuator 信息泄露 → 密钥提取 → 伪造 JWT → 管理员越权 → RCE | Critical | 0.8 |
| 2 | Shiro RememberMe 默认密钥 → 反序列化 → RCE | Critical | 1.0 |
| 3 | 文件读取(路径穿越) → 配置泄露(DB 凭据) → SQL 注入写文件 → WebShell | Critical | 0.8 |
| 4 | SSRF → 内网服务探测 → 未授权 Redis → 写 crontab → 反弹 Shell | High | 0.6 |
| 5 | SpEL 注入 → RCE(单点链路,条件苛刻需验证 EvaluationContext 类型) | Critical | 0.8 |

每条链的前置条件、完整步骤、证据要求和降级方案详见 [chain-patterns.md](references/chain-patterns.md)。

## 链路可行性验证清单

- [ ] 每一步的前置条件已由上一步的输出满足(数据流可衔接)
- [ ] 网络可达性已确认(防火墙/ACL/安全组不阻断链路中的网络请求)
- [ ] 运行时环境约束已评估(JDK 版本、SecurityManager 是否启用、容器沙箱限制)
- [ ] JDK 版本对 JNDI 远程类加载的限制已考虑(8u121+ RMI / 8u191+ LDAP)
- [ ] 链路中使用的 Gadget Chain 在目标 classpath 中确实存在且版本匹配
- [ ] 降级方案已标注: 某环节不可行时是否存在替代路径(如 RMI 不可用时切换 LDAP/本地 Gadget)
- [ ] 链整体评分已使用 `最终效果严重度 x 可行性系数` 公式计算
- [ ] 所有环节的 EVID 证据已收集完整,无推测性补全
- [ ] 依赖 CVE 审计已完成三步验证(版本匹配 → 代码路径可达 → 攻击面暴露)

## 检测清单

- [ ] P4 阶段发现的所有漏洞已按攻击阶段(INFO/AUTH/EXEC)分类
- [ ] 漏洞间的因果关系和数据流衔接已分析
- [ ] Maven/Gradle 依赖树已提取并与 NVD/GitHub Advisory 交叉比对
- [ ] 高频危险依赖的版本范围已逐一核查
- [ ] classpath 中可用 Gadget Chain 已扫描确认
- [ ] 所有可行利用链已按模板记录(前置条件 / 步骤 / EVID / 评分)
- [ ] 每条链的可行性系数已根据环境约束合理赋值
- [ ] 不可行链路已标注原因和降级方案
- [ ] 严重度评分与 pipeline 一致

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|