原文首发在:奇安信攻防社区
https://forum.butian.net/ai_security/98
AI代码审计不仅能节省时间,还能发现一些人工容易忽略的漏洞。不过需要注意的是,AI有时候会产生幻觉,所以必须实际验证才能确认漏洞是否真实存在。
不花一分钱,用AI挖洞!三款免费工具横向对比,看看谁更强?
前言

AI代码审计不仅能节省时间,还能发现一些人工容易忽略的漏洞。不过需要注意的是,AI有时候会产生幻觉,所以必须实际验证才能确认漏洞是否真实存在。
费用说明:三款工具全部免费!
一、为什么用AI做代码审计?
传统代码审计就像大海捞针——逐行阅读源码,眼睛看花了还容易漏掉关键点。
AI可以:
- 快速理解代码逻辑,比人工快N倍
- 自动追踪数据流,不放过任何可疑点
- 识别危险函数调用,精准定位漏洞
- 深度规划分析,给出专业建议
需要注意的是:AI会产生幻觉,所以必须实际验证!

二、源代码环境采用
java语言
https://gitee.com/project_team/Tmall_demo
微信公众号代码审计解析
这个源代码环境的漏洞解析,在B站上也有视频教学。

三、AI代码审计执行框架
统一提示词

四、工具选型对比(全部免费!)
重点:以下三款工具全部免费使用,无需付费!

4.1 Yak MCP(免费)
| 优点 | 缺点 |
|
✅ 免费模型使用
|
❌ 速度较慢 |
| ✅ 无需复杂提示词 | ❌ 自定义模型配置有问题 |
| ✅ 可实时查看HTTP流量验证 | |
| ✅ 输入路径即可启动 | |
| ✅ 非常详细的审计过程 |
一句话总结:免费+验证能力强,能看到真实的HTTP请求,避免AI幻觉!
Yak操作界面:

Yak审计过程:

Yak深度规划:

Yak详细步骤:

Yak漏洞审计结果:

4.2 Trae IDE + 智能体(免费)
| 优点 | 缺点 |
|
✅ 免费使用
|
❌ 提示词字数上限6000 |
| ✅ 11个智能体分工协作 | ❌ 速度很慢 |
| ✅ GLM-5模型,分智能体缩减上下文 | |
| ✅ 可配置Skills工具库 | |
| ✅ 代码审计非常详细,几千行报告 |
一句话总结:免费+深度审计,报告详细,但速度慢!
Trae智能体架构:

Trae审计过程:

Trae审计进度:

4.3 MonkeyCode AI(免费)
| 优点 | 缺点 |
|
✅ 免费使用
|
❌ 技能只有这么点 |
| ✅ 直接远程github下载自动代码审计 | ❌ 不能加入自己的自定义skills |
| ✅ 不需要在本地保存任何东西 | ❌ 速度快可能意味着不深入 |
| ✅ 安全不会对自己电脑有影响 | |
| ✅ 自动修复代码自动推送到远程仓库 |
一句话总结:免费+快速扫描,适合开发,但不够深入!

MonkeyCode操作界面:

MonkeyCode执行过程:

MonkeyCode漏洞验证:

MonkeyCode自动修复:

五、Yak技能库配置
可以尝试制作几个yak的技能库,来提升效率。

Yak技能配置界面:

