154 lines
5.2 KiB
Markdown
154 lines
5.2 KiB
Markdown
# 自动化循环测试模式
|
||
|
||
> 参考自实战经验:用 AI agent 循环驱动渗透测试,实现半自动化 SRC 漏洞挖掘。
|
||
|
||
---
|
||
|
||
## 核心思路
|
||
|
||
让 AI 不断问自己三个问题,形成循环:
|
||
|
||
```text
|
||
1. 这个漏洞是否是高危漏洞?
|
||
2. 这个漏洞是否利用成功?
|
||
3. 这个目标是否还存在其他漏洞?
|
||
```
|
||
|
||
只要第 3 个问题的答案是"可能",循环就继续。
|
||
|
||
---
|
||
|
||
## 循环架构
|
||
|
||
```text
|
||
┌─────────────────────────────────────────┐
|
||
│ 初始化:确定目标、范围、工具链 │
|
||
└─────────────────┬───────────────────────┘
|
||
▼
|
||
┌─────────────────────────────────────────┐
|
||
│ Step 1: 信息收集(Nmap/子域名/目录) │
|
||
└─────────────────┬───────────────────────┘
|
||
▼
|
||
┌─────────────────────────────────────────┐
|
||
│ Step 2: 漏洞检测(Nuclei/SQLMap/手动) │
|
||
└─────────────────┬───────────────────────┘
|
||
▼
|
||
┌─────────────────────────────────────────┐
|
||
│ Step 3: 验证利用(PoC/截图/证据) │
|
||
└─────────────────┬───────────────────────┘
|
||
▼
|
||
┌─────────────────────────────────────────┐
|
||
│ Step 4: 记录发现 → 判断是否继续 │
|
||
│ - 还有未测试的接口?→ 回到 Step 2 │
|
||
│ - 还有未测试的子域?→ 回到 Step 1 │
|
||
│ - 全部测完?→ 生成报告,结束 │
|
||
└─────────────────────────────────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## 实现方式
|
||
|
||
### 方式 1:Claude Code /loop 命令
|
||
|
||
```text
|
||
/loop "对目标 https://target.com 进行渗透测试。每轮测试一个接口或功能点。
|
||
测试完成后判断:
|
||
1. 是否发现漏洞?如果是,记录并继续
|
||
2. 是否还有未测试的攻击面?如果是,继续下一轮
|
||
3. 如果全部测完,生成报告并停止"
|
||
```
|
||
|
||
### 方式 2:planning-with-files
|
||
|
||
使用 [planning-with-files](https://github.com/othmanadi/planning-with-files) skill:
|
||
- 创建一个 `plan.md` 文件记录测试计划
|
||
- 每完成一步就更新计划状态
|
||
- AI 读取计划文件决定下一步
|
||
|
||
### 方式 3:自定义循环 prompt
|
||
|
||
在 RULES.md 或 skill 中写入循环逻辑:
|
||
|
||
```markdown
|
||
## 自动化测试循环
|
||
|
||
当进入渗透测试模式时,按以下循环执行:
|
||
|
||
1. 读取当前测试计划(如果没有则创建)
|
||
2. 选择下一个未测试的目标/接口/功能点
|
||
3. 执行测试(信息收集 → 漏洞检测 → 验证)
|
||
4. 记录结果到测试计划
|
||
5. 判断:
|
||
- 发现高危漏洞 → 立即通知用户
|
||
- 还有未测试项 → 回到步骤 2
|
||
- 全部完成 → 生成报告
|
||
```
|
||
|
||
---
|
||
|
||
## 关键经验
|
||
|
||
### 1. 工具不要太多
|
||
|
||
> "太多的工具不仅会影响模型的判断,还会将大量的时间重复在一个点上"
|
||
|
||
建议每个测试类型只保留 1-2 个核心工具:
|
||
- SQL 注入 → SQLMap(不要再加 FFUF 做注入)
|
||
- 目录爆破 → FFUF(不要再加 Gobuster + dirsearch)
|
||
- 漏洞扫描 → Nuclei(不要再加 Nikto + OpenVAS)
|
||
|
||
### 2. Skill 要写具体场景
|
||
|
||
不要只写"测试 SQL 注入",要写:
|
||
- 遇到 WAF 怎么绕过
|
||
- 遇到参数加密怎么处理
|
||
- 遇到 JSON body 怎么测试
|
||
- 什么时候用时间盲注 vs 联合查询
|
||
|
||
### 3. 循环时间会越来越短
|
||
|
||
实测第 7 轮循环只需要 2 分钟——因为 AI 已经熟悉了目标结构,不需要重复信息收集。
|
||
|
||
### 4. 代理池防封
|
||
|
||
批量测试时必须走代理池,否则 IP 会被封:
|
||
|
||
```text
|
||
所有扫描流量 → ProxyCat 代理池端口 → 目标
|
||
```
|
||
|
||
推荐:[ProxyCat](https://github.com/honmashironeko/ProxyCat) — 将静态代理 IP 变成隧道 IP
|
||
|
||
---
|
||
|
||
## 配合 BurpSuite MCP
|
||
|
||
BurpSuite 有 MCP 扩展(通过扩展市场安装),可以让 AI 直接:
|
||
- 查看 Burp 拦截的请求
|
||
- 重放修改后的请求
|
||
- 读取扫描结果
|
||
- 操作 Intruder/Repeater
|
||
|
||
工作流:
|
||
```text
|
||
浏览器手动操作 → Burp 拦截流量 → AI 通过 MCP 读取请求 → AI 分析并构造攻击 → 通过 Burp 重放
|
||
```
|
||
|
||
---
|
||
|
||
## 与我们系统的集成
|
||
|
||
在我们的行为链中,循环测试对应步骤 10(执行任务)的内部循环:
|
||
|
||
```text
|
||
8. 如果缺工具 → bootstrap 自动补齐
|
||
9. 如果补齐失败 → 引导用户
|
||
10. 进入 skill 工作流 → 执行任务
|
||
└── 内部循环:测试 → 记录 → 判断 → 继续/停止
|
||
11. 任务完成 → 生成报告(含图表)
|
||
12. 回写经验
|
||
```
|
||
|
||
每次循环发现的漏洞都应该实时记录,不要等全部完成才记录。
|