2026-08-30
java代码审计
00
请注意,本文编写于 77 天前,最后修改于 77 天前,其中某些信息可能已经过时。

目录

如果想要快速看,就直接看 4.2 在IDEA中配置Tomcat
一、JDK安装与环境配置
1.1 下载JDK
1.2 环境变量配置(Windows)
1.3 多JDK版本切换(进阶)
二、IntelliJ IDEA 安装与基础使用
2.1 下载与安装
2.2 首次启动配置
2.3 IDEA界面速览
三、Maven配置(Java项目的"包管理器")
3.1 下载与配置Maven
3.2 配置本地仓库(加速下载)
3.3 在IDEA中配置Maven
四、Tomcat配置(运行Java Web项目)
4.1 下载Tomcat
4.2 在IDEA中配置Tomcat
五、Git基础(下载漏洞环境)
5.1 安装Git
5.2 基础命令(够用就行)
六、代码审计必备插件
6.1 安全审计类
6.2 效率提升类
七、Debug调试技巧(审计核心技能)
7.1 调试基础操作
7.2 断点的种类与使用
7.3 调试窗口详解
7.4 审计调试实战示例
7.5 远程调试(进阶)
八、推荐的项目导入流程
九、环境检查清单

环境搭好,IDEA的调试技巧

如果想要快速看,就直接看 4.2 在IDEA中配置Tomcat


一、JDK安装与环境配置

1.1 下载JDK

Java代码审计建议同时准备两个版本:

版本用途下载地址
JDK 8运行老旧项目、反序列化漏洞环境(很多漏洞只存在于JDK8)Oracle官网或OpenJDK
JDK 11/17运行现代SpringBoot项目OpenJDK

建议先装JDK 8,因为小迪安全的文档里很多漏洞环境都是基于JDK 8的。

下载建议:直接去 Adoptium(原AdoptOpenJDK)下载,免费且无需Oracle账号。

1.2 环境变量配置(Windows)

安装完成后,配置系统环境变量:

1. 右键"此电脑" → 属性 → 高级系统设置 → 环境变量 2. 在"系统变量"中新建: 变量名:JAVA_HOME 变量值:C:\Program Files\Eclipse Adoptium\jdk-8.0.xxx(你的安装路径) 3. 编辑Path变量,新增两条: %JAVA_HOME%\bin %JAVA_HOME%\jre\bin 4. 新建CLASSPATH变量: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

验证:打开CMD,输入:

bash
java -version javac -version

能看到版本号即成功。

1.3 多JDK版本切换(进阶)

审计时经常需要在JDK 8和11之间切换,建议用脚本或IDEA自带的JDK管理功能,不必反复改环境变量。

IDEA中切换JDK:File → Project Structure → SDKs → 添加多个JDK路径 → 在Project/Module中随时切换。


二、IntelliJ IDEA 安装与基础使用

2.1 下载与安装

下载地址:https://www.jetbrains.com/idea/download/

版本说明
Ultimate(旗舰版)功能最全,支持Spring、JavaEE、数据库工具,建议用这个
Community(社区版)免费,但缺少Spring和Web支持,不适合审计

学生/教育优惠:用.edu邮箱可申请免费正版授权。没有的话,官网有30天试用。

安装时的勾选建议:

  • Add "Open Folder as Project"(右键快速打开项目)
  • Add to PATH(命令行启动)
  • Create Associations → .java(可选)

2.2 首次启动配置

打开IDEA后,按以下步骤配置:

1. 主题与字体

File → Settings → Appearance & Behavior → Appearance → Theme: Darcula(暗色主题,护眼) File → Settings → Editor → Font → Font: JetBrains Mono(专为代码设计的等宽字体) → Size: 14-16(看个人视力)

2. 编码设置(极其重要,防止中文乱码)

