mcpField
P
pentest

pentest

github.com/wyattowalsh安全544 次安装8 周前更新
代码仓库

关于 pentest

Pentest 是用于规划和报告授权渗透测试的技能,要求依据已签署的 ROE 执行范围检查。它帮助安全人员生成分阶段检查清单和结构化发现项;只规划测试,不执行攻击。

主要功能

  1. 01失败即拒绝的授权与范围检查
  2. 02按阶段组织的测试手册
  3. 03信号到方法论的分流
  4. 04结构化发现项验证与报告
  5. 05只读环境和策略检查

适用场景

  1. 01规划已授权的 Web 或 API 测试
  2. 02将问题信号分流到测试手册
  3. 03按 Schema 验证发现项
  4. 04汇总参与测试的发现并生成报告

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/wyattowalsh/agents --skill pentest

安装后在 Claude Code 中输入/pentest确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

evals/
evals.json
references/
external-runners.md
external-skill-index.manifest.json
findings-schema.md
methodology-router.md
osint.md
references/playbooks/
api-authz.md
api-graphql.md
api.md
binary-mobile.md
binary.md
blockchain.md
cloud-iam.md
cloud.md
internal.md
llm-prompt.md
llm.md
mobile-static.md
mobile.md
network-services.md
network.md
osint-corporate.md
osint.md
post-exploit.md
recon.md
report.md
web-auth.md
web-injection.md
web.md
wireless.md

详细介绍

渗透测试

用于授权攻防安全测试的综合技能。生成受范围门控的计划、检查清单和结构化发现——绝不提供随附的 C2、Webshell,也不执行自主漏洞利用。

**范围:**预先授权的渗透测试方法与报告。不适用于未授权测试、恶意软件/C2 操作、部署前静态审计(security-scanner),或仅限合成环境的 CTF 谜题(ctf-*)。

标准术语

术语定义
ROERules of Engagement(交战规则)——签署的授权文件,定义目标、日期、联系人及禁止操作
scope gate任何侦察、Web、API 或 OSINT 攻防规划前,都必须通过 scope_check.py 检查
target签署的 ROE 中明确列出的主机、URL、CIDR 或应用
phasescripts/phases.py 中的测试阶段——每个阶段都需要通过有效的范围门控
triage通过 methodology-router.md 将信号路由到标准操作手册,以及可选的外部技能
external index通过清单和 lookup_external_slug.py 实现的规划锁 pentest-external-skill-index.json
finding对疑似问题的结构化 JSON 记录,包含严重程度、证据和修复建议
playbook从 references/playbooks/ 加载的检查清单式方法——仅用于规划
synthesisAgent 根据参考资料和操作人员提供的上下文编写并整理出的计划/检查清单/报告
external runner可选的第三方 CLI(例如 Strix),由操作人员手动运行——此技能不会安装或调用攻击工具
fail-closed当范围缺失、已过期或目标超出范围时,拒绝所有攻防规划

层级边界

层级技能使用场景需要 ROE执行攻击
静态审计security-scanner部署前 SAST、密钥、依赖项和合规性启发式检查否否——只读代码扫描
授权渗透测试pentest(本技能)签署委托范围内的在线应用/API是否——仅提供规划/检查清单;由操作人员运行获批的工具
CTF / 实验室ctf-*隔离的挑战靶场、训练用标志、合成漏洞实验室否(改为遵循实验室政策)仅限指定的实验室范围

重定向规则:

  • “在合并前扫描我的代码仓库,查找密钥/CVE” → security-scanner
  • “未经许可入侵这个网站” → 拒绝——没有 ROE,不提供规划
  • “解出这个 HTB/CTF 靶场” → ctf-* 技能——不是生产环境渗透测试
  • “我们已为 staging.example.com 签署 ROE” → 通过范围门控后使用 pentest

范围门控(必需)

在进行侦察、Web、API、OSINT或任何扩展阶段模式(network、cloud、mobile、wireless、llm、internal、binary、blockchain、post-exploit)之前:

  1. 向操作人员获取 --target、--roe-file 和请求的 --phase。
  2. 运行:
uv run python scripts/scope_check.py \
  --target "<host-or-url>" \
  --roe-file "<path-to-roe.json>" \
  --phase "<mode>"
  1. 解析 JSON 标准输出。如果 ok 为 false 或退出代码非零 → 停止。提供 deny_reason,并加载 references/scope-and-roe.md 以了解如何修复。
  2. 在会话记录中记录范围结果中的 engagement_id、phase 和 allowed_phases。
  3. 在当前会话中通过范围门控之前,绝不继续使用操作手册、外部运行器或听起来像攻击的命令。

范围请求为空或不完整(有目标但没有 ROE、有 ROE 但没有目标、ROE 已过期、主机超出范围)时,将以 fail-closed 方式拒绝。

Dispatch

