samklee1/web-pentest

GitHub: samklee1/web-pentest

一个在Kali Linux上通过Claude Code编排、遵循PTES并以双代理审查为保障的授权Web渗透测试框架。

Stars: 0 | Forks: 0

# web-pentest 一个实验性的 Claude Code 技能,能够在 Kali Linux 上协调经过授权的网络应用程序渗透测试。领队代理负责规划、分派和审查;Opus 子代理负责执行每一次扫描和利用。该方法论遵循 PTES,并具备难度感知规划(TDA/EGATS)、浏览器优先探索、两阶段审查代理、强制知识库更新,以及每个阶段转换时的硬停止检查点。 ## 该技能的作用 - **协调 5 个 PTES 阶段** — 规划、侦察、扫描、 exploitation(利用)、报告,各阶段之间必须经过测试者批准。 - **领队代理 / 子代理分离** — 领队代理不运行渗透测试工具。它负责评分发现(TDA/EGATS)、构建攻击树、分批次派遣子代理,并展示检查点。所有扫描和利用都在隔离的 Opus 子代理中运行。 - **两阶段审查模式** — 每个利用子代理之后都会跟随一个审查子代理,在结果合并到知识库之前进行验证。缺乏依据的声明会被拒绝。 - **浏览器优先** — Playwright / Chrome MCP 是每个阶段的主要工具,而非可选附加。JS 渲染的端点、认证流程和客户端逻辑都会被探索。 - **强制知识库** — `kb/` 目录跟踪状态、攻击树、指纹、凭证、端点、技术和决策。三级审计协议包含滚动、合并和阶段转换门。任何检查点的呈现都必须满足三级审计这一硬性前提。 - **自适应注入配方** — SQLi、XSS 及其他注入类别使用决策树(检测 → 指纹识别 → 选择载荷 → 升级),而非静态载荷列表。 - **两阶段报告** — `findings-compiler` 从知识库生成结构化 JSON;`report-writer` 从 JSON 和模板生成 `.docx`。从严重到信息级的所有发现都会出现在最终报告中。 ## 适用人群 - **运行在 Kali 上的 Claude Code 渗透测试人员**,希望拥有可审计、可协调的工作流程,而非一次性提示。 - **红队和应用安全工程师**,需要可重现的 engagement 结构、会话间保留知识库,并交付 polished 的 `.docx` 文件。 - **研究 LLM 驱动安全流程的实验者**,希望看到一个具备子代理协调、审查模式和上下文纪律的生产级示例。 本技能**不适用于**仅限网络渗透测试、恶意软件分析、逆向工程或 CTF。 ## 需求 - **操作系统:** Kali Linux(已测试)。其他基于 Debian 的发行版可能可用,但未经过测试。 - **Claude Code:** 需要具备 `opus` 模型别名的访问权限。 - **Root / sudo 权限:** 在 Kali 主机上安装脚本需要此权限。 - **推荐的 MCP 服务器:** - Burp Suite MCP(PortSwigger 官方) - Chrome MCP / Playwright - Shodan MCP(可选,用于被动侦察) - `references/tools/mcp-setup.md` 中列出的其他 MCP 服务器 该技能所需的所有 CLI 工具(Nmap、Nuclei、SQLMap、ffuf、Gobuster、Feroxbuster、WPScan、httpx、Dalfox、Arjun、Wafw00f 等)均由以下安装脚本完成安装。 ## 安装 ### 1. 克隆仓库 ``` git clone https://github.com/samklee1/web-pentest.git cd web-pentest ``` ### 2. 作为 Claude Code 技能安装 将该文件夹放置到 Claude Code 安装能够识别技能的目录中。若为项目级技能: ``` mkdir -p /path/to/your-project/.claude/skills cp -r . /path/to/your-project/.claude/skills/web-pentest ``` 若为全局用户级技能,请使用对应用户技能目录。 ### 3. 运行 Kali 工具安装 ``` sudo bash scripts/setup.sh ``` 此脚本按七个阶段安装: 1. 安装 apt 包(Nmap、Nikto、Hydra、SQLMap、WPScan、theHarvester、John、Hashcat、Commix 等) 2. 安装 SecLists 单词表到 `/opt/SecLists` 3. 安装 Go 工具(httpx、ffuf、Nuclei、Subfinder、Amass、Dalfox、Gobuster 等) 4. 安装 Python 工具(Arjun、Wafw00f、Wapiti、CMSeeK 等) 5. 准备 `rockyou.txt` 6. 配置环境变量(`$SECLISTS`、`$ROCKYOU`、`$GOPATH`)并添加到 `~/.bashrc` 和 `~/.zshrc` 7. 验证工具 重新加载 Shell:`source ~/.bashrc` ### 4. 安装钩子(推荐) 钩子会将领队代理的 Bash 命令和子代理的完成记录写入 engagement 日志以供审计。由于 Claude Code 的问题 #34692,无法捕获子代理的 Bash 日志;`actions-log.md` 是第 2–4 阶段的权威记录。 ``` # 在您的参与工作空间内 mkdir -p .claude/hooks cp /hooks/*.sh .claude/hooks/ cp /hooks/settings.json .claude/settings.json # or merge if you already have one chmod +x .claude/hooks/*.sh ``` 请阅读 `hooks/README.md` 了解钩子的完整作用与未覆盖范围。 ### 5. 连接 MCP 服务器 按照 `references/tools/mcp-setup.md` 配置 Burp Suite MCP、Chrome MCP / Playwright,如有需要还可配置 Shodan MCP 及其他服务。 ## 快速开始 1. 创建 engagement 工作区并初始化为 git 仓库(用于阶段边界快照): mkdir engagement-001-$(date +%Y%m%d) cd engagement-001-$(date +%Y%m%d) git init && git commit --allow-empty -m "engagement start" 2. 编写 `engagement-brief.md`,描述: - 目标组织与范围(包含范围内的主机、路径、功能) - 授权依据(员工渗透测试、已签署的工作说明书或漏洞赏金计划) - 凭证(如有提供) - 任何破坏性操作的限制 3. 在该目录中启动 Claude Code,并输入类似如下指令: 阅读 web-pentest 技能并针对 engagement-brief.md 中描述的目标启动授权渗透测试。 4. 领队代理将: - 读取 `SKILL.md` 与你的简报 - 运行第 1 阶段设置(工作区搭建、工具检查、钩子安装验证) - 展示**检查点 1** 并暂停,等待你明确的批准(`proceed`、`continue`、`approved`) - 在获得批准后继续执行第 2 → 5 阶段,每个阶段转换时都会暂停并等待你的批准 ## 仓库结构 ``` web-pentest/ ├── SKILL.md # Full architecture, phases, operational principles ├── CLAUDE.md # Quick-reference card for the lead agent ├── README.md # (this file) ├── LICENSE # MIT ├── scripts/ │ └── setup.sh # Kali tool installer (7 stages, idempotent) ├── hooks/ │ ├── README.md # What hooks capture and what they don't │ ├── settings.json # Claude Code hook configuration │ ├── log-bash.sh # PostToolUse Bash → engagement-log.md │ └── log-subagent.sh # SubagentStop → engagement-log.md └── references/ ├── checkpoint-protocol.md # Hard-stop gates at every phase transition ├── phase-cards/ # Per-phase quick cards (phase 1–5) ├── agent-tasks.md # Shared sub-agent prompt header ├── kb-schema.md # 10 KB files and their schemas ├── kb-enforcement.md # 3-level audit protocol ├── tda-egats.md # Difficulty-aware scoring ├── adaptive-playbooks.md # Phase-2 → Phase-3 adaptive routing ├── adaptive-tooling.md # Tool selection by target fingerprint ├── ptes-phases.md # Phase flow, merge rules, rate math ├── loop-detection.md # When sub-agents go in circles ├── failure-modes.md # MCP crashes, rate-limit escalation, etc. ├── online-research.md # web_search / web_fetch rules for sub-agents ├── report-template.md # findings.json schema + .docx structure ├── recipes/ │ ├── index.md │ ├── access-control.md │ ├── auth.md │ ├── business-logic.md │ ├── client-side.md │ ├── server-side.md │ ├── infrastructure.md │ ├── ai-llm.md # OWASP LLM Top 10 (web-testable) │ ├── email.md # Host header, SMTP, enumeration, mail.tm │ └── injection/ │ ├── sqli.md # Adaptive SQLi decision tree │ ├── xss.md # Adaptive XSS decision tree │ └── other.md # NoSQL, LDAP, XPath, SSTI, CMDi, etc. └── tools/ ├── wordlists.md ├── mcp-setup.md ├── phase2/ # One file per Phase-2 recon sub-agent ├── phase3/ # One file per Phase-3 scan sub-agent └── phase4/ # common.md + one file per exploit category ``` ## 配置选项 `SKILL.md` 顶部的 YAML 前置内容可在 `engagement-plan.md` 中针对每次 engagement 进行覆盖: | 设置项 | 默认值 | 用途 | |--------|--------|------| | `subagent_model` | `opus` | 子代理使用的模型别名 | | `max_subagent_prompt_tokens` | 50000 | 每个子代理注入提示的硬上限 | | `rate_limits.browser_agent_weight` | 10 | 浏览器代理在速率计算中权重为 10 | | `context_budget.enabled` | `false` | 启用后可在 token 限制下切换模式 | | `kb_update.verify_every_n_completions` | 3 | 滚动 KB 审计频率 | | `kb_update.level3_required_before_checkpoint` | `true` | 硬性前提;不要禁用 | | `checkpoints.mandatory` | `true` | 每个阶段转换时的硬性门控 | | `checkpoints.override_end_to_end_requests` | `true` | “端到端渗透测试”说法不会绕过检查点 | | `online_research.max_pct_of_agent_tokens` | 15 | 允许用于 `web_search` / `web_fetch` 的 token 比例上限 | ## 负责任使用 本技能会自动对在线 Web 应用程序执行进攻性操作。仅在获得书面授权的情况下使用: - **企业渗透测试人员**:通过公司安全计划记录的内部授权。 - **合同渗透测试人员**:签署的工作说明书(SOW)中明确了目标资产与测试窗口。 - **漏洞赏金研究员**:所测试的每个主机都在公开项目范围内。 技能的操作原则在多处强制执行此要求: - 超出范围的发现会被**记录但不会执行**。 - 破坏性利用(数据销毁、账户锁定、DoS)必须获得**针对每个具体利用的明确测试者授权、证明影响并具备回滚计划**,绝不会自主运行。 - 关键零日漏洞会暂停 engagement 并咨询测试者。 - 速率限制超过二级退避会触发暂停并提示。 - 第 4.5 阶段清理会移除 `kb/artifacts.md` 中的所有工件。 如果你不确定授权是否覆盖你即将执行的操作,请停止并询问。“我让一个技能执行了它”不是合法的法律辩护。 ## 设计理念与说明 - **领队代理协调;子代理执行** — 保持领队上下文精简,并将每次扫描/利用隔离在独立工作区中并通过审查门控。 - **检查点为硬性停止** — 这是最重要的操作规则。“端到端”等引导词明确不会绕过它们。 - **报告中包含所有发现** — 从严重到信息级。审查者在两个阶段(编译器 + 撰写器)捕获遗漏。 - **每个阶段都使用浏览器** — 许多 Web 行为(SPA 路由、DOM-XSS 汇点、客户端认证决策、认证流程)仅从 CLI 视角无法观察。 - **每个阶段至少执行 3 次** — 执行 → 差距检查 → 填补差距。 - **若未记录在日志中,则未发生** — 子代理的 `actions-log.md` 是第 2–4 阶段的真实来源。 - **自适应而非脚本化** — 注入配方是决策树,而非固定载荷列表。 ## 许可证 MIT ## 感谢 本技能建立在 PTES、OWASP(Top 10、ASVS、WSTG、LLM Top 10)、Kali 工具生态、PortSwigger Burp Suite MCP、Anthropic Claude Code 平台以及本技能所协调的众多开源扫描器之上。
标签:C2日志可视化, Chrome MCP, Claude Code, DocX报告, EGATS, KB, Lead代理, Playwright, PTES, Ruby, TDA, Web渗透, XSS, 三级审计, 两阶段审查, 发现评分, 合并审查, 子代理, 审查代理, 审计协议, 应用安全, 技能, 指纹识别, 授权测试, 攻击树, 日志审计, 注入决策树, 浏览器优先, 渗透测试流程, 滚动审查, 漏洞情报, 特征检测, 知识库, 硬停止检查点, 结构化JSON, 编排, 逆向工具, 阶段过渡, 隔离执行