File → Settings → Editor → File Encodings → Global Encoding: UTF-8 → Project Encoding: UTF-8 → Default encoding for properties files: UTF-8 → 勾选 Transparent native-to-ascii conversion

3. 自动导入

File → Settings → Editor → General → Auto Import → 勾选 Add unambiguous imports on the fly(自动导包) → 勾选 Optimize imports on the fly(自动删无用导包)

4. 代码折叠(审计时看代码更清爽)

File → Settings → Editor → General → Code Folding → 取消勾选 Imports(不要折叠导入语句,审计时要看有没有引入危险类)

2.3 IDEA界面速览

第一次打开项目,你需要认识这几个区域:

┌─────────────────────────────────────────────────────┐ │ 菜单栏 (File/Edit/View...) │ ├──────────┬────────────────────────────┬─────────────┤ │ │ │ │ │ 项目结构 │ 代码编辑区 │ 结构/大纲 │ │ (Project) │ (Editor) │ (Structure) │ │ -src │ │ │ │ -pom.xml│ │ │ │ │ │ │ ├──────────┴────────────────────────────┴─────────────┤ │ 工具窗口 (Terminal/Maven/Database/Run...) │ └─────────────────────────────────────────────────────┘

常用窗口开关:

  • Alt + 1:打开/关闭项目结构窗口
  • Alt + 4:打开/关闭Run控制台
  • Alt + F12:打开/关闭Terminal(命令行)
  • Ctrl + Shift + A:万能搜索(找不到功能时按这个)

三、Maven配置(Java项目的"包管理器")

Maven是Java项目的依赖管理工具,类似于Python的pip、Node的npm。审计时你看到pom.xml,就是Maven的配置文件,里面列出了项目用到了哪些第三方组件(比如FastJson、SpringBoot的版本号)。

3.1 下载与配置Maven

1. 下载 地址:https://maven.apache.org/download.cgi 下载 apache-maven-3.9.x-bin.zip,解压到无中文路径的目录。

2. 配置环境变量

新建系统变量 MAVEN_HOME = D:\apache-maven-3.9.x 编辑Path,添加 %MAVEN_HOME%\bin

3. 验证

bash
mvn -v

3.2 配置本地仓库(加速下载)

Maven默认从中央仓库下载依赖,速度极慢。需要配置阿里云镜像。

编辑 conf/settings.xml(在Maven安装目录下):

xml
<settings> <!-- 配置本地仓库路径(所有下载的jar包会存在这里) --> <localRepository>D:/maven-repo</localRepository> <mirrors> <!-- 阿里云镜像 --> <mirror> <id>aliyunmaven</id> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> </settings>

3.3 在IDEA中配置Maven

File → Settings → Build, Execution, Deployment → Build Tools → Maven → Maven home path: 选择你的Maven安装目录 → User settings file: 选择 conf/settings.xml → Local repository: 选择你的本地仓库目录

关键概念:当你打开一个审计项目时,IDEA会自动读取pom.xml,然后下载所有依赖。右下角会出现进度条,等它跑完再开始审计,否则代码里会有很多红色报错(类找不到)。


四、Tomcat配置(运行Java Web项目)

Tomcat是Java Web应用的运行容器。审计时你需要把目标项目跑起来,才能动态调试。

4.1 下载Tomcat

地址:https://tomcat.apache.org/download-90.cgi 下载 zip 格式,解压即可(绿色软件,无需安装)。

版本选择:

  • 一般项目用 Tomcat 9
  • 很老的项目用 Tomcat 8.5

4.2 在IDEA中配置Tomcat

图片.png

然后这里根据小迪安全的默认都不选,进入项目 图片.png

点击运行,就启动了

图片.png

1. 打开你的Java Web项目 2. 点击右上角 "Add Configuration"(或 Run → Edit Configurations) 3. 点击 "+" → 选择 "Tomcat Server" → "Local" 4. 在Server标签页: - Application server: 点击Configure,选择Tomcat解压目录 - JRE: 选择你的JDK 8 - HTTP port: 8080(默认) 5. 在Deployment标签页: - 点击 "+" → Artifact → 选择 xxx:war exploded - Application context: /(或 /项目名) 6. 点击OK