$ARGUMENTS模式操作
doctordoctor运行 scripts/doctor.py — 检查技能资产和策略就绪情况
scope <target>scope使用 --roe-file、--target 和 --phase 运行 scripts/scope_check.py;受 ROE 限制时回显 restricted_phases
triage <signal>triage加载 references/methodology-router.md;将信号映射到操作手册 + 外部 slug
recon <target>recon范围门控 → references/playbooks/recon.md
web <target>web范围门控 → references/playbooks/web.md(按需加载注入/身份验证操作手册)
api <target>api范围门控 → references/playbooks/api.md
osint <target>osint范围门控 → references/playbooks/osint.md(按 ROE 仅进行被动操作)
network <target>network范围门控 → references/playbooks/network.md
cloud <target>cloud范围门控 → references/playbooks/cloud.md
mobile <target>mobile范围门控 → references/playbooks/mobile.md
wireless <target>wireless范围门控 → references/playbooks/wireless.md(需明确的 ROE)
llm <target>llm范围门控 → references/playbooks/llm.md
internal <target>internal范围门控 → references/playbooks/internal.md
binary <target>binary范围门控 → references/playbooks/binary.md
blockchain <target>blockchain范围门控 → references/playbooks/blockchain.md
post-exploit <target>post-exploit范围门控 → references/playbooks/post-exploit.md(仅限 ROE 明确授权)
validatevalidate运行 scripts/check.py;根据 schema 验证 findings JSON
reportreport按 scripts/findings_emit.py 的模式汇总会话发现
help 或 (empty)help显示模式、范围门控、层级边界和参考索引
未识别—请求澄清;不要假定已获授权

模式:doctor

只读环境和策略检查。不会执行攻击操作。

  1. 运行:uv run python scripts/doctor.py --format json
  2. 如果技能是全局安装的,请将 WAGENTS_REPO_ROOT 设置为 agents 克隆目录,以便 repo-root 和锁定索引检查能解析 planning/research-lock/。
  3. 按 ok、warn、fail 分组展示检查结果。
  4. 如果 forbidden-tooling 为 fail,则停止 — 操作人员从请求中移除 C2/webshell 引用之前,不得在此次测试中使用该技能。
  5. 仅在操作人员询问可选 CLI 时,才加载 references/external-runners.md。

模式:scope

在任何其他攻击模式前验证授权。

  1. 要求提供 --target、--roe-file 和 --phase。如果缺少任何一项,不带这些参数运行 scope_check.py,以生成 deny JSON 并说明必需字段。
  2. 通过时:汇总 engagement_id、phase、allowed_phases、restricted_phases、 expires_at 和范围内目标匹配情况。
  3. 未通过时:引用 deny_reason;不要加载操作手册。

模式:triage

