enderphan94/pentest-kit
GitHub: enderphan94/pentest-kit
一个基于 Claude Code 的 AI 驱动渗透测试框架,通过 7 步自动化流水线与并行漏洞代理实现从发现到报告的全链路自动化。
Stars: 1 | Forks: 0
# pentest-kit
一个基于 Claude Code 构建的 AI 驱动渗透测试框架——9 项专业技能、7 个并行漏洞代理,以及一个 7 步自动化流水线,用于发现、扫描、验证、验证、关联并利用 Web 应用程序漏洞。
## 关键特性
- **7 步自动化流水线** — 一条命令(`./scan.sh -t https://target.com`)即可完成从侦察到最终报告的全部流程
- **7 个并行漏洞代理** — SQLi、XSS、SSRF、IDOR、CORS、密钥泄露、基础设施
- **独立验证代理** — 受到 Anthropic Mythos 方法论启发的无偏二次评审者
- **自反思循环** — 每个代理在报告前都会论证为何某发现可能是误报,并排除那些证据不成立的结论
- **狩猎记忆(Hunt Memory)** — 记录每个技术栈的成功模式,优先复用以往有效的策略
- **可报告性门控(Reportability Gate)** — 5 个问题过滤器在报告生成前排除误报
- **链式收益表** — 18 种已知高价值链式模式及其影响乘数(1x–5x)
- **CLI 参数** — `-t` 指定目标 URL,`-s` 指定严重性过滤,无需编辑 scope.txt 即可快速扫描
- **多目标支持** — 作用域文件或 `-t` 中使用逗号分隔的 URL 列表
- **跨平台支持** — macOS(ARM/Intel)与 Linux(Debian/Ubuntu/Fedora/Arch/Kali)
- **35+ 安全工具** — 由 `install.sh` 自动安装
- **超时保护** — 三层超时机制防止卡住工具阻塞流水线
- **独立 POC 生成器** — `poc-skill ESC-001` 可创建完整的利用包
## 目录
1. [需求](#requirements)
2. [安装](#installation)
3. [快速开始](#quick-start)
4. [自动化流水线](#automated-pipeline)
5. [技能概览](#skills-overview)
6. [狩猎记忆](#hunt-memory)
7. [项目结构](#project-structure)
8. [安全约束](#safety-constraints)
9. [故障排除](#troubleshooting)
10. [转换为 Claude Code 插件](#converting-to-a-claude-code-plugin)
## 需求
| 需求 | 说明 |
|---|---|
| **操作系统** | macOS 12+ 或 Linux(Ubuntu/Debian/Kali/Fedora/Arch) |
| **Claude Code CLI** | 必需 — 请从 https://docs.anthropic.com/en/docs/claude-code 安装 |
| **Claude 订阅** | **Pro**(最低)或 **Max**(推荐)— 详见下文 |
| **Git** | 用于克隆本仓库及 SecLists 词典 |
| **约 3 GB 磁盘空间** | 用于 SecLists 词典(约 2 GB)+ 工具二进制文件 |
### Claude Code CLI 安装
本工具完全通过 **Claude Code CLI**(`claude` 命令)运行。你必须先安装并登录才能使用 pentest-kit。
**安装 Claude Code CLI:**
```
# macOS / Linux
npm install -g @anthropic-ai/claude-code
# 验证
claude --version
```
**登录:**
```
claude login
```
这将在浏览器中打开以使用你的 Anthropic 账户进行身份验证。
### Claude 订阅层级
流水线使用 `claude -p`(非交互模式)顺序运行 7 个步骤。每个步骤都是一个完整的 Claude 会话。你的订阅层级决定可用模型与使用限制:
| 层级 | 可用模型 | 推荐用途 | 说明 |
|---|---|---|---|
| **免费** | Sonnet(受限) | 不推荐 | 使用上限过低,无法完成完整流水线 |
| **Pro**($20/月) | Sonnet、Haiku | 最低要求 | 适用于大多数扫描 |
| **Max**($100/月) | **Opus、Sonnet、Haiku** | **推荐** | Opus 更擅长漏洞分析与链式发现,1M 上下文支持大型目标 |
**为何推荐 Max:**
- **Opus** 在漏洞分析、链式发现与漏洞利用编写方面显著更强
- **1M 上下文窗口**(`opus[1m]`、`sonnet[1m]`)可处理大型攻击面而不被截断
- 更高的使用额度 — 7 步流水线在大型目标上可能消耗大量 Token
- 每次扫描可在 `scan.sh` 中按需选择模型
## 安装
```
# 1. 克隆仓库
git clone https://github.com/enderphan94/pentest-kit.git
cd pentest-kit
# 2. 运行安装程序(自动检测操作系统)
bash install.sh
# 3. 激活环境
source .pentestproject.env
# 4. 验证
bash install.sh --check
```
`install.sh` 将执行以下操作:
- 检测操作系统与包管理器(brew / apt / dnf / pacman)
- 安装系统依赖(Go、Python 3、curl、openssl、jq、coreutils)
- 通过 brew / `go install` / pip3 / cargo 安装 35+ 扫描工具
- 更新 nuclei 模板并安装 gf 漏洞模式
- 克隆 SecLists 词典(约 2 GB)
- 在 `.pentestproject.env` 中写入所有 PATH 导出
**安装选项:**
```
bash install.sh # full install — tools + wordlists
bash install.sh --check # dry-run: shows what is/isn't installed
bash install.sh --skip-wordlists # tools only, skip ~2 GB SecLists download
bash install.sh --skip-go-tools # skip Go tool installation
bash install.sh --web-only # skip recon/network and cloud/container tools
```
**API 密钥**(可选 — 增强侦察能力):
安装过程中会提示输入可选的 API 密钥。直接回车跳过即可:
| API | 用途 | 获取免费密钥 |
|---|---|---|
| AlienVault OTX | 被动 DNS + 威胁情报(subfinder 未覆盖的独特数据) | https://otx.alienvault.com/api |
密钥将保存在 `.api_keys`(权限 600,gitignore 忽略)。如需添加密钥,可重新运行 `bash install.sh`。
**设为永久配置(可选):**
```
# macOS (zsh)
echo 'source ~/pentest-kit/.pentestproject.env' >> ~/.zshrc
# Linux (bash)
echo 'source ~/pentest-kit/.pentestproject.env' >> ~/.bashrc
```
## 快速开始
### 选项 A:自动化流水线(推荐)
使用一条命令运行完整的 7 步流水线:
```
# 最快 — 通过 CLI 标志指定目标
./scan.sh -t https://target.com
# 带严重性过滤 — 仅关键和高危
./scan.sh -t https://target.com -s critical,high
# 多目标
./scan.sh -t https://app.example.com,https://api.example.com
# 或先配置 scope.txt
nano scope.txt # set TARGET_URL=https://target.com
./scan.sh
```
系统会提示你选择一个 Claude 模型:
```
Select Claude model for this scan:
1) sonnet — Fast, good for most scans (default)
2) opus — Most capable, best for complex targets
3) haiku — Fastest, lightweight scans
4) sonnet[1m] — Sonnet with 1M context window
5) opus[1m] — Opus with 1M context (maximum capability)
Choice [1-5, default=1]:
```
随后自动执行全部 7 步:
1. **stress-recon** — 枚举子域名、端点、URL 并进行技术指纹识别与云存储桶发现
2. **stress-scan** — 7 个并行漏洞代理(SQLi、XSS、SSRF、IDOR…)
3. **front-end-scan** — 前端专项( CSP 分析、JS 代码模式、原型污染、库 CVE 匹配、服务工作线程测试、混合内容检测)
4. **escalate-scan** — 验证发现结果、分配 CVSS 3.1 分数、按原始类型(读/写/认证/访问)打标签以用于链式分析
5. **validate-scan** — 独立无偏验证(采用 Anthropic Mythos 方法论)
6. **chain-scan** — 发现多漏洞攻击链
7. **exploit-scan** — 生成 POC 代码、攻击叙事并输出最终报告
输出文件:`reports/final/FINAL_REPORT_.md`
### 选项 B:与 Claude Code 交互
```
cd pentest-kit && claude
# 然后告诉 Claude 运行哪个技能:
# "运行 stress-recon"
# "运行 front-end-scan"
# "运行 stress-scan"
```
### 选项 C:直接执行脚本(无需 Claude)
```
source .pentestproject.env
bash skills/stress-scan/script/web_stress_chain.sh https://target.com
```
## 自动化流水线
### 流水线流程
```
Step 1 — stress-recon (asset discovery + URL pool building)
|
Step 2 — stress-scan (7 parallel vulnerability agents)
|
Step 3 — front-end-scan (client-side security specialist)
|
Step 4 — escalate-scan (verify findings + CVSS scoring)
|
Step 5 — validate-scan (independent bias-free validation)
|
Step 6 — chain-scan (multi-vulnerability chain discovery)
|
Step 7 — exploit-scan (POC code + attack narratives + final report)
```
### 使用方法
```
# 完整流水线 — 通过 CLI 指定目标
./scan.sh -t https://target.com
# 带严重性过滤
./scan.sh -t https://target.com -s critical,high
./scan.sh -t https://target.com -s critical,high,medium
# 直接指定模型(跳过提示)
./scan.sh -t https://target.com --model opus
# 从特定步骤恢复
./scan.sh --from-step 2
./scan.sh --from-step 4 --model opus
# 仅跳过侦察
./scan.sh --skip-recon
# 查看所有选项
./scan.sh --help
```
### CLI 参数
| 参数 | 简写 | 描述 | 示例 |
|---|---|---|---|
| `--target URL` | `-t` | 设置目标 URL(可覆盖 scope.txt) | `-t https://example.com` |
| `--severity LEVELS` | `-s` | 严重性过滤(默认全部) | `-s critical,high` |
| `--model MODEL` | | Claude 模型(默认:sonnet) | `--model opus` |
| `--from-step N` | | 从第 N 步开始(2–7) | `--from-step 4` |
| `--skip-recon` | | 跳过第 1 步(侦察已完成) | |
| `--help` | `-h` | 显示帮助 | |
### 严重性过滤
控制扫描与报告所关注的严重等级。设置后,仅识别、报告、关联并上报对应级别的发现。
```
# 仅关键和高危发现
./scan.sh -t https://target.com -s critical,high
# 关键、高危和中危
./scan.sh -t https://target.com -s critical,high,medium
# 所有严重级别(默认)
./scan.sh -t https://target.com
```
可用等级:`critical`、`high`、`medium、`low`、`info`
也可在 `scope.txt` 中持久化设置。CLI 参数 `-s` 会覆盖本次运行的配置文件值。
**可用模型:**
| 模型 | 适用场景 | 速度 |
|---|---|---|
| `sonnet` | 大多数扫描(默认) | 快速 |
| `opus` | 复杂目标、深度分析 | 较慢但能力最强 |
| `haiku` | 轻量/快速扫描 | 最快 |
| `sonnet[1m]` | 大攻击面 | 快速,1M 上下文 |
| `opus[1m]` | 最大能力 | 最慢,1M 上下文 |
### 配置
在项目根目录编辑 `scope.txt`,或使用 CLI 参数进行快速扫描。
```
# 单目标(或使用 -t 标志)
TARGET_URL=https://target.com
# 多目标(逗号分隔)
TARGET_URL=https://acn.com, https://sub.acn.com, https://sub2.acn.com
# 严重性过滤(或使用 -s 标志)
SEVERITY_FILTER=critical,high
# 范围外漏洞类别
OUT_OF_SCOPE_VULNS=brute-force, cors, clickjacking
# 可选
AUTH_HEADER=Authorization: Bearer eyJ...
API_BASE_PATH=/api/v2
MAX_REQUESTS=300
RATE_LIMIT_DELAY=1
DALFOX_ENABLED=false
```
所有功能模块均从此单一文件读取配置。请参考该文件了解所有可用字段。
### 超时设置
每个步骤与工具均支持可配置超时。默认值适用于大多数目标;如需调整,请在 `scope.txt` 中修改。
**流水线步骤超时(步骤自动终止时间):**
| 设置 | 默认 | 步骤 |
|---|---|---|
| `STEP_TIMEOUT_RECON` | 5400s(90 分钟) | stress-recon |
| `STEP_TIMEOUT_SCAN` | 3600s(60 分钟) | stress-scan |
| `STEP_TIMEOUT_FRONTEND` | 3600s(60 分钟) | front-end-scan |
| `STEP_TIMEOUT_ESCALATE` | 1800s(30 分钟) | escalate-scan |
| `STEP_TIMEOUT_VALIDATE` | 1200s(20 分钟) | validate-scan |
| `STEP_TIMEOUT_CHAIN` | 1800s(30 分钟) | chain-scan |
| `STEP_TIMEOUT_EXPLOIT` | 1800s(30 分钟) | exploit-scan |
**工具调用超时(单次调用最大执行时间):**
| 设置 | 默认 | 工具 |
|---|---|---|
| `TOOL_TIMEOUT_DNS` | 900s(15 分钟) | dnsx、puredns、amass |
| `TOOL_TIMEOUT_CRAWL` | 900s(15 分钟) | katana、gospider、hakrawler |
| `TOOL_TIMEOUT_FUZZ` | 600s(10 分钟) | ffuf、feroxbuster、gobuster |
| `TOOL_TIMEOUT_SCANNER` | 600s(10 分钟) | nuclei、dalfox、corsy |
| `TOOL_TIMEOUT_EXPLOIT` | 300s(5 分钟) | sqlmap、tplmap、smuggler |
| `TOOL_TIMEOUT_API` | 120s(2 分钟) | uncover、cloud_enum、OTX |
| `TOOL_TIMEOUT_CURL` | 10s | 单条 curl 请求 |
将任意值设为 `0` 可禁用该超时。在 macOS 上,`coreutils` 会自动安装以提供 `timeout` 命令。
## 技能概览
### `stress-recon`(步骤 1)
构建攻击面:子域名枚举、DNS 暴力破解、HTTP 探测、技术指纹识别、云存储桶发现、端点映射、URL 收集与目标排名。
**输出:** 三个 URL 池文件(`live_urls.txt`、`all_endpoints.txt`、`all_urls_final.txt`)+ 排名目标列表。
### `stress-scan`(步骤 2)
orchestrates 7 个并行漏洞代理,每个代理均内置 **自反思循环** — 在报告发现前,每个代理会论证为何某发现可能是误报,并在证据不足时将其丢弃:
| 代理 | 覆盖范围 | 工具 |
|---|---|---|
| 注入 | SQLi、SSTI、CRLF | sqlmap、tplmap、crlfuzz、nuclei |
| XSS | 反射型、存储型、DOM | dalfox、nuclei |
| SSRF + LFI | 服务器端请求伪造、路径遍历 | nuclei、interactsh |
| 认证 | IDOR、速率限制、JWT | jwt_tool、curl 探测 |
| 误配置 | CORS、HTTP 头、403 绕过 | corsy、GoBypass403 |
| 密钥泄露 | JS/HTML 密钥、错误信息泄露 | trufflehog、jsluice |
| 基础设施 | 子域名接管、 smuggling、云服务 | nuclei、smuggler |
每个代理在报告前都会通过 curl 自行验证发现。验证通过的发现将被记录到 `memory/patterns.jsonl` — **狩猎记忆**,帮助后续扫描优先选择已验证有效的策略。
### `front-end-scan`(步骤 3)
客户端专项扫描:XSS 反射上下文映射、CSP 专家分析、危险 JS 模式(eval、innerHTML、原型污染)、库 CVE 匹配、服务工作线程分析、认证登录流程测试、混合内容检测。
### `escalate-scan`(步骤 4)
验证步骤 2–3 的所有发现,过滤误报,并通过 **5 个问题报告性门控**(影响是否真实?是否可利用?是否新颖?是否在范围内?是否达到严重等级?)分配 CVSS 3.1 分数,按原始类型(读/写/认证/访问)打标签以支持链式分析。自动拒绝常见误报模式(如 JSON API 缺少响应头、自身 XSS、版本信息泄露)。强制执行 **证据类型分类** — 仅 `exploitation` 证据可被验证,`code_analysis` 与 `inferred` 证据上限严格。
### `validate-scan`(步骤 5)
受 Anthropic Mythos 二次评审方法论启发的不带偏见独立验证代理。对每个发现进行全新上下文审查(不依赖原始扫描数据 — 避免确认偏差):
1. **证据完整性** — 所有必需字段是否存在且有意义?
2. **证据-声明一致性** — 证据是否真正支持标题所声称的内容?
3. **自反思挑战** — 论证为何该发现可能是误报,并检查证据是否反驳该质疑
4. **资深渗透测试员检验** — “资深渗透测试员会接受这个吗?”
5. **裁定** — 确认、降权严重性或完全丢弃该发现
同时检查假阴性(即被错误拒绝的发现)。
### `chain-scan`(步骤 6)
发现多漏洞攻击链:
- 8 种已知链式模式(跨站请求伪造 + Token、XSS + Cookie、SSRF + 元数据…)
- **18 种模式收益表**,含影响乘数(1x–5x)— 优先排序历史上产生过 Critical 发现的链(如 OAuth 令牌窃取、云凭证链、支付绕过、SSTI 到 RCE)
- 所有发现对的读写原语评分
- 认证绕过 + 特权端点链
- 凭据泄露 + 云基础设施横向移动链
- 三发现 Kill Chain
- **硬置信度上限** — 未验证发现置信度上限为 2,理论链仅放入附录
### `exploit-scan`(步骤 7)
为每个 Critical/High 发现生成 POC 代码,撰写完整攻击叙事(采用 Mythos 方法),并输出最终报告。
### `server-scan`(独立)
基础设施级评估:端口扫描、TLS/SSL、服务指纹识别、协议特定检查(SSH、FTP、SMTP、SNMP、SMB)。独立于流水线运行。
### `poc-skill`(独立)
针对特定发现的深度 POC 生成器。流水线结束后可用于创建单个发现的完整利用包:
```
# 在 Claude Code 中:
poc-skill ESC-001
poc-skill CHAIN-002
poc-skill ST-003 FE-005 # multiple findings
```
对每个发现生成:
- `README.md` — 安装说明 + 逐步复现指南
- `exploit.` — 可工作的漏洞利用脚本(Python/HTML/Bash)
- `payloads.txt` — 绕过 WAF 的载荷变体
- `evidence/` — 扫描得到的原始请求/响应
输出路径:`assets/poc_/`
## 狩猎记忆(Hunt Memory)
框架在 `memory/patterns.jsonl` 中维护持久的模式数据库,从每次扫描中学习。
**工作机制:**
1. stress-scan 验证发现后,将模式(技术栈、漏洞类别、参数、路径记录到 `patterns.jsonl`
2. 下次扫描时,stress-scan 加载与目标技术栈匹配的已有模式
3. 与历史成功模式匹配的 URL 将被提升至优先级 5(最高)
4. `found_count >= 3` 的模式被视为可靠并获得强优先
**示例条目:**
```
{"tech":"rails","vuln_class":"idor","param":"id","path_pattern":"/api/*/users","severity":"High","found_count":3,"last_seen":"2026-04-11"}
```
这意味着:“第三次扫描 Rails 应用时,工具已经知道对 `/api/*/users` 使用 `id` 参数的 IDOR 此前有效 — 优先测试该路径。”
该记忆文件被 gitignore 忽略(每操作员独立数据),但在同一设备上跨扫描持久化。
## 项目结构
```
pentest-kit/
├── install.sh <- OS-aware installer (macOS + Linux)
├── scan.sh <- 7-step automated pipeline
├── scope.txt <- unified target configuration
├── .pentestproject.env <- auto-generated by install.sh (gitignored)
├── README.md
│
├── skills/
│ ├── stress-recon/ <- Step 1: asset discovery
│ │ └── SKILL.md
│ ├── stress-scan/ <- Step 2: 7 parallel vuln agents
│ │ ├── SKILL.md
│ │ └── script/
│ │ ├── env_setup.sh <- cross-platform environment loader
│ │ ├── web_stress_chain.sh <- standalone automation chain
│ │ └── endpoint_enum.py
│ ├── front-end-scan/ <- Step 3: client-side specialist
│ │ ├── SKILL.md
│ │ └── script/
│ ├── escalate-scan/ <- Step 4: verify + CVSS
│ │ ├── SKILL.md
│ │ └── script/
│ ├── validate-scan/ <- Step 5: independent validation
│ │ └── SKILL.md
│ ├── chain-scan/ <- Step 6: attack chain discovery
│ │ └── SKILL.md
│ ├── exploit-scan/ <- Step 7: POC + final report
│ │ └── SKILL.md
│ ├── poc-skill/ <- standalone: deep-dive POC generator
│ │ └── SKILL.md
│ └── server-scan/ <- standalone infrastructure scan
│ ├── SKILL.md
│ └── script/
│
├── reports/ <- scan output (gitignored)
│ ├── assets/ <- raw scan data per engagement
│ └── final/ <- final reports
│
├── templates/
│ ├── report_schema.json <- JSON schema for reports
│ └── report_template.md <- Markdown template
│
├── memory/
│ └── patterns.jsonl <- hunt memory (gitignored, grows per scan)
│
├── tests/
│ └── run_tests.sh <- test suite (134 tests)
│
├── wordlists/ <- SecLists (gitignored, ~2 GB)
└── tools/ <- cloned tool repos (gitignored)
```
## 安全约束
所有技能均为 **只读与非破坏性**:
| 禁止行为 | 原因 |
|---|---|
| 对目标执行 `PUT` / `DELETE` / `PATCH` | 可能修改目标状态 |
| 凭据暴力破解 | 最多仅 3 次探测用于速率限制检查 |
| 实时 CVE 利用 | 仅文档化 — 绝不实际利用 |
| 提交 XSS/SQLi 载荷 | POC 代码仅本地写入,绝不发送 |
| 超出定义的作用域 | 防止范围蔓延 |
| 云对象删除/上传 | 仅记录 HTTP 状态码 |
| JWT 令牌伪造 | 仅分析 |
所有 POC 代码保存至本地 `assets/` 目录并明确标注“LOCAL ONLY”。
## 故障排除
### 安装后找不到工具
```
# 重新激活环境
source .pentestproject.env
# 检查缺失内容
bash install.sh --check
```
### macOS 上提示 `timeout: command not found`
```
brew install coreutils
# install.sh 会自动执行 — 如需要请重新运行
```
### DNS 暴力破解卡住(针对 Cloudflare/WAF 目标)
流水线在所有 DNS 工具上内置了超时保护。若 DNS 解析缓慢,目标很可能在 Cloudflare 后面。`timeout 15m` 包装器会自动杀死卡住的进程。
### `gf` 模式不工作
```
ls ~/.gf/ # should contain *.json files
# 如果为空:
git clone https://github.com/1ndianl33t/Gf-Patterns /tmp/gf-patterns
cp /tmp/gf-patterns/*.json ~/.gf/
```
### 权限被拒绝
```
chmod +x install.sh scan.sh
chmod +x skills/stress-scan/script/web_stress_chain.sh
```
### 流水线步骤超时
各步骤内置超时(侦察 90 分钟、扫描 60 分钟、分析 30 分钟)。若某步骤超时,流水线将继续并输出部分结果。可从下一步骤恢复:
```
./scan.sh --from-step 3
```
## 转换为 Claude Code 插件
每个技能均可作为 Claude Code 插件安装,以便在任何项目中使用:
```
# 全局安装所有技能
cp -r skills/. ~/.claude/skills/
# 或安装单个技能
cp -r skills/stress-scan ~/.claude/skills/stress-scan
```
若团队分发,请共享本仓库地址。每位成员只需运行一次 `install.sh`。
标签:18种链模式, 35+安全工具, 7步流程, AI 渗透, Claude Code, CLI 工具, CORS, Cutter, IDOR, Maven, POC 生成, SEO: Claude 插件, SEO: Web 安全测试, SEO: 人工智能渗透测试, SEO: 自动化漏洞扫描, SSRF, Web 漏洞扫描, XSS, 优先级排序, 多目标扫描, 并行代理, 应用安全, 报告过滤, 日志审计, 漏洞情报, 漏洞链, 漏洞验证, 猎记忆, 自动化侦察, 自动化渗透, 自反思机制, 逆向工具