启动:点击右上角的绿色三角按钮(或Shift+F10),看到控制台输出 Server startup in xxx ms 即成功。

访问:浏览器打开 http://localhost:8080/


五、Git基础(下载漏洞环境)

审计学习需要大量下载开源项目和漏洞环境,Git是必备技能。

5.1 安装Git

地址:https://git-scm.com/download/win 安装时一路Next即可。

5.2 基础命令(够用就行)

bash
# 克隆(下载)一个项目到本地 git clone https://github.com/xxx/xxx.git # 查看当前项目的状态 git status # 查看提交历史(审计时看漏洞修复记录很有用) git log --oneline # 切换到某个历史版本(复现漏洞时常用) git checkout <commit-id> # 切换回最新代码 git checkout main

审计中的应用场景:

  1. 在GitHub找到一个有漏洞的开源项目
  2. git clone 下载到本地
  3. 用IDEA打开,开始审计
  4. 发现漏洞后,git log 查看开发者是怎么修复的,对比学习

六、代码审计必备插件

IDEA插件能大幅提升审计效率,以下是必装清单:

6.1 安全审计类

插件名作用安装方式
Find Security Bugs静态安全分析,自动标记潜在的SQL注入、XSS、反序列化等漏洞Settings → Plugins → Marketplace搜索
.env files support高亮显示.env配置文件,方便找硬编码密钥Plugins Marketplace
String Manipulation快速解码/编码(Base64、URL、Hex),审计时处理Payload很方便Plugins Marketplace

Find Security Bugs 使用: 安装后,右键项目 → Find Security Bugs → Analyze Security,会在底部Analyze窗口显示潜在漏洞。

⚠️ 注意:插件只是辅助,不能替代人工审计,会有误报和漏报。

6.2 效率提升类

插件名作用
Rainbow Brackets彩虹括号,嵌套代码一眼看清层级
Key Promoter X提示你当前操作用快捷键怎么做,帮你记住快捷键
Chinese (Simplified) Language Pack中文语言包(新手可选,但建议用英文,审计文档都是英文)
Maven Helper可视化解决Maven依赖冲突

七、Debug调试技巧(审计核心技能)

这是本文最重要的部分。代码审计不是"看代码猜漏洞",而是"打断点 → 跟踪数据流 → 确认漏洞"。

7.1 调试基础操作

先记住这5个快捷键,审计时90%的时间都在用它们:

快捷键名称作用
F7Step Into步入:进入当前行调用的方法内部
F8Step Over步过:执行当前行,不进入方法内部
F9Resume继续:跑到下一个断点,或跑完程序
Shift+F8Step Out步出:从当前方法跳出,回到调用处
Alt+F9Run to Cursor运行到光标:直接运行到鼠标所在行

7.2 断点的种类与使用

1. 普通断点 在代码行号左侧单击,出现红色圆点。程序运行到这里会暂停。

2. 条件断点(极其重要) 右键红色断点,输入条件表达式。只有当条件满足时才会暂停。

应用场景:某个方法被调用100次,你只想看参数等于"admin"的那一次 条件:username.equals("admin")

3. 异常断点

Run → View Breakpoints (Ctrl+Shift+F8) → 点击 "+" → Java Exception Breakpoints 输入:java.lang.RuntimeException

作用:当程序抛出指定异常时自动暂停,非常适合找反序列化漏洞的触发点。

7.3 调试窗口详解

Debug模式下,下方会出现Debug工具窗口,重点关注这几个区域:

