Skip to content
Back to skills

vibe-pentest

ASecurity

AI 渗透测试:多 Agent 并行架构的 Web 应用渗透测试技能。 流程: 指纹识别 → 后台入口扫描 → API 预扫描 → 浏览器登录提取凭证(可选) → GoSpider 爬虫 → 过滤数据 → 指纹汇总 → 多 Agent 并行渗透测试 → 攻击链分析 → 漏洞证据复查 → 生成报告。

  • 319 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added August 31, 2026
securitypythongojavaphpshellbashsqlspringgitapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 17 files and shows the line behind each finding

Scanned September 21, 2026

npx -y skills add ok-helloworld/vibe-pentest --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of vibe-pentest?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for vibe-pentest
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ok-helloworld-vibe-pentest/badge)](https://www.skillsdirectory.com/skills/ok-helloworld-vibe-pentest)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: vibe-pentest
description: |
  AI 渗透测试:多 Agent 并行架构的 Web 应用渗透测试技能。
  流程: 指纹识别 → 后台入口扫描 → API 预扫描 → 浏览器登录提取凭证(可选) → GoSpider 爬虫 →
  过滤数据 → 指纹汇总 → 多 Agent 并行渗透测试 → 攻击链分析 → 漏洞证据复查 → 生成报告。
metadata:
  author: helloworld
  version: "1.0.32"
  date: 2026-09-21
---

# Vibe Pentest — 多 Agent 并行 Web 渗透测试

## 启动前快速 Git 自更新

每次调用本 skill 时,在开始正式任务前优先执行:

`python {SKILL_ROOT}/scripts/auto_update_skill.py {SKILL_ROOT} --json`

该脚本负责快速检查并同步当前 skill 项目;如果更新失败、超时、无网络、无法获取远端状态,或 `SKILL_ROOT` 目录不是 Git 仓库,直接跳过更新并继续执行用户任务,不要卡住。

如果 `git pull` 有文件冲突,脚本会自动将远端最新文件覆盖到本地冲突文件,但不会执行 `git reset --hard` 之类的全局破坏性操作。

如果自动更新结果的 `reason` 为 `updated` 或 `updated_with_conflict_resolution`,必须先重新读取主 `SKILL.md`,再继续后续步骤。

## 启动前运行子 Agent 创建脚本

开始渗透前,在**当前项目目录**下,直接调用脚本创建Agent `python {SKILL_ROOT}/scripts/install_sub_agents.py --provider {provider} --force` 提前创建实际启用的子 Agent。

`--provider` 应根据当前智能体平台选择,例如 `qoder`、`opencode`、`trae`、`claude`、`workbuddy`、`codebuddy`,也支持自定义名称。

命令示例:
```bash
python {SKILL_ROOT}/scripts/install_sub_agents.py --provider qoder --force
```

## 启动前创建本次任务工作目录

每次新任务使用独立工作目录;历史 `workspace*` 目录一律只读保留,不得重命名、移动或删除。

1. 在**当前项目目录**下创建本次任务的工作目录,目录名格式 `workspace_{YYYYMMDD_HHmmss}`(时间戳取当前时间),并记录其**绝对路径**:
   - **Windows (PowerShell) 示例**:`$ws = (New-Item -ItemType Directory -Force -Path "workspace_$(Get-Date -Format 'yyyyMMdd_HHmmss')").FullName; $ws`
   - **Linux/macOS (Bash) 示例**:`ws="workspace_$(date +%Y%m%d_%H%M%S)"; mkdir -p "$ws"; ws="$(cd "$ws" && pwd)"; echo "$ws"`
2. 本次任务全程复用该绝对路径。下文所有 `{WORKSPACE_DIR}` 均指它,执行命令前必须替换为真实绝对路径,不得保留占位符,也不得退回相对目录名。

**每条读写工作目录的命令都必须显式传入 `{WORKSPACE_DIR}`**(通过 `--workspace`、`-o` 或位置参数)。并发任务、新开终端与子 Agent 之间不共享任何隐式状态,显式传绝对路径是唯一可靠方式;未显式传入时脚本会按当前 cwd 退回 `./workspace`,导致产物写错目录。


## SKILL 目录结构(全部使用相对路径)


```text
vibe-pentest/
├── SKILL.md                     # 主 skill(整体架构、数据协议、工作流)
├── agents/
│   ├── injection-agent/         # Agent 1: 注入类漏洞正式执行规范
│   ├── auth-agent/              # Agent 2: 认证、会话、令牌与协议流正式执行规范
│   ├── file-agent/              # Agent 3: 文件系统访问、解析链与 RCE 升级正式执行规范
│   ├── api-agent/               # Agent 4: API 资源授权、对象归属与接口扩散正式执行规范
│   ├── business-agent/          # Agent 5: 业务状态机、竞争条件与真实业务影响正式执行规范
│   ├── misc-agent/              # Agent 6: 外围攻击面、协议边界与配置风险正式执行规范
│   ├── poc-agent/               # Agent 7: 基于指纹的已知漏洞 POC 验证正式执行规范
│   └── vuln-analysis-agent/     # Agent 8: 攻击链分析与漏洞证据复查正式执行规范
├── scripts/
│   ├── run_fingerprint.py        # Phase 0: Web 指纹识别
│   ├── fingerprints_rules/       # Phase 0: 指纹规则库(run_fingerprint.py 依赖)
│   ├── poc/                      # Phase 5 POC Agent: Nuclei YAML 格式 POC 文件
│   ├── admin_scanner.py          # Phase 0.5: 后台管理面板扫描
│   ├── extract_credentials.py    # Phase 2: 浏览器登录 + 凭证提取
│   ├── run_gospider.py           # Phase 3: GoSpider 爬虫
│   ├── clean_targets.py          # Phase 4: 数据清洗 + 域名过滤
│   ├── api_discovery.py          # API 预扫描 1: 接口发现
│   ├── sensitive_extract.py      # API 预扫描 2: 敏感参数提取
│   ├── deduplicate.py            # API 预扫描 3: 去重与聚合
│   ├── prepare_agent_findings.py # Phase 5: 预生成 findings 骨架
│   ├── verify_findings.py        # Phase 5.6: 漏洞证据复查
│   ├── generate_report.py        # Phase 6: 生成 JSON 报告
│   ├── install_sub_agents.py     # 安装 8 个子 Agent 定义到平台目录
│   ├── auto_update_skill.py      # 启动前快速 Git 自更新
│   ├── workspace_env.py          # 统一工作目录解析(各脚本复用)
│   ├── http_test.py              # ★ 统一 HTTP 发包工具
│   ├── dnslog.py                 # ★ DNS 回调 OOB 验证工具
│   ├── ws_test.py                # WebSocket 发包工具
│   └── deserialization_payload.py # Java 反序列化 payload 生成工具
├── references/
│   ├── sub_agents/               # 8 个子 Agent 的可直接复制创建定义
│   ├── pentest_skills/           # 各漏洞专项测试 Skill 与 INDEX 路由
│   ├── common-paths.md           # 常见后台/登录路径列表
│   ├── report-json-format.md     # 最终报告 JSON 格式约束
│   ├── dnslog-usage.md           # dnslog.py 用法参考
│   ├── http-test-usage.md        # http_test.py 用法参考
│   └── ws-test-usage.md          # ws_test.py 用法参考
├── report_renderers/
│   ├── generate_word.py          # Word 报告渲染器
│   └── generate_html.py          # HTML 报告渲染器
└── tools/
    ├── gospider_downloads.json   # GoSpider 多平台下载清单
    ├── gospider(.exe)            # GoSpider 可执行文件
    └── .cache/                   # GoSpider 下载与解压缓存
```

> **注意**:所有路径均为相对路径,skill 可整体移动到任意位置使用。

## 架构总览

```text
┌──────────────────────────────────────────────────────────────────────────────┐
│                             Main Skill Flow                                 │
├──────────────────────────────────────────────────────────────────────────────┤
│ Phase 0   : 指纹识别                                                        │
│ Phase 0.5 : 后台入口扫描 - 377+ 路径探测 + 80+ 产品指纹识别                │
│ Phase 1   : 授权确认                                                        │
│ Phase 2   : 浏览器登录 + 凭证提取          (scripts/extract_credentials.py) │
│ Phase 3   : GoSpider 爬虫                (scripts/run_gospider.py)          │
│ Phase 4   : 数据清洗                    (scripts/clean_targets.py)          │
│ Phase 4.5 : 指纹汇总(汇总 fingerprint/admin_scan/api_discovery 到 tech_stack)│
│ Phase 5   : 生成 findings 骨架        (scripts/prepare_agent_findings.py)  │
│           : 并行分发启用的渗透 Agent(按提示词指定)                         │
│ Phase 5.5 : 调用漏洞综合分析 Agent - 跨 Agent 漏洞组合                   │
│ Phase 5.6 : 复用漏洞综合分析 Agent - 逐一审查 confirmed 漏洞证据            │
│ Phase 6   : 聚合结果 + JSON 报告导出   (scripts/generate_report.py)        │
├────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┤
│ Injection  │ Auth       │ File       │ API        │ Business   │ Misc       │ POC        │
│ Agent      │ Agent      │ Agent      │ Agent      │ Agent      │ Agent      │ Agent      │
└────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┘
```

### 需要创建的渗透 agent(按提示词指定启用)

| # | Agent 名称 | 类型 | 职责范围 | 创建 Agent 定义文件 |
|---|-----------|------|------|---------|
| 1 | **injection-agent** | 渗透 | 负责所有注入类漏洞检测:SQLi/NoSQL/XSS(存储/反射/DOM)/SSRF/XXE/SSTI/RCE/反序列化/CRLF/XSLT/EL/JNDI | `references/sub_agents/injection-agent.md` |
| 2 | **auth-agent** | 渗透 | 负责认证与会话类漏洞检测:认证绕过/暴力破解/会话管理/OAuth/SAML/密码重置绕过/验证码绕过/不安全随机数/用户枚举/OIDC/CSRF。按三阶段执行:先识别认证攻击面,无攻击面时早停;无稳定凭据时执行匿名流程分析、默认凭据检查与受控密码测试;用户提供或成功获取有效凭据后,再执行已认证深度验证。 | `references/sub_agents/auth-agent.md` |
| 3 | **file-agent** | 渗透 | 负责文件类漏洞检测:路径穿越/LFI/RFI/LFI→RCE、任意文件上传、文件包含、任意文件下载、Zip Slip、SVG/CSV 注入、PHP Wrapper 利用、PEARCMD RCE、编辑器路径利用、敏感文件泄露与文件解析链风险。 | `references/sub_agents/file-agent.md` |
| 4 | **api-agent** | 渗透 | 负责 API 安全类漏洞检测:未授权访问/BOLA/BFLA/批量赋值/GraphQL 深度测试/API 参数篡改/隐藏参数发现/WebSocket 安全/API 版本枚举/过度数据暴露 | `references/sub_agents/api-agent.md` |
| 5 | **business-agent** | 渗透 | 负责业务逻辑漏洞检测:业务流程绕过、状态机缺陷、竞态滥用、价格篡改、优惠券滥用、库存与数量操纵,以及订单、支付、订阅等场景中的业务规则滥用 | `references/sub_agents/business-agent.md` |
| 6 | **misc-agent** | 渗透 | 负责外围攻击面与协议边界安全检测:信息泄露/开放重定向/CORS/CSP/安全头/目录遍历/子域名接管/Web缓存欺骗/Clickjacking/Host头攻击 | `references/sub_agents/misc-agent.md` |
| 7 | **poc-agent**  | POC验证 | 基于指纹识别结果,匹配 POC YAML 文件并通过 http_test.py 验证已知漏洞。指纹识别 → POC 匹配 → 发包验证 → 输出确认漏洞| `references/sub_agents/poc-agent.md` |

### 需要创建的 漏洞综合分析 agent

| # | Agent 名称 | 类型 | 职责范围 | 创建 Agent 定义文件 |
|---|-----------|------|------|---------|
| 1 | **vuln-analysis-agent** | 综合分析 | Vibe Pentest 漏洞综合分析 Agent。固定负责 Phase 5.5 攻击链分析与 Phase 5.6 使用 verify_findings.py 脚本检查 | `references/sub_agents/vuln-analysis-agent.md` |

### 数据交换协议

所有 agent 通过 **共享文件系统** 交换数据,不依赖平台特定的消息传递:

**主流程 → 渗透 Agent(输入):**
```text
{WORKSPACE_DIR}/
├── fingerprint.json        # Phase 0 指纹识别结果
├── targets.txt             # 极简目标清单:先 base_url,再缩进列出该站点 URL
├── sessions/               # 凭证目录
│   ├── admin.json          # 格式见下方
│   └── user.json
└── findings/               # 输出目录(渗透 Agent 写入)
```

**主流程 → 漏洞综合分析 Agent(输入):**
```text
{WORKSPACE_DIR}/
├── findings/               # 已启用的渗透 Agent 已回填完成的 findings 文件
├── fingerprint.json        # 指纹识别结果
├── targets.txt             # 极简分组目标清单
└── sessions/               # 凭证目录(需要判断认证边界时读取)
```

说明:
- 骨架文件中的示例值仅用于提示字段结构,属于待回填占位内容;渗透 Agent 必须按真实检测结果覆写这些值
- `findings` 可以为空数组;如发现多个漏洞,必须在 `findings` 中追加多个对象,而不是只保留一条
- `vuln_id` 按各 Agent 前缀递增编号,例如 `INJ-001`、`INJ-002`、`AUTH-001`、`FILE-001`


**sessions/{username}.json 格式(凭证提取脚本输出):**
```json
{
  "target": "...",
  "capture_time": "...",
  "roles": [
    {
      "role_label": "admin",
      "cookies": [{"name": "...", "value": "...", "secure": true, "httpOnly": true}],
      "auth_cookie_string": "key1=val1; key2=val2",
      "tokens": [{"type": "localStorage", "key": "token", "value": "eyJ..."}],
      "jwt_analysis": [{"payload": {"sub": "...", "role": "admin"}, "expires_at": "..."}],
      "auth_headers": [{"name": "Authorization", "value": "Bearer eyJ..."}],
      "storage": {"localStorage": {}, "sessionStorage": {}}
    }
  ]
}
```


**report_{timestamp}.json 格式(Phase 6 最终输出):**
```json
{
  "report_meta": {
    "report_id": "VUL-2026-XXXXX",        // 唯一报告 ID,格式 VUL-年份-5位随机大写字母数字
    "generated_at": "2026-05-15 02:00:00",                // 报告生成时间
    "tester": "vibe-pentest-agent-v1",     // 固定值
    "scope": {
      "target_url": "http://target:port/", // 测试目标 URL
      "tech_stack": ["java", "spring_boot_3", "halo_cms"] // 指纹识别结果
    },
    "test_accounts": [                     // 测试账号列表
      {"role": "管理员", "username": "admin", "password": "***"}
    ]
  },
  "summary": {
    "total": 7,        // 漏洞总数,必须等于下面各 severity 数量之和
    "critical": 0,     // 严重
    "high": 1,         // 高危
    "medium": 1,       // 中危
    "low": 4,          // 低危
    "info": 1          // 信息
  },
  "vulnerabilities": [
    {
      "vuln_id": "VUL-001",             // 按 severity→confidence 排序后从 VUL-001 递增(严重优先)
      "title": "漏洞标题 - 简述路径和问题",
      "type": "information_disclosure", // 英文类型,见下方 type 枚举表
      "type_zh": "信息泄露",            // 中文类型,同一 type 始终使用同一表述
      "severity": "high",              // 枚举: critical, high, medium, low, info
      "confidence": "confirmed",       // 枚举: confirmed, likely, potential
      "authenticated": true,           // boolean,是否需要认证才能触发
      "target_url": "http://...",       // 漏洞目标 URL
      "description": "详细描述,包含影响分析。",
      "RepairSuggestions": "1. 针对该漏洞的具体修复建议;2. 多条建议用分号分隔。",
      "http_test_commands": [           // 可选,漏洞验证回放命令
        {
          "label": "漏洞验证回放命令",
          "command": "python \"d:/vibe_pentest/scripts/http_test.py\" --url \"http://...\" --method GET --show-command --show-summary --include-headers",
          "expected_evidence": "执行后应看到的关键响应证据"
        }
      ],
      "http_interactions": [
        {
          "seq": 1,
          "label": "此交互的说明",
          "request": {"method": "GET", "url": "http://...", "headers": {}, "body": null},
          "response": {"status_code": 200, "headers": {}, "body": "..."}
        }
      ]
    }
  ]
}
```

**report_{timestamp}.json 格式约束:**

| 字段 | 类型 | 约束 |
|------|------|------|
| `vuln_id` | string | `VUL-NNN` 格式,NNN 从 001 起,按 severity→confidence 排序分配(严重优先) |
| `type` | string | 见下方完整 type 枚举表(共 42 种),不在表中的值将被映射为 `unknown` |
| `type_zh` | string | 由 type 自动映射,同一 type 始终使用相同中文表述 |
| `severity` | string | `critical` > `high` > `medium` > `low` > `info` |
| `confidence` | string | `confirmed`(有完整 HTTP 证据)、`likely`(间接证据)、`potential`(疑似) |
| `authenticated` | boolean | `true` = 需要登录,`false` = 匿名可触发 |
| `http_test_commands` | array | 可选;用于保留可直接复制回放的 `http_test.py` 命令,建议包含 `label`、`command`、`expected_evidence` |
| `http_interactions` | array | 至少 1 条,每条必须包含 request.method、request.url、response.status_code |
| `protocol_interactions`、`reproduction`、`evidence_refs` | array | 可选;仅在测试 `ws/wss` 等非 HTTP 协议时使用,字段见 `references/report-json-format.md` |


**type -> type_zh 漏洞类型映射表:**

| type | type_zh | type | type_zh |
|------|---------|------|---------|
| `sqli` | SQL注入 | `nosqli` | SQL注入 |
| `xss_stored` | XSS注入 | `xss_reflected` | XSS注入 |
| `xss_dom` | XSS注入 | `ssrf` | SSRF |
| `xxe` | XXE注入 | `ssti` | 模板注入 |
| `rce` | 远程代码执行 | `command_injection` | 命令注入 |
| `insecure_deserialization` | 反序列化漏洞 | `crlf_injection` | CRLF注入 |
| `xslt_injection` | 注入攻击 | `el_injection` | 注入攻击 |
| `jndi_injection` | 注入攻击 | `prototype_pollution` | 原型污染 |
| `type_juggling` | 类型混淆 | `request_smuggling` | HTTP走私 |
| `auth_bypass` | 认证绕过 | `idor` | 越权访问 |
| `broken_access_control` | 访问控制缺陷 | `csrf` | CSRF |
| `weak_password` | 弱口令 | `brute_force` | 暴力破解 |
| `lfi` | 文件包含 | `rfi` | 文件包含 |
| `dir_traversal` | 目录穿越 | `file_upload` | 文件上传漏洞 |
| `webshell` | Webshell | | |
| `information_disclosure` | 信息泄露 | `open_redirect` | 开放重定向 |
| `url_redirect` | 开放重定向 | `cookie_security` | Cookie安全问题 |
| `git_exposure` | 信息泄露 | `directory_listing` | 信息泄露 |
| `waf_bypass` | WAF绕过 | `clickjacking` | 点击劫持 |
| `workflow_bypass` | 业务逻辑漏洞 | `race_condition` | 竞争条件 |
| `pricing_manipulation` | 业务逻辑漏洞 | `coupon_abuse` | 业务逻辑漏洞 |
| `subscription_hijack` | 业务逻辑漏洞 | | |
| `unknown` | 未分类 | | |



## 工作流程

### Phase 0~4:主流程执行

主流程按顺序执行以下阶段:

0. **指纹识别**
  - 调用 `{SKILL_ROOT}/scripts/run_fingerprint.py`
  - 单站点目标使用 `-u {base_url1} --json -o {WORKSPACE_DIR}/fingerprint.json`,多站点目标使用 `-u {base_url1} -u {base_url2} --json -o {WORKSPACE_DIR}/fingerprint.json`
  - 固定输出: `{WORKSPACE_DIR}/fingerprint.json`
  - 该工具基于 DSL 表达式匹配,支持 favicon mmh3 hash、关键词匹配、正则匹配,指纹库位于 `{SKILL_ROOT}/scripts/fingerprints_rules/`
  - 命令示例:
```bash
python {SKILL_ROOT}/scripts/run_fingerprint.py -u {base_url} --json -o {WORKSPACE_DIR}/fingerprint.json
```
0.5. **后台入口扫描**
  - 调用 `{SKILL_ROOT}/scripts/admin_scanner.py`
  - 单站点目标使用 `--target {base_url1}`,多站点目标使用 `--target {base_url1} --target {base_url2}`
  - 固定输出: `{WORKSPACE_DIR}/admin_scan_summary.json`
  - 状态检查:**该检查非常关键**;脚本运行结束后,仍然要检查状态文件 `{WORKSPACE_DIR}/admin_scan_status.json`,并且**只有 `status = completed` 才能进入下一步**;轮询查看间隔建议 `10` 秒一次或更长,期间不得重复执行脚本;可以通过检查脚本进程是否存在进行辅助判断,若进程存在,则说明后台任务仍在执行中,需要耐心等待状态变成 `completed`
  - 命令示例:
```bash
python {SKILL_ROOT}/scripts/admin_scanner.py --target {base_url} -o {WORKSPACE_DIR}/admin_scan_summary.json
```
1. **API 预扫描**
  - 调用 `{SKILL_ROOT}/scripts/run_api_prescan.py`
  - 单站点目标使用 `--target {base_url1}`,多站点目标使用 `--target {base_url1} --target {base_url2}`
  - 固定输出: `{WORKSPACE_DIR}/api_discovery_summary.json`、`{WORKSPACE_DIR}/sensitive_findings_summary.json`。
  - 状态检查:**该检查非常关键**;脚本运行结束后,仍然要检查状态文件 `{WORKSPACE_DIR}/api_prescan_status.json`,并且**只有 `status = completed` 才能进入下一步**;轮询查看间隔建议 `10` 秒一次或更长,期间不得重复执行脚本;可以通过检查脚本进程是否存在进行辅助判断,若进程存在,则说明后台任务仍在执行中,需要耐心等待状态变成 `completed`
  - 命令示例:
```bash
python {SKILL_ROOT}/scripts/run_api_prescan.py --target {base_url} --workspace {WORKSPACE_DIR}
```
2. **浏览器登录**
  - 调用 `{SKILL_ROOT}/scripts/extract_credentials.py`,为每个测试账号启动浏览器登录并提取凭证,若用户未提供测试账号,此步骤可跳过。
  - 命令示例:
```bash
python {SKILL_ROOT}/scripts/extract_credentials.py --url {login_url} --timeout 120 --output {WORKSPACE_DIR}/sessions/{username}.json
```
3. **GoSpider 爬虫**
  - 运行方式:须在沙箱环境外调用 `{SKILL_ROOT}/scripts/run_gospider.py`
  - 目标参数:单目标使用 `--target {base_url}`;多目标使用 `--target {base_url1} --target {base_url2}`。
    - 爬取目标 `base_url` 必须严格使用用户提供的完整 URL,禁止自动转换为根目录地址(如 `/`)、删除路径层级或仅保留域名。
  - 凭证参数:传入 `--workspace` 后会自动读取 `{WORKSPACE_DIR}/sessions/*.json` 做认证态爬取;未提供测试账号或只需匿名爬取时加 `--anonymous-only`。凭证在其他目录时用 `--sessions <目录>` 显式指定。
  - 状态检查:**该检查非常关键**:
    - GoSpider 爬虫通常较慢,脚本运行结束后,仍然要检查状态文件 `{WORKSPACE_DIR}/gospider_status.json`,并且**只有 `status = completed` 同时有输出 `{WORKSPACE_DIR}/crawl/crawled_*.json` 才能进入下一步**;轮询查看间隔建议 `15` 秒一次或更长,期间不得重复执行脚本。
    - 可以通过检查 `gospider` 进程是否存在进行辅助判断,若进程存在,则说明后台任务仍在爬虫中,需要耐心等待状态变成 `completed` 以及输出产物。
  - 命令示例:
```bash
python {SKILL_ROOT}/scripts/run_gospider.py --target {base_url} --workspace {WORKSPACE_DIR}
```
4. **数据清洗**
  - 调用脚本:执行 `{SKILL_ROOT}/scripts/clean_targets.py`,会自动读取 `{WORKSPACE_DIR}/crawl/` 下全部 `crawled_*.json`,按站点过滤外部域名、非目标 IP、静态资源,并对 URL 去重
  - 固定输出: `{WORKSPACE_DIR}/targets.txt`
  - 命令示例:
```bash
python {SKILL_ROOT}/scripts/clean_targets.py --workspace {WORKSPACE_DIR}
```
4.5. **指纹汇总**
  - 读取以下文件,提取技术栈关键字并合并到 `fingerprint.json` 的 `tech_stack` 字段:
    - `{WORKSPACE_DIR}/fingerprint.json`(Phase 0 输出)
    - `{WORKSPACE_DIR}/admin_scan_summary.json`(Phase 0.5 输出)
  - **判断标准(核心原则)**:只提取"具体的软件产品/框架/中间件/CMS/服务器软件名称",这些名称能用于匹配 POC 库中的 `fingerprint` 字段。**不提取**页面内容描述、漏洞类型名称、通用功能描述。
  - **正例(应提取)**:
    - `"Apache ActiveMQ Console"` → `ActiveMQ`(具体产品名)
    - `"Jenkins Dashboard"` → `Jenkins`(具体产品名)
    - `"GeoServer: Welcome"` → `GeoServer`(具体产品名)
    - `"XXL-JOB 任务调度中心"` → `XXL-JOB`(具体产品名)
    - `"Jetty(9.4.18.v20190429)"` → `Jetty`(具体服务器软件)
    - `"nginx/1.18.0"` → `nginx`(具体服务器软件)
  - **反例(不应提取)**:
    - `"SQL Injections"` → 不提取(漏洞测试页面标题,不是产品名)
    - `"XSS Test Page"` → 不提取(漏洞测试页面标题)
    - `"Error 404 - Not Found"` → 不提取(错误页面)
    - `"Welcome to DVWA"` → 不提取(靶场名称,不是真实产品)
    - `"Login Page"` → 不提取(通用功能描述)
    - `"Admin Console"` → 不提取(通用功能描述,除非能识别出具体产品如 "Jenkins Console")
  - 提取规则:
    1. 从 `fingerprint.json` 的 `web_title` 提取:识别标题中的具体软件产品名/框架名/中间件名
    2. 从 `fingerprint.json` 的 `web_server` 提取:识别服务器软件名(如 Jetty、nginx、IIS、Apache)
    3. 从 `admin_scan_summary.json` 的 `title` 字段提取:识别具体软件产品名
    4. **智能去重**:在添加新关键字前,必须先检查 `tech_stack` 中是否已存在相同或高度相似的内容:
      - **完全重复**:字符串完全相同(如 `Jetty` 已存在,不再添加 `Jetty`)
      - **包含关系**:新关键字是已有内容的子串或超集(如 `jetty/9.4.18.v20190429` 已存在,不再添加 `Jetty`;或 `Jetty` 已存在,不再添加 `jetty/9.4.18.v20190429`)
      - **同一产品不同格式**:如 `nginx/1.18.0` 和 `nginx` 是同一产品,只保留一个(优先保留带版本号的)
      - **判断方法**:将已有内容和新关键字都转为小写,检查是否存在包含关系(`a in b` 或 `b in a`)
    5. 将去重后的关键字合并到 `tech_stack`,写回 `fingerprint.json`
      - 目的:汇总所有来源的技术栈信息,供后续 Agent 和报告生成使用
### Phase 5:多 Agent 并行渗透测试

主流程必须通过智能体平台提供的 Multi-Agent / Subagents 能力或等效工作流能力,**同时启动提示词中指定的渗透 Agent,并行执行渗透测试**:

- **【强制】启动每个 Agent 时,必须在提示词中明确给出 `{SKILL_ROOT}` 与 `{WORKSPACE_DIR}` 的真实绝对路径**;子 Agent 不共享主流程的上下文与终端状态,缺失时将无法定位输入文件和回填路径
- 主流程必须先执行 `python {SKILL_ROOT}/scripts/prepare_agent_findings.py --workspace {WORKSPACE_DIR} --agent {agent_name}`,需要根据实际启用的子 agent 生成标准化骨架文件到 `{WORKSPACE_DIR}/findings/{agent_name}.json`
- **【强制】每个 Agent 启动后必须首先读取** `{SKILL_ROOT}/agents/{agent_name}/SKILL.md`,该文件定义了 Agent 的角色身份、职责范围、输入数据、检测方法论、强制执行要求、回填要求,是 Agent 行为的核心基准
- 每个 Agent 必须先建立本职责范围内的一级攻击面清单(基于已知的输入数据、文档),再递归展开二级/三级功能点,扩展攻击面清单
- 每个 Agent 必须从 HTML 表单、链接、按钮、隐藏字段、JS 请求、API 响应中继续提取子功能和隐藏入口
- 每个 Agent 必须对可疑点执行主动深入探测:基线请求、变体请求、对照请求、权限对比、参数边界、编码变体、方法变体
- 每个 Agent 必须根据业务需要执行认证态/未认证态对比:匿名、已登录、去认证重放、低权限重放、高权限对照(如有)
- 每个 Agent 不得把第一个发现或第一个漏洞当作终点,必须继续覆盖同类功能、相邻接口、同参数不同方法和认证态差异
- http/https 请求强制优先使用 `{SKILL_ROOT}/scripts/http_test.py`;仅当漏洞更适合通过带外方式确认且无直接回显时,才使用 `{SKILL_ROOT}/scripts/dnslog.py`;确需测试 `ws/wss` 协议时才使用 `{SKILL_ROOT}/scripts/ws_test.py`
- 每个 Agent 只测试自身职责范围内的漏洞类型
- 每个 Agent 只能读取并回填自己的骨架文件 `{WORKSPACE_DIR}/findings/{agent_name}.json`,不得覆盖其他 Agent 的输出;骨架中的占位值必须被真实内容覆写,发现多个漏洞时需继续向 `findings` 追加对象
- 不得基于怀疑或假设创建漏洞条目;没有真实交互证据、状态差异、回显证据或 OOB 证据时,不得创建漏洞条目
- 对于成功利用并已确认的漏洞,Agent 必须在 `http_test_commands` 中至少记录 1 条可直接回放的 `http_test.py` 命令,且 `command` 字段中的脚本路径必须写成当前环境下的完整绝对路径,不得保留 `{SKILL_ROOT}` 占位符;`ws/wss` 类证据写入 `protocol_interactions` 与 `reproduction`
- 每个 Agent 回填说明性文本字段默认使用中文,但不得翻译路径、参数名、字段名、payload、状态码、URL 中的技术片段
- 主流程必须等待全部启用的渗透 Agent 执行完成,并确认findings 文件均已被真实回填,才能进入下阶段。

### Phase 5.5:攻击链分析(由 vuln-analysis-agent Agent 执行)

单站点目标场景下,主流程通过智能体平台提供的 Multi-Agent / Subagents 能力或等效工作流能力,创建一个 `vuln-analysis-agent` Agent(漏洞综合分析 Agent),执行 Phase 5.5 以及 Phase 5.6 步骤;当存在 2 个及以上 `--target-url` 时,可视为多站点目标场景,可跳过 Phase 5.5 和 Phase 5.6,直接进入 Phase 6。

`vuln-analysis-agent` Agent **必须完整读取** `{SKILL_ROOT}/references/sub_agents/vuln-analysis-agent.md`,并遵循其规范执行。

`vuln-analysis-agent` Agent 构建攻击链(以下攻击链仅作为示例):
- LFI + 文件上传 → RCE 链
- SSRF + Redis/FastCGI → RCE 链
- XSS + CSRF → 数据窃取链
- IDOR + Mass Assignment → 提权链
- 输出 `{WORKSPACE_DIR}/attack_chains.json`(严格按照格式规范填写)

### Phase 5.6:漏洞证据复查(由 vuln-analysis-agent Agent 继续执行)

⚠️ **强制规则:该步骤仅适用于单站点目标场景;多站点目标场景可跳过。**

`vuln-analysis-agent` Agent 必须:

1. **运行自动扫描**:`python {SKILL_ROOT}/scripts/verify_findings.py {WORKSPACE_DIR}`
   - 检查响应状态码(404/500 等异常)
   - 检查类型专属证据特征(SQLi 必须有 SQL 报错,XSS 必须有未转义 payload 等)
   - 检查响应体质量(空响应体、错误页面特征)
   - 只需输出 `verification.json`,不要修改其它文件

单站点目标场景下,主流程仅在 `vuln-analysis-agent` Agent 完成 Phase 5.5/5.6 后,方可进入 Phase 6;多站点目标场景下可直接进入 Phase 6。

### Phase 6:生成最终报告(主流程执行)
#### 步骤 1:使用 Python 脚本汇总 findings目录下所有 JSON 文件
当 Phase 5.6 漏洞证据复查结束后,或多站点目标场景跳过 Phase 5.5/5.6 后,必须使用 `{SKILL_ROOT}/scripts/generate_report.py` 汇总 `{WORKSPACE_DIR}/findings/*.json`生成`{WORKSPACE_DIR}/report_{timestamp}.json`(工作目录内的最终 JSON 报告)。

- 基本命令格式:python {SKILL_ROOT}/scripts/generate_report.py {WORKSPACE_DIR} --target-url <目标URL1> [--target-url <目标URL2> ...] [可选参数]
- 必需参数:
  - {WORKSPACE_DIR}:vibe-pentest 工作目录路径,脚本会在其中找 findings/ 子目录
  - --target-url:渗透测试的目标 URL,可重复传入;传入 2 个及以上时生成多站点目标报告
- 可选参数:
  - --tech-stack:识别到的技术栈列表,使用示例:--tech-stack Java Spring Boot MySQL,该值可参考`{WORKSPACE_DIR}/fingerprint.json`内容的`tech_stack`字段
  - --test-accounts:测试账户 JSON 数组,默认值为 [],当用户提供了测试账户时才需要使用此参数
- 示例:
```bash
  python {SKILL_ROOT}/scripts/generate_report.py {WORKSPACE_DIR} --target-url {base_url}
  python {SKILL_ROOT}/scripts/generate_report.py {WORKSPACE_DIR} --target-url {base_url} --tech-stack Java Spring Nginx MySQL
  python {SKILL_ROOT}/scripts/generate_report.py {WORKSPACE_DIR} --target-url {base_url1} --target-url {base_url2}
```

#### 步骤 2:翻译说明性内容并定向改写兜底建议
根据用户需求检查并翻译 `{WORKSPACE_DIR}/report_{timestamp}.json` 中的说明性文本字段:`vulnerabilities.RepairSuggestions`、`vulnerabilities.title`、`vulnerabilities.description`、`vulnerabilities.http_interactions[].label`。针对这些字段,需要额外执行一次说明性文本翻译,默认翻译为中文;但不得翻译路径、参数名、字段名、payload、状态码、URL 中的技术片段。

同时检查每个漏洞条目的 `repair_source` 字段:取值为 `context_rule` 或 `type_map` 时,表示该条目的 `RepairSuggestions` 是脚本通用兜底生成的模板文案,必须结合该条目的 `title`、`target_url`、`description`、`http_interactions` 将其改写为针对性整改建议(1-3 条,点明相关的具体参数、路径、组件与版本、技术栈);取值为 `agent` 的条目保持原样,不得改写。

#### 步骤 3:使用 Python 脚本生成最终 HTML 和 Word 报告

基于步骤 1 生成的 `{WORKSPACE_DIR}/report_{timestamp}.json`,主流程调用对应的 Python 脚本生成最终 HTML 和 Word 报告。

示例:
```bash
python {SKILL_ROOT}/report_renderers/generate_html.py {WORKSPACE_DIR}/report_{timestamp}.json
python {SKILL_ROOT}/report_renderers/generate_word.py {WORKSPACE_DIR}/report_{timestamp}.json
```

说明:
- 执行命令后,报表会默认输出到 `{WORKSPACE_DIR}/report_result/` 目录。

## HTTP 发包工具(强制优先)

**主流程、所有渗透 Agent 的 http/https 请求强制优先使用 `{SKILL_ROOT}/scripts/http_test.py`。**

此工具是 vibe-pentest 技能的内置脚本,功能全面且专门为渗透测试场景优化,具备:“响应瘦身、编码守护、请求概览、命令回放”等。

开始使用工具前必须先读取:`{SKILL_ROOT}/references/http-test-usage.md`,后续优先复用已获取的用法信息,除非遇到新的场景或参数。

核心调用模板:

```bash
python {SKILL_ROOT}/scripts/http_test.py --url "<URL>" --method <METHOD> \
  --data '<PAYLOAD>' --headers '{"Key":"Val"}' --cookies "<COOKIE>" \
  --response-filter '<REGEX>' --response-filter-mode line \
  --response-max-lines 80 --show-command --show-summary --include-headers
```

## OOB/DNS 回调验证工具

**SSRF、盲 XXE、命令注入(盲)、SQL 盲注(OOB 外带)、JNDI 注入等无回显漏洞的 OOB 验证,必须使用 `{SKILL_ROOT}/scripts/dnslog.py`。**

此工具基于 dnslog.cn 实现 DNS 查询记录获取:

- **获取临时域名**:`python {SKILL_ROOT}/scripts/dnslog.py get_domain`
- **查询 DNS 记录**:`python {SKILL_ROOT}/scripts/dnslog.py get_records <域名> [等待秒数]`
- **判断标准**:`status` 为 `success` 且 `record_count` > 0 → 目标触发了 DNS 查询 → 漏洞 confirmed

## 安全规则

1. **严格限制目标域名**,不测试范围外的任何地址
2. **不执行破坏性操作**:不删除数据、不修改业务数据、不发起 DoS;禁止测试作用于生产数据或他人数据的 `delete`、`del`、`remove` 等可能删除数据的接口(包括空数组、不存在的 ID 等无害化探测),对自己创建的测试数据的删除、修改不受此限。
3. **遵循最小影响原则**:允许清理自己创建的测试数据;禁止破坏原始业务数据、他人数据、真实用户账号与会话
4. **速率控制**:请求间保持合理间隔,避免触发 WAF 或对服务造成影响;获得有效证据后停止不必要的重复利用、批量尝试和扩散操作

## 反幻觉规则

1. 只报告实际发送过请求并收到响应的漏洞
2. 每个漏洞必须有完整的交互证据(HTTP 类为 request + response;非 HTTP 协议类为 `protocol_interactions` 中的真实消息记录)
3. 置信度标记:`confirmed`(有证据)、`likely`(间接证据)、`potential`(疑似)
4. 没有证据时不创建漏洞条目;唯一例外(仅限 poc-agent):确认无法无害化验证而未发包的 POC,可作为低风险提醒条目写入(须 `severity: "low"`、`confidence: "potential"`、标题标注"未验证");其他 agent 不适用此例外,仍须在有真实证据后才能创建条目
5. 发现漏洞不等于完成测试;必须继续覆盖同类功能、相邻接口、同参数不同方法和认证态差异
6. 认证态对比不足、缺少对照请求或缺少真实 HTTP 证据时,不得标记为 `confirmed`

Files in this skill

  • README_EN.md17.5 KB
  • SKILL.md35.7 KB
  • config/http_test.json135 B
  • config/proxy_usage.md2.2 KB
  • pocs/POC_SEARCH_SOURCES_USER.md436 B
  • pocs/README.md16.7 KB
  • references/common-paths.md3.2 KB
  • references/dnslog-usage.md7.5 KB
  • references/http-test-usage.md13.6 KB
  • references/nuclei-templates-usage.md11.3 KB
  • references/product-default-credentials.md10.1 KB
  • references/report-json-format.md4.7 KB
  • references/top100-passwords.txt806 B
  • report_renderers/generate_word.py36.9 KB
  • scripts/admin_scanner.py40.5 KB
  • scripts/api_discovery.py85.5 KB
  • scripts/auto_update_skill.py12 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.