# 自动化循环测试模式

> 参考自实战经验：用 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. 回写经验
```

每次循环发现的漏洞都应该实时记录，不要等全部完成才记录。