┌────────────────────────────────────────────┐ │ Frames(调用栈) │ │ - main() │ │ - doFilter() │ │ - processRequest() ← 当前在这里 │ │ - executeSQL() │ ├────────────────────────────────────────────┤ │ Variables(变量) │ │ - username = "admin' or '1'='1" │ │ - sql = "select * from user where..." │ ├────────────────────────────────────────────┤ │ Watches(监视表达式) │ │ - username.contains("or") → true │ └────────────────────────────────────────────┘

Frames(调用栈):显示当前代码是怎么被一层层调用过来的。审计时从这里倒推漏洞入口。

Variables(变量):查看当前作用域内的所有变量值。审计时确认用户输入是否到达了危险函数。

Watches:添加自定义表达式,实时监控某个值的变化。

7.4 审计调试实战示例

假设你在审计一个登录功能,怀疑有SQL注入:

java
// UserDao.java public User login(String username, String password) { String sql = "select * from user where username = '" + username + "'"; // 你在这里打个断点 Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); ... }

调试步骤:

  1. 在 String sql = ... 这一行打普通断点
  2. 在浏览器访问登录页面,输入 admin' or '1'='1,点击登录
  3. IDEA自动暂停,查看Variables面板:
    • username = "admin' or '1'='1"(用户输入,可控)
    • sql = "select * from user where username = 'admin' or '1'='1'"(已拼接进SQL)
  4. 按 F8 步过,看到 executeQuery(sql) 执行了这条恶意SQL
  5. 结论:确认存在SQL注入

7.5 远程调试(进阶)

有时候目标部署在远程服务器上,你需要连接过去调试:

1. 远程启动Java时加参数: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 2. IDEA中:Run → Edit Configurations → "+" → Remote JVM Debug - Host: 远程IP - Port: 5005 3. 点击Debug按钮连接

八、推荐的项目导入流程

拿到一个审计目标(比如小迪安全提供的源码),按这个顺序操作:

1. 解压项目,观察根目录: - 有pom.xml → Maven项目 - 有build.gradle → Gradle项目 - 有src文件夹但没有pom.xml → 可能是普通Java项目 2. IDEA中:File → Open(或 New → Project from Existing Sources) 选择项目根目录 3. 如果是Maven项目: - 右下角弹出"Maven projects need to be imported",点击Import Changes - 等待依赖下载完成(看底部进度条) 4. 配置Project Structure: File → Project Structure (Ctrl+Alt+Shift+S) - Project SDK: 选择合适的JDK - Project language level: 与SDK对应(如JDK 8选8) 5. 配置运行环境: - Web项目 → 配置Tomcat(见第四节) - SpringBoot项目 → 直接运行主类(带@SpringBootApplication注解的类) - 普通Java项目 → 找到main方法,右键Run 6. 验证运行成功: - 浏览器能访问 - 控制台没有报错(或只有不影响的警告)

九、环境检查清单

配完环境后,用下面这个清单自检:

  • java -version 能显示JDK 8版本号
  • mvn -v 能显示Maven版本号
  • IDEA能正常打开,界面无乱码
  • IDEA中配置了Maven路径和阿里云镜像
  • 能创建一个Maven项目并运行Hello World
  • 能配置Tomcat并运行一个Java Web项目
  • 能在代码中打断点,用F7/F8/F9进行调试
  • 安装了Find Security Bugs插件
  • 能用git clone下载GitHub项目

附:常用快捷键速查表(建议打印贴显示器旁)

功能Windows/LinuxMac
全局搜索Shift+ShiftShift+Shift
查找类Ctrl+NCmd+O
查找文件Ctrl+Shift+NCmd+Shift+O
查找方法Ctrl+Alt+Shift+NCmd+Alt+O
查看定义Ctrl+BCmd+B
查看调用链Ctrl+Alt+HCmd+Alt+H
格式化代码Ctrl+Alt+LCmd+Alt+L
重命名Shift+F6Shift+F6
surround with try-catchCtrl+Alt+TCmd+Alt+T
最近打开的文件Ctrl+ECmd+E