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, 优先级排序, 多目标扫描, 并行代理, 应用安全, 报告过滤, 日志审计, 漏洞情报, 漏洞链, 漏洞验证, 猎记忆, 自动化侦察, 自动化渗透, 自反思机制, 逆向工具