# Java Exploit Chain

Java 白盒审计漏洞利用链组装。当需要将 Java 审计中发现的多个漏洞组合为完整攻击路径、 或需要评估 Maven/Gradle 依赖中的已知 CVE...

- Repository: https://github.com/wgpsec/AboutSecurity (1833 stars)
- Category: Security
- License: see repository
- Last updated: 2026-10-24
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add wgpsec/AboutSecurity --skill java-exploit-chain -g -a claude-code -y`
Codex: `npx skills add wgpsec/AboutSecurity --skill java-exploit-chain -g -a codex -y`
Cursor: `npx skills add wgpsec/AboutSecurity --skill java-exploit-chain -g -a cursor -y`
Gemini CLI: `npx skills add wgpsec/AboutSecurity --skill java-exploit-chain -g -a gemini-cli -y`

## Description

Java 白盒审计漏洞利用链组装。当需要将 Java 审计中发现的多个漏洞组合为完整攻击路径、 或需要评估 Maven/Gradle 依赖中的已知 CVE 对项目的实际影响时触发。 核心: 单个中低危漏洞通过组合可升级为高危/Critical 利用链。 覆盖: 信息泄露→认证绕过→RCE 的典型链路、Gadget Chain 分析方法(ysoserial/marshalsec)、 Maven 依赖 CVE 审计与实际可利用性评估。

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# 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 种）

The rest: https://github.com/wgpsec/AboutSecurity/blob/HEAD/skills/code-audit/java/java-exploit-chain/SKILL.md
