面向 100MB+ 反编译 Java 源码包的离线审计利器
零外部依赖、纯 Python 标准库实现、不调用 AI 大模型
当面对一个解压后 100MB+ 的反编译 Java 源码包时(如 Spring Boot fat jar 解压产物),数万个 .java 文件混在一起,你如何快速判断:
- 哪些是 项目的自身代码(需要重点审计的)?
- 哪些是 第三方库(可以排除的)?
- 服务启动后有哪些 API 接口和路由?
- 存在哪些 已知 CVE 漏洞?
- 配置文件中隐藏了什么安全风险?
- 攻击者可能通过什么利用链入侵?
本工具就是为解决这些问题而生。
| 能力 | 说明 |
|---|---|
| 项目代码识别 | 基于 100+ 已知库前缀 + 包组聚合算法,从数万文件中秒级分离项目代码 vs 第三方库 |
| API 端点清单 | 源码注解提取 + 配置文件推演 Actuator / Gateway / Nacos / 路由端点,含完整 URL |
| 运行时组件映射 | 自动识别 25+ Spring Boot / Cloud 组件类型(Controller/Filter/Gateway 等) |
| 攻击面分析 | 标记对外暴露的 Web 端点、入口点,标注风险等级 |
| CVE 漏洞匹配 | 内置 30+ Java 生态常见 CVE 数据库,自动从 jar/pom 匹配版本 |
| 配置安全分析 | 检测 Actuator 暴露、Gateway 端点、未授权 Nacos 等配置风险 |
| 攻击利用链分析 | 评估 7 大攻击链的可利用性,含详细利用步骤和攻击方式 |
| Markdown 报告 | 10 章中文审计报告,含目录导航、完整 URL、风险分级 |
java_audit_tool/
├── java_audit.py # 主入口(编排层,~250 行)
└── lib/
├── models.py # 数据模型(AuditReport 等 12 个 dataclass)
├── rules.py # 规则定义(库前缀/CVE DB/组件模式/Actuator端点)
├── scanner.py # 文件扫描模块
├── parser.py # Java 源码解析模块(正则驱动,不依赖 javalang)
├── classifier.py # 包分类模块(项目 vs 库)
├── analyzer.py # 安全分析模块(攻击面/组件/配置)
├── cve_matcher.py # CVE 版本匹配模块
├── exploit_chain.py # 攻击利用链分析引擎
└── reporter.py # 报告生成(Markdown / 终端 / JSON)
设计原则:工程化 · 模块化 · 低耦合 —— 每个模块只依赖 models(数据结构)和 rules(配置数据),相互之间无直接调用。
- Python 3.8+
- 零外部依赖(纯标准库)
# 终端摘要输出
python3 java_audit.py /path/to/sources
# 生成中文 Markdown 报告(推荐)
python3 java_audit.py /path/to/sources -o report.md
# 带配置目录(YAML 分析)
python3 java_audit.py /path/to/sources --config-dir /path/to/config -o report.md
# JSON 格式(供程序化处理)
python3 java_audit.py /path/to/sources -o report.json
# 只看项目自身代码
python3 java_audit.py /path/to/sources --project-only
# 只看攻击面速览
python3 java_audit.py /path/to/sources --attack-surface
# 大文件加速(16 线程并行)
python3 java_audit.py /path/to/sources --workers 16场景 1: 反编译 Spring Boot fat jar
unzip app.jar -d output/ → java_audit.py output/
场景 2: 微服务源码审计
java_audit.py /path/to/microservice/ --config-dir /path/to/config/
场景 3: CTF 竞赛 Java 题分析
java_audit.py /path/to/ctf/ --attack-surface
场景 4: 攻防演练前资产梳理
java_audit.py /path/to/target/ -o pre_attack_report.md
生成的 Markdown 报告包含 10 个章节:
## 目录
- [一、项目结构概览](#sec-overview) — 2 文件 | 46 库
- [二、API 接口清单](#sec-api) — 39 个接口
- [三、运行时组件映射](#sec-components)
- [四、攻击面分析](#sec-attack-surface) — 1 个暴露组件
- [五、高风险代码模式](#sec-high-risk)
- [六、已知 CVE 漏洞匹配](#sec-cve) — 2 个 CVE
- [七、配置安全分析](#sec-config) — 3 项风险
- [八、攻击利用链分析](#sec-exploit-chains) — 2 条可利用
- [九、攻击方式详细分析](#sec-exploit-methods)
- [十、审计总结](#sec-summary)
API 接口清单示例:
| HTTP 方法 | 完整 URL | 端点说明 | 风险 |
|---|---|---|---|
GET |
http://localhost:18888/actuator/env |
环境变量与系统属性(含密码) | CRITICAL |
GET |
http://localhost:18888/actuator/heapdump |
JVM 堆内存转储 | CRITICAL |
POST |
http://localhost:18888/actuator/gateway/refresh |
刷新路由缓存 | CRITICAL |
GET |
http://localhost:18888/example |
GatewayRoute 转发 | MEDIUM |
| 扫描规模 | 文件数 | 耗时 | 内存 |
|---|---|---|---|
| 76.3 MB | 18,625 | 2.4 秒 | ~200 MB |
| 200 MB+ | 50,000+ | ~8 秒 | ~500 MB |
测试环境:macOS, Python 3.14, 8 线程并行解析
工具内置的规则均可手动扩展,无需改代码:
编辑 lib/rules.py → KNOWN_LIBRARY_PREFIXES:
"com.example.mylib": "My Library",编辑 lib/rules.py → EMBEDDED_CVE_DB:
("my-component", "<1.5.0", "CVE-2024-XXXXX", "漏洞描述", "CRITICAL"),编辑 lib/rules.py → EXPLOIT_CHAIN_RULES,按照现有格式添加先决条件、利用步骤和攻击方式。
MIT License — 可自由使用、修改和分发。
Diger Young (Diger_Young)
Java审计 Java代码审计 源码审计 安全审计工具 Spring Boot审计 Actuator安全 CVE检测 反编译分析 攻击面分析 漏洞扫描 CTF工具 Java安全 Spring Cloud Gateway Nacos安全 代码安全 漏洞挖掘 白盒审计 零依赖 离线审计