Skip to content

fewftybet/java-audit-tool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🔍 Java 源码离线审计工具 (Java Source Audit Tool)

Version Python License Zero Dependencies

面向 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.pyKNOWN_LIBRARY_PREFIXES

"com.example.mylib": "My Library",

添加新的 CVE

编辑 lib/rules.pyEMBEDDED_CVE_DB

("my-component", "<1.5.0", "CVE-2024-XXXXX", "漏洞描述", "CRITICAL"),

添加新的攻击链

编辑 lib/rules.pyEXPLOIT_CHAIN_RULES,按照现有格式添加先决条件、利用步骤和攻击方式。


📄 License

MIT License — 可自由使用、修改和分发。


👤 作者

Diger Young (Diger_Young)


🔗 关键词

Java审计 Java代码审计 源码审计 安全审计工具 Spring Boot审计 Actuator安全 CVE检测 反编译分析 攻击面分析 漏洞扫描 CTF工具 Java安全 Spring Cloud Gateway Nacos安全 代码安全 漏洞挖掘 白盒审计 零依赖 离线审计

About

Java 源码离线审计工具 — 面向 100MB+ 反编译 Spring Boot 源码包的自动化安全审计。零依赖纯 Python,项目代码识别 | API 端点提取 | CVE 漏洞匹配 | 攻击利用链分析 | 10 章中文 Markdown 报告。适用于安全测试、CTF、代码审查、白盒审计。

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages