reverse-skills-max: initial public release (restored, redacted, hardened)
This commit is contained in:
@@ -0,0 +1,153 @@
|
||||
# 自动化循环测试模式
|
||||
|
||||
> 参考自实战经验:用 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. 回写经验
|
||||
```
|
||||
|
||||
每次循环发现的漏洞都应该实时记录,不要等全部完成才记录。
|
||||
Reference in New Issue
Block a user