在不加载所有上游仓库的情况下确定方法深度。

  1. 从 $ARGUMENTS 解析信号(例如 sqli、xss、kerberos、llm-injection)。
  2. 加载 references/methodology-router.md — 从去重表中解析规范 slug。
  3. 加载匹配的 references/playbooks/*.md 章节(一次一个文件)。
  4. 仅在操作人员要求查看更深入的上游内容时,才通过 scripts/lookup_external_slug.py 提供 install_command。
  5. 隔离: EXT-084 条目仅供检查 — 绝不自动安装。

模式:recon

授权后仅进行攻击面规划。

  1. 通过范围门控(参见“范围门控”)。
  2. 确认范围结果中的 allowed_phases 包含 recon。
  3. 加载 references/playbooks/recon.md(被动操作时也加载 references/osint.md)。
  4. 制定分阶段计划:资产清单假设、DNS/WHOIS/证书调查方向、 技术指纹识别命令,供操作人员运行 — 不要通过此技能的脚本运行这些命令。
  5. 仅在操作人员提供证据后,才将计划检查点作为草稿发现输出。

模式:web

仅进行 Web 应用测试规划。

  1. 通过范围门控;确认 allowed_phases 中包含 web。
  2. 一次加载 references/playbooks/web.md 的一个章节。
  3. 构建按优先级排列、映射到 OWASP 类别的测试清单——技能脚本不得执行任何漏洞利用载荷。
  4. 对于操作员报告的每个已确认问题,通过 findings_emit.py 输出(将发现结果关联到项目时,传入当前范围门控结果中的 --scope-json)。

模式:api

仅进行 API 安全测试规划。

  1. 通过范围门控;确认 allowed_phases 中包含 api。
  2. 加载 references/playbooks/api.md。
  3. 制定身份验证/授权、输入验证、速率限制和 BOLA 测试矩阵。
  4. 为操作员提供 OpenAPI/GraphQL 发现步骤;不得从捆绑脚本调用线上目标。

模式:osint

仅进行被动开源情报规划。

  1. 通过范围门控;确认 allowed_phases 中包含 osint。
  2. 加载 references/osint.md。
  3. 遵守 ROE 中的 prohibited_actions——不得进行社会工程、骚扰或收集范围外的第三方数据。
  4. 为操作员提供来源列表、查询模板和验证步骤。

模式:post-exploit

仅在 ROE 明确允许时进行后渗透规划。

  1. 通过范围门控;确认 allowed_phases 中包含 post-exploit(参见范围 JSON 中的 restricted_phases)。
  2. 加载 references/playbooks/post-exploit.md。
  3. 制定兼顾遏制措施的持久化/横向移动规划矩阵——不得提供 C2 安装命令或植入程序,也不得从捆绑脚本执行线上利用。
  4. 拒绝安装 C2/Havoc/Sliver/Cobalt Strike 技能;仅提供上游参考资料,不执行操作。

模式:validate

确定性技能和发现结果验证。

  1. 运行:uv run python scripts/check.py
  2. 如需验证临时发现结果 JSON,请对照 references/findings-schema.md。
  3. 报告验证状态;不得修改 ROE 或目标。

模式:report

综合生成会话报告。

  1. 收集项目期间输出的发现结果(JSON 行或数组)。
  2. 对照 references/findings-schema.md 验证每条记录。
  3. 按严重性分组;包含范围元数据(engagement_id、target、ROE 哈希)。
  4. 规范化操作员提供的笔记时,使用 scripts/findings_emit.py --aggregate。
  5. 执行摘要必须说明授权依据,并确认已遵守禁止操作。

模式:help

  1. 显示调度表、范围门控步骤和层级边界表。
  2. 列出参考文件及其读取时机说明。
  3. 提醒:此技能不会安装 Strix 或其他运行器——参见 references/external-runners.md。
帮助 (空)

显示调度表、范围门控步骤、层级边界和参考索引。提供示例:

/pentest help
/pentest doctor
/pentest scope staging.example.com
/pentest recon staging.example.com
/pentest web https://staging.example.com/app
/pentest api https://staging.example.com/api
/pentest osint staging.example.com
/pentest validate
/pentest report

参考文件索引

一次只加载一个参考文件。不要预加载所有参考文件。

文件内容读取时机
references/scope-and-roe.mdROE 格式、范围门控策略、拒绝原因范围被拒绝或有 ROE 相关问题时
references/findings-schema.mdJSON 发现结果字段和严重性规则输出或验证发现结果时
references/methodology-router.md精简的信号 → 测试手册 → slug 路由执行 triage 或深度路由时
references/external-skill-index.manifest.json指向规划锁定的完整索引操作员请求上游正文时
references/playbooks/*.md阶段和技术检查清单(22 个文件)通过范围门控后,加载对应阶段的文件
references/osint.md被动 OSINT 模板(旧版索引)通过范围门控后执行 recon 或 osint 时
references/provenance.md综合来源、混合仓库、无 C2 策略有方法论相关问题或需要审计跟踪时
references/external-runners.md可选的外部 CLI(如 Strix)——不安装操作员询问工具时

脚本

脚本运行时机
scripts/phases.pyVALID_PHASES 的单一事实来源(由 scope/findings 导入)
scripts/scope_check.py制定攻击计划前始终运行——没有 ROE 时默认拒绝
scripts/doctor.pydoctor 模式或参与测试前的就绪检查
scripts/findings_emit.py输出或汇总结构化 findings JSON(架构 v1.1)
scripts/lookup_external_slug.py从规划锁定文件中解析信号/slug 安装元数据
scripts/validate_external_index.py维护者检查规划锁定索引策略
scripts/check.pyvalidate 模式或 CI/技能维护

关键规则

  1. 先通过范围检查——未通过 scope_check.py,不得规划侦察、web、api 或 osint
  2. 默认拒绝——缺少 --target 或 --roe-file 时立即拒绝
  3. 脚本不执行攻击——捆绑的 Python 仅用于规划、验证和处理 JSON
  4. 不打包 C2 或 webshell——拒绝有关植入程序、反向 shell 或恶意软件投放的请求
  5. 不得进行未经授权的测试——没有已签署的 ROE 时,转向 security-scanner(静态扫描)或拒绝
  6. CTF 不等同于渗透测试——将合成实验室工作转向 ctf-* 技能
  7. 仅使用操作人员运行的工具——为操作人员提供命令;技能脚本不会探测目标
  8. 遵守 ROE 阶段限制——当阶段不在 allowed_phases 中时,拒绝提供操作手册
  9. 遵守 prohibited_actions——在被禁止时,不得进行 DOS、社会工程或生产数据外泄
  10. 结构化 findings——使用 findings_emit.py 和 references/findings-schema.md
  11. 每次只加载一份参考资料——渐进式披露
  12. 先展示计划,再提供详细清单——对侵入性操作步骤设置审批关卡
  13. 绝不存储有效凭据——在 findings 和报告中对密钥脱敏
  14. 外部运行器为可选项——在 external-runners.md 中记录;绝不自动安装 Strix
  15. ROE 只读——脚本会验证 ROE 文件,但不会创建或修改授权

评论

支持 Markdown