六、Trae智能体配置
6.1 智能体solo 模式分工
┌─────────────┐ ┌─────────────┐ ┌─────────────┐│ s1-s2 │ -> │ s3-s9 │ -> │ s10-s11 ││ 信息收集 │ │ 漏洞审计 │ │ 验证复现 │└─────────────┘ └─────────────┘ └─────────────┘
核心原则:先审计 → 再写脚本验证 → 最后写报告
6.2 Trae提示词
在当前项目进行代码审计,按顺序调用智能体s1到s11完成代码审计工作。## 执行顺序严格按照 s1 → s2 → s3 → s4 → s5 → s6 → s7 → s8 → s9 → s10 → s11 顺序执行。## 智能体职责- s1-s2: 信息收集阶段- s3-s9: 漏洞审计阶段 - s10-s11: 验证复现阶段## 报告要求1. 所有审计结果写入 `代码审计.md` 文件2. 每个阶段末尾必须标注:`*本阶段由 sX 智能体完成*`3. 每个漏洞必须提供完整的POC(Raw格式HTTP数据包、curl命令、实际测试结果)## 工具使用根据审计需要,灵活选择以下工具:**Skills工具**:- java-sql-audit、java-route-mapper、java-route-tracer、java-auth-audit、java-vuln-scanner- vuln-analysis-expert、logic-vulnerability-hunter- Penetration-Testing-Expert、wsl-pentest-suite**命令行工具**:- SQLMap、Nuclei、curl、httpx、fscan**验证工具**:- WebFetch、MCP浏览器工具## 注意事项- 根据项目实际情况灵活调整审计策略- 发现漏洞后必须实际验证,确保漏洞真实存在- 区分演示项目和真实漏洞,准确评估风险等级
缺点:提示词字数上限6000,有时会限制表达。
七、项目架构分析
7.1 技术架构图
┌─────────────────────────────────────────────────────────────────────────────┐│ 客户端层 (Client) ││ 浏览器 → JSP页面 + AJAX请求 │└─────────────────────────────────────────────────────────────────────────────┘ ↓┌─────────────────────────────────────────────────────────────────────────────┐│ Web层 (Spring MVC) ││ ┌─────────────────────────────────────────────────────────────────────┐ ││ │ Filter过滤器层 │ ││ │ AdminPermissionFilter (后台权限过滤 /admin/*) │ ││ └─────────────────────────────────────────────────────────────────────┘ ││ ↓ ││ ┌─────────────────────────────────────────────────────────────────────┐ ││ │ Controller控制器层 │ ││ │ ┌──────────────────┐ ┌──────────────────┐ │ ││ │ │ 后台管理模块 │ │ 前台用户模块 │ │ ││ │ │ admin包 │ │ fore包 │ │ ││ │ │ - AdminLogin │ │ - ForeLogin │ │ ││ │ │ - AdminHome │ │ - ForeRegister │ │ ││ │ │ - Account │ │ - ForeHome │ │ ││ │ │ - Category │ │ - ForeProduct │ │ ││ │ │ - Product │ │ - ForeOrder │ │ ││ │ │ - Order │ │ - ForeUser │ │ ││ │ │ - User │ │ - ForeReview │ │ ││ │ │ - Reward │ │ - ForeReward │ │ ││ │ └──────────────────┘ └──────────────────┘ │ ││ └─────────────────────────────────────────────────────────────────────┘ │└─────────────────────────────────────────────────────────────────────────────┘ ↓┌─────────────────────────────────────────────────────────────────────────────┐│ 业务逻辑层 (Service) ││ Service接口 + ServiceImpl实现类 ││ UserService, AdminService, ProductService, OrderService... │└─────────────────────────────────────────────────────────────────────────────┘ ↓┌─────────────────────────────────────────────────────────────────────────────┐│ 数据访问层 (DAO/Mapper) ││ Mapper接口 + XML映射文件 ││ UserMapper, AdminMapper, ProductMapper, OrderMapper... │└─────────────────────────────────────────────────────────────────────────────┘ ↓┌─────────────────────────────────────────────────────────────────────────────┐│ 数据库层 (Database) ││ MySQL数据库: tmalldemodb │└─────────────────────────────────────────────────────────────────────────────┘
7.2 技术栈识别
| 层级 | 技术 | 版本 |
| 核心框架 | Spring Boot | 2.7.10 |
| ORM框架 | MyBatis | 2.2.2 |
| 数据库 | MySQL | 8.0.32 |
| 连接池 | Druid (阿里巴巴) | 1.2.17 |
| JSON处理 | FastJSON (阿里巴巴) | 1.2.83 |
| 日志框架 | Log4j2 | 2.20.0 |
| 视图技术 | JSP + JSTL | – |
| Servlet容器 | Tomcat (内嵌) | – |
7.3 项目目录结构

八、漏洞审计结果
8.1 漏洞统计对比
| 工具 | AI审计结果 | 实际验证 | 最终确认 |
| Yak MCP | 6个 | ✓ 已验证 | 4个 |
| Trae IDE | 45个 | ✗ 未验证 | 待验证 |
| MonkeyCode AI | 6个 | ✗ 未验证 | 待验证 |
8.2 Yak MCP验证结果详情
| 漏洞类型 | 原始判定 | 验证结果 | 最终状态 |
| SQL注入 | High | ✓ 已验证 | 确认存在 |
| 任意文件上传 | High | ✓ 已验证 | 确认存在 |
| 密码明文存储 | High | ✓ 已验证 | 确认存在 |
| 管理后台未授权访问 | Low | ✓ 已验证 | 确认存在 |
| 存储型XSS | High | ✗ 无法验证 | 剔除 |
| 敏感信息泄露 | Medium | ✗ 误报 | 剔除 |
8.3 最终确认漏洞统计
| 危害等级 | 数量 |
| 高危 (High) | 3 |
| 中危 (Medium) | 1 |
| 总计 | 4 |
九、详细漏洞报告
9.1 SQL注入漏洞 (5处)
| 编号 | 漏洞位置 | 端点路径 | 参数 | 测试方法 | 预期响应 | 认证要求 |
| SQL-001 | ProductMapper.xml:88 | /product/{index}/{count} | orderBy | 时间盲注测试(延迟5秒) | 响应延迟5秒 | 无需认证 |
| SQL-002 | UserMapper.xml | /admin/user/{index}/{count} | orderBy | 时间盲注测试(延迟5秒) | 响应延迟5秒 | 需管理员 |
| SQL-003 | ProductMapper.xml(admin) | /admin/product/{index}/{count} | orderBy | 时间盲注测试(延迟5秒) | 响应延迟5秒 | 需管理员 |
| SQL-004 | ProductOrderMapper.xml | /admin/order/{index}/{count} | orderBy | 时间盲注测试(延迟5秒) | 响应延迟5秒 | 需管理员 |
| SQL-005 | RewardMapper.xml | /admin/reward/{index}/{count} | orderBy | 时间盲注测试(延迟5秒) | 响应延迟5秒 | 需管理员 |
SQL注入详细分析(SQL-003 – 无需认证):
漏洞位置: ProductMapper.xml:134
触发端点: GET /product/{index}/{count}
Controller 代码:

MyBatis XML:

POC – HTTP攻击数据包:

POC – curl命令:

SQLMap 自动化利用:

实际测试结果:

9.2 XSS漏洞 (11处)
存储型XSS (7处)
| 编号 | 注入点 | 端点路径 | 参数 | 测试方法 | 触发条件 | 认证要求 |
| XSS-001 | 评论内容 | /review | reviewcontent | 脚本标签注入测试 | 管理员/用户查看评论 | 需登录 |
| XSS-002 | 用户昵称 | /register | usernickname | 图片标签注入测试 | 昵称展示页面 | 无需认证 |
| XSS-003 | 订单备注 | /order | orderremark | 脚本标签注入测试 | 订单详情页 | 需登录 |
| XSS-004 | 收货人姓名 | /order | orderreceivername | SVG标签注入测试 | 订单详情页 | 需登录 |
| XSS-005 | 详细地址 | /order | orderreceiveraddress | Body标签注入测试 | 订单详情页 | 需登录 |
| XSS-006 | 产品名称 | /admin/product | productname | 脚本标签注入测试 | 产品展示页 | 需管理员 |
| XSS-007 | 产品属性值 | /admin/product | propertyvalue | 图片标签注入测试 | 产品详情页 | 需管理员 |
XSS-001 详细分析(用户评论功能):
漏洞位置:
- 输入点:ForeReviewController.java:89
- 输出点:J_review.jsp:54
漏洞代码:
${review.review_content}
漏洞分析:用户提交的评论内容直接存储到数据库,在显示时使用 ${} EL 表达式直接输出,未经过任何转义处理。
POC – HTTP攻击数据包:

POC – curl命令:

反射型XSS (3处)
| 编号 | 注入点 | 端点路径 | 参数 | 测试方法 |
| XSS-008 | /product | keyword | 脚本标签注入测试 | |
| XSS-009 | 搜索框回显 | /product | keyword | 标签闭合测试 |
| XSS-010 | 后台用户搜索 | /admin/user | keyword | SVG标签注入测试 |
DOM型XSS (1处)
| 编号 | 注入点 | 触发位置 | 攻击方法 |
| XSS-011 | AJAX响应 | 多个前端页面 | 构造恶意JSON响应包含可执行HTML标签 |
9.3 IDOR/越权漏洞 (5处)
| 编号 | 漏洞描述 | 端点路径 | 攻击方法 | 预期结果 | 认证要求 |
| IDOR-001 | 管理员账户越权修改 | /admin/account/{id} | 修改id参数遍历其他管理员 | 可修改任意管理员密码 | 需管理员 |
| IDOR-002 | 后台订单更新无权限校验 | /admin/order/{id} | 修改任意订单ID | 可更新他人订单 | 需管理员 |
| IDOR-003 | 订单发货权限混淆 | /order/delivery/{code} | 普通用户访问发货接口 | 可标记订单已发货 | 需登录 |
| IDOR-004 | 订单号可预测 | /order/{code} | 遍历订单号 | 可查看他人订单详情 | 需登录 |
| IDOR-005 | 用户信息修改无二次验证 | /user/update | 修改userid参数 | 可修改他人信息 | 需登录 |
IDOR-001 详细分析(管理员账户越权修改):
漏洞位置:AccountController.java:92-141
漏洞代码:

漏洞分析:路径参数 admin_id 可由攻击者任意指定,未验证是否属于当前登录管理员。
POC – HTTP攻击数据包:

攻击场景:
- 管理员A(ID=2)登录后台
- 发送请求修改 (超级管理员)
- 成功修改超级管理员密码
9.4 文件上传RCE漏洞 (4处)

文件上传详细分析:
漏洞等级: 高危 (High)
漏洞描述:项目的文件上传功能存在严重安全缺陷,未对上传文件类型进行有效验证,攻击者可以上传 JSP WebShell 获取服务器控制权。
受影响位置:
| 文件 | 方法 | 触发端点 | 上传类型 |
| AccountController.java | uploadAdminHeadImage() | POST /admin/uploadAdminHeadImage | 管理员头像 |
| CategoryController.java | uploadCategoryImage() | POST /admin/uploadCategoryImage | 分类图片 |
| ProductController.java | uploadProductImage() | POST /admin/uploadProductImage | 产品图片 |
| ForeUserController.java | uploadUserHeadImage() | POST /user/uploadUserHeadImage | 用户头像 |
漏洞代码分析:

安全缺陷:
- 仅验证文件扩展名,未验证 MIME 类型
- 未验证文件内容(文件头)
- 上传路径在 webapp 目录内,可直接访问执行
- 文件名未重命名,保留原始文件名
POC – HTTP攻击数据包:

POC – curl命令:

WebShell内容示例:

9.5 FastJSON反序列化RCE (5处)
| 编号 | 端点路径 | Content-Type | 攻击方法 | JNDI服务器 | 认证要求 |
| FASTJSON-001 | /admin/product | application/json | FastJSON反序列化攻击(JNDI注入) | 恶意JNDI服务器 | 需管理员 |
| FASTJSON-002 | /admin/category | application/json | FastJSON反序列化攻击(JNDI注入) | 恶意JNDI服务器 | 需管理员 |
| FASTJSON-003 | /admin/user | application/json | FastJSON反序列化攻击(JNDI注入) | 恶意JNDI服务器 | 需管理员 |
| FASTJSON-004 | /admin/order | application/json | FastJSON反序列化攻击(JNDI注入) | 恶意JNDI服务器 | 需管理员 |
| FASTJSON-005 | /order | application/json | FastJSON反序列化攻击(JNDI注入) | 恶意JNDI服务器 | 需登录 |
FastJSON反序列化详细分析:
漏洞等级: 严重 (Critical)
漏洞描述:项目使用 FastJSON 1.2.83 版本,存在已知的反序列化远程代码执行漏洞。FastJSON 在处理 JSON 反序列化时,攻击者可以通过 @type 字段指定恶意类,利用 JNDI 注入实现远程代码执行。
受影响位置:
| 文件 | 方法 | 触发端点 |
| ProductController.java | add() | POST /admin/product |
| ProductController.java | update() | PUT /admin/product/{product_id} |
| ForeOrderController.java | changeOrderItem() | PUT /orderItem |
| ForeOrderController.java | createOrder() | POST /order |
| ForeOrderController.java | createOrderList() | POST /order/list |
漏洞代码示例:

POC – HTTP攻击数据包:

POC – curl命令:

利用步骤:
- 启动 JNDI 注入服务器 (JNDIExploit 或 JNDI-Injection-Exploit)
- 构造恶意 JSON Payload
- 发送请求到受影响端点
- 触发 JNDI 查询,加载远程恶意类
- 执行任意命令
修复建议:

9.6 认证安全漏洞 (6处)
| 编号 | 漏洞描述 | 端点 | 攻击方法 | 风险等级 |
| AUTH-001 | 明文密码存储 | 数据库 | 直接读取userpassword字段 | 严重 |
| AUTH-002 | 会话固定攻击 | /login | 登录前后Session ID不变 | 高危 |
| AUTH-003 | 暴力破解无防护 | /login | 无限次密码尝试 | 高危 |
| AUTH-004 | 弱密码策略 | /register | 可注册弱密码(如简单数字组合) | 高危 |
| AUTH-005 | 用户名枚举 | /admin/login/profilepicture | 根据响应时间/内容判断用户存在 | 中危 |
| AUTH-006 | 前台无统一权限过滤器 | 全局 | 直接访问需认证接口 | 中危 |
AUTH-001 详细分析(明文密码存储):
漏洞位置:
- UserMapper.xml:82-86
- AdminMapper.xml:49-53
漏洞代码:

数据库存储:

风险:
- 数据库泄露导致所有用户密码直接暴露
- 内部人员可直接查看用户密码
- 不符合安全合规要求
POC验证:

AUTH-002 详细分析(会话固定攻击):
漏洞位置:
- ForeLoginController.java:36-48
- AdminLoginController.java:34-48
问题代码:

攻击场景:
1. 攻击者访问网站,获取Session ID: JSESSIONID=ATTACKER_SESSION2. 攻击者诱导受害者使用此Session ID访问登录页面3. 受害者登录成功,但Session ID未改变4. 攻击者使用相同的Session ID即可访问受害者账户
POC – curl命令:

AUTH-003 详细分析(暴力破解无防护):
漏洞位置:
- ForeLoginController.java:35-49
- AdminLoginController.java:33-48
问题分析:
- 无登录失败次数限制
- 无账户锁定机制
- 无验证码保护
- 无响应延迟
POC – Python暴力破解脚本:

9.7 配置安全漏洞 (4处)
| 编号 | 漏洞描述 | 位置 | 敏感信息 | 风险等级 |
| CONF-001 | 数据库凭证硬编码 | application.properties | username/password | 高危 |
| CONF-002 | Actuator端点暴露 | /actuator/* | 健康检查、环境信息、配置属性 | 高危 |
| CONF-003 | 异常堆栈信息泄露 | 多个Controller | 代码路径、SQL语句 | 中危 |
| CONF-004 | 第三方组件版本过旧 | pom.xml | FastJSON 1.2.83等 | 中危 |
CONF-001 详细分析(数据库凭证硬编码):
漏洞位置:application.properties:6-8
漏洞代码:

风险分析:
- 数据库密码明文存储在配置文件中
- 使用弱密码
- 配置文件可能被提交到版本控制系统
修复建议:
# 使用环境变量或配置中心spring.datasource.username=${DB_USERNAME}spring.datasource.password=${DB_PASSWORD}
9.8 业务逻辑漏洞 (4处)
| 编号 | 漏洞描述 | 端点 | 攻击方法 | 风险等级 |
| BIZ-001 | 订单状态机绕过 | /order/delivery/{code} | 跳过支付直接发货 | 高危 |
| BIZ-002 | 库存管理缺失 | /order | 超卖/负库存 | 高危 |
| BIZ-003 | 竞争条件漏洞 | /order/pay/{code} | 并发支付绕过 | 高危 |
| BIZ-004 | 购物车数量篡改 | /orderItem | 修改数量为负数 | 中危 |
BIZ-001 详细分析(订单状态机绕过):
漏洞位置:ForeOrderController.java:706-739
问题分析:
- 用户可自行将订单标记为”已发货”
- 绕过商家发货环节
- 可能导致退款欺诈
POC – HTTP攻击数据包:
GET /order/delivery/2023031712345601 HTTP/1.1Host: target.comCookie: JSESSIONID=<用户Session>
BIZ-002 详细分析(缺少库存管理):
问题分析:
- Product实体类缺少库存字段
- 下单时不检查库存
- 可导致超卖问题
POC – 并发下单脚本:

BIZ-003 详细分析(竞争条件漏洞):
漏洞位置:ForeOrderController.java:586-614
问题分析:
- 支付操作未使用数据库锁
- 并发支付导致销量重复累加
POC – 并发支付脚本:

十、工具特点对比
| 特点 | Yak MCP | Trae IDE | MonkeyCode AI |
| 审计深度 | 中 | 深 | 浅 |
| 审计速度 | 慢 | 慢 | 快 |
| 验证能力 | 强(已验证) | 中(未验证) | 弱(未验证) |
| 报告详细度 | 中 | 高 | 低 |
| 本地部署 | 需要 | 需要 | 不需要 |
| 自动修复 | ✗ | ✗ | ✓ |
十一、对比结论
- Yak MCP 验证能力最强,实际确认4个漏洞,剔除2个误报/无法验证
- Trae IDE 发现漏洞最多(45个),审计最详细,但需要实际验证
- MonkeyCode AI 速度最快(2-3分钟),但漏洞发现较少(6个),且未验证
十二、AI验证漏洞
Trae验证漏洞
验证漏洞的AI提示词:

验证漏洞完成的报告:

Yak验证漏洞
但是还是太慢了这个速度,得需要我调教调教才行。
漏洞验证,可以实时看见http流量请求内容,比其他的方便很多,真实可靠。

十三、心得总结
13.1 AI不是万能的
审计结果需要实际验证,避免幻觉!
13.2 工具组合使用
Trae深度审计 + Yak验证 + MonkeyCode快速扫描 = 完美组合
13.3 速度问题
目前AI审计速度较慢,需要优化:
- 制作Yak技能库提升效率
- 优化智能体提示词
- 调整模型配置
13.4 报告规范
每个漏洞必须提供完整POC:
- Raw格式HTTP数据包
- curl命令
- 实际测试结果
十四、改进方向
- 制作Yak技能库 – 提升效率
- 优化智能体提示词 – 更精准的审计
- 调整模型配置 – 加快速度
- 完善验证脚本 – 减少误报
十五、总结
AI辅助代码审计是未来趋势,但记住:
AI是工具,不是替代品。验证是必须的,幻觉是危险的。
最佳实践:
- 使用Trae进行深度审计
- 使用Yak进行实际验证
- 使用MonkeyCode AI进行快速扫描
- 形成完整的审计闭环
- 持续优化工具链
- 规范化报告输出
相关资源:
- B站视频教学:搜索”代码审计之路之白盒挖掘机”
- 项目地址:https://gitee.com/project_team/Tmall_demo
- Yak工具:https://github.com/yaklang/yak
- 微信公众号:代码审计解析
- *
AI代码审计工具链接
Yak MCP(免费)
- GitHub:https://github.com/yaklang/yak
- 文档:https://yaklang.io/
- 社区:https://github.com/yaklang/yak/discussions
Trae IDE(免费)
- 官网:https://trae.ai/
- 文档:https://docs.trae.ai/
- 社区:https://github.com/trae-ai
MonkeyCode AI(免费)
- 官网:https://monkeycode.ai/
- 文档:https://docs.monkeycode.ai/
其他AI代码审计工具推荐
- CodeQL(免费):https://codeql.github.com/
- Semgrep(免费):https://semgrep.dev/
- SonarQube(社区版免费):https://www.sonarqube.org/
作者:Sha0_s1发布时间:2026年3月本文基于实际代码审计实践总结
文章来源:
黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!
END
seo优化_前端开发_渗透技术








