Imported from wudidike/pentest_skill (
SKILL.md). Install upstream withnpx skills add wudidike/pentest_skill. Copyright stays with the author.
Pentest Skill — 实战漏洞挖掘工作流
这是一个带强制 checkpoint 的工作流,不是参考手册。每个阶段有 MUST 输出,未通过不进下一阶段。详细 payload / playbook / H1 案例按需 Read,不准凭记忆生成。
数据规模、目录树见 README.md,本文件只管"做什么 / 何时做 / 何时去读哪个文件"。
触发条件
命中任一即进入:
- "src 挖洞 / 漏洞赏金 / bug bounty / 众测 / hackerone / Security Response Center"
- "如何挖 / 怎么测 / 怎么打 + 某目标 / 某接口 / 某参数"
- "WAF 绕过 / 任意账号 / 任意修改 / 密码重置 / 未授权访问 / 默认凭据"
- "渗透测试 / pentest / 安全扫描 / 漏洞验证"
- 用户给一个 URL / API endpoint / APK 让你测
不应触发:纯白盒源码审计;漏洞修复问答;CTF。
反幻觉硬约束(全程适用)
- 不准凭记忆出 payload。要给任何 payload 前,先 Read 对应
references/playbooks/<type>.md(或<type>/00-index.md+ 具体子文件)。payload 必须能在文件里查到出处。 - 不准编造案例编号。引用 H1 案例前必须 Read
references/h1-reports/by-weakness/下的实际文件。说不出文件路径就别引。 - 无证据不下结论。无 HTTP 包/截图时只能写"待验证",不写"已确认 / 发现漏洞"。
- 出 scope 立即停。资产不在 Phase 1 已确认的 in-scope → 立即停手,回 Phase 1 重核。
- 差分证明。盲注要真/假/baseline 三包;IDOR 要自己200+他人200+不存在404。
- 合规红线。SQLi 探到库名即停;IDOR 取1-3条样本;RCE 只跑 id/whoami;不真发短信/扣款。详见
references/compliance.md。 - 报告必须含 PoC,双格式。每个 finding 必须附可执行 PoC,且必须同时给两种格式:
- curl 格式: 单条
curl命令,复制到终端直接执行即可复现 (含完整 URL/Header/Body/参数) - Burp 格式: HTTP 原始请求报文 (请求行+头+空行+Body),复制粘贴到 Burp Repeater 即可发送
- 给不出 PoC 的 finding 不得写入报告 — 要么补证据,要么降级为"待验证"。
- curl 格式: 单条
Phase 1 · Intake(接单)
进入条件:用户首次给出目标 / 程序名 / URL。
MUST 输出 checkpoint(四项缺一不进 Phase 2):
- In-scope:可测域名 / IP 段 / app / endpoint(逐条列)
- Out-of-scope:禁测项(逐条列)
- 规则:payout tier / disclosure window / safe-harbor / 测试 header
- 时间盒:6h / 单日 / HVV / 月度
确认后写入 config.yaml 的 target.scope。越界急停:任何 Phase 中发现资产不在 in_scope → 立即停。
仅当用户问"哪个最值得先测" → Read references/methodology/05-srctimebox-priority.md。
Phase 2 · Recon(被动侦察)
进入条件:Phase 1 checkpoint 四项全过。禁止主动发包。
MUST 输出:不发包得到的资产清单 + 历史信息,来源 ≥3 种(CT日志/Wayback/GitHub dorks/FOFA/Shodan/SecurityTrails/ASN)。
Phase 3 · Enum(主动探测)
进入条件:Phase 2 资产清单非空。
MUST 输出:活资产矩阵——域 → 端口 → 服务 → 指纹 → JS endpoint。
自动化工具(按需调用,非自动管道):
- 指纹/WAF:
python scripts/phase0_fingerprint.py --target URL --output-dir DIR - 页面渲染/JS提取:
python scripts/phase4_render.py --target URL --output-dir DIR - 目录枚举:
python scripts/phase5_dir_enum.py --target URL --output-dir DIR - JS深度分析:
python scripts/phase6_js_analysis.py --target URL --output-dir DIR - 工具状态:
python scripts/tool_manager.py status
条件触发 Read(命中就必读):
| 命中信号 | MUST Read |
|---|---|
指纹含 weaver/seeyon/tongda/landray/yongyou/kingdee/hikvision/dahua |
references/dictionaries/chinese-srcfingerprints.md + default-credentials-cn.md |
| 资产含 银行/支付/网银 | references/industry/banking-finance.md |
| 资产含 运营商/BOSS/网管 | references/industry/telecom-isp.md |
方法论 Checkpoint(每次必走,不进 Phase 4 不得跳过):
- Read
references/methodology/01-attack-priority.md(攻击优先级) - 按 §9 Checkpoint 输出攻击面优先级清单:候选攻击面四维评分 + P0/P1 排序 + 升级链 + 对应探针
- 时间盒明确时,额外 Read
references/methodology/05-srctimebox-priority.md按 §6 输出时间盒计划 - 读完后把优先级清单作为 Phase 4 的候选目标顺序
Phase 4 · Hunt(漏洞探测)
进入条件:Phase 3 矩阵 ≥1 个候选目标。
强制流程(每个候选目标走一遍):
- 看目标信号,从下表选 playbook
- Read 该 playbook(不准跳过、不准凭记忆替代)
- 按 playbook 的参数频率表挑入口
- 按 playbook 的 payload 库探测——payload 来自文件,不来自记忆
- 被 WAF 拦 → Read
references/methodology/02-bypass-toolkit.md并按 §Checkpoint 输出绕过记录 - 卡壳/找不到漏洞点 → Read
references/methodology/04-control-gap-hunting.md并按 §Checkpoint 输出控制缺口清单 - 命中后保存 HTTP 包, Read
references/methodology/03-evidence-discipline.md按 §Checkpoint 核对证据(三包/原貌/复现率) → 进 Phase 5
| 入口信号 | MUST Read | 自动化脚本(按需) |
|---|---|---|
| Actuator/Swagger/弱密码 | playbooks/unauth-access.md |
— |
| .git/.svn/.env/heapdump | playbooks/info-disclosure.md |
— |
| ID 可遍历/任意X越权 | playbooks/arbitrary-x-authz.md |
phase7b_auth_vuln.py |
| 密码重置/支付/验证码 | playbooks/logic-flaws/00-index.md |
phase7n_logic_vuln.py |
| OAuth/SAML/JWT | playbooks/oauth-saml-jwt/00-index.md |
phase7o_jwt_vuln.py |
| REST API/BOLA/Mass Assignment | playbooks/api-rest/00-index.md |
phase7b_auth_vuln.py |
| 用户输入进 DB | playbooks/sqli.md |
phase7d_sqli_verify.py |
| 反序列化/SSTI/XXE/框架RCE | playbooks/rce/00-index.md |
phase7k_deser_vuln.py / phase7i_ssti_vuln.py / phase7j_xxe_vuln.py |
| URL入参/缓存/Host注入 | playbooks/ssrf-cache-host/00-index.md |
phase7h_ssrf_vuln.py |
| 文件路径入参/LFI/RFI | playbooks/path-traversal/00-index.md |
— |
| 上传点+解析漏洞 | playbooks/file-upload/00-index.md |
phase7l_upload_vuln.py |
| 用户输入回显HTML/JS | playbooks/xss/00-index.md |
phase7m_param_fuzz.py |
| 反代+CL/TE | playbooks/http-smuggling.md |
phase7q_smuggling_vuln.py |
| GraphQL endpoint | playbooks/graphql.md |
phase7p_graphql_vuln.py |
| 并发/TOCTOU | playbooks/race-conditions.md |
— |
| ReDoS/资源不限速 | playbooks/dos.md |
— |
| APK/IPA/移动端 | playbooks/mobile.md |
— |
| LLM agent/prompt | playbooks/llm-prompt-injection/00-index.md |
— |
| 已拿shell/内网 | playbooks/intranet-postexp/00-index.md |
— |
| 命令注入 | (rce/ 子文件) | phase7g_cmdi_vuln.py |
| 框架漏洞(Log4j/Shiro/Fastjson) | (rce/ 子文件) | phase7f_framework_vuln.py |
| 参数Fuzz(XSS/SQLi/SSTI/SSRF) | (对应 playbook) | phase7m_param_fuzz.py |
| 403/401绕过 | (对应 playbook + methodology/02) | phase7r_bypass_vuln.py |
两步 Read 模式:目录形式 playbook 先 Read 00-index.md(路由表),再 Read 具体子文件。单文件直接 Read。
通用方法论(卡壳时 Read):
- 不知打什么 →
references/methodology/01-attack-priority.md - 被 WAF 拦 →
references/methodology/02-bypass-toolkit.md - 检查证据链 →
references/methodology/03-evidence-discipline.md - 找不到漏洞点 →
references/methodology/04-control-gap-hunting.md
验证与证据(命中后):
- 自动验证:
python scripts/phase7a_auto_verify.py --output-dir DIR - SQLi验证:
python scripts/phase7d_sqli_verify.py --target URL - 证据汇总:
python scripts/phase7e_evidence.py --output-dir DIR
Phase 5 · Report(提交)
进入条件:Phase 4 至少一个 finding 有可重现 HTTP 包。
MUST 流程:
- Read
references/compliance.md核对合规红线 - Read
references/templates/report-submission.md取提交模板 - 自动报告:
python scripts/phase8_report.py --output-dir DIR - 每个 finding 附 PoC(双格式): curl 可执行命令 + Burp raw 报文,缺一不进报告
- PoC 校验门:
python scripts/check_report_poc.py <report.md>— 任何 high/medium finding 缺 curl 或 HTTP 报文 → 校验失败,报告不可提交 - 三段式输出: 标题(≤80字) + 重现步骤(带HTTP包+PoC) + 影响+修复(CVSS+业务影响)
脚本工具索引
48 个 Python 脚本,按需调用。非自动管道——你判断方向,需要时调脚本。
| 类别 | 脚本 | 用途 |
|---|---|---|
| 侦察 | phase0_fingerprint.py |
指纹/WAF/安全头 |
| 侦察 | phase4_render.py |
Playwright渲染/JS提取 |
| 侦察 | phase4b_session.py |
Session捕获 |
| 侦察 | phase5_dir_enum.py |
目录枚举(ffuf→fuzz_engine) |
| 侦察 | phase6_js_analysis.py |
JS分析/端点验证 |
| 扫描 | phase7_vuln_scan.py |
nuclei+VulnOrchestrator |
| 验证 | phase7a_auto_verify.py |
自动验证/误报排除 |
| 验证 | phase7b_auth_vuln.py |
IDOR/越权/JWT |
| 验证 | phase7c_manual_verify.py |
手工验证辅助 |
| 验证 | phase7d_sqli_verify.py |
SQLi验证(sqlmap) |
| 证据 | phase7e_evidence.py |
证据汇总(必须) |
| 专项 | phase7f_framework_vuln.py |
框架漏洞 |
| 专项 | phase7g_cmdi_vuln.py |
命令注入 |
| 专项 | phase7h_ssrf_vuln.py |
SSRF |
| 专项 | phase7i_ssti_vuln.py |
SSTI |
| 专项 | phase7j_xxe_vuln.py |
XXE |
| 专项 | phase7k_deser_vuln.py |
反序列化 |
| 专项 | phase7l_upload_vuln.py |
文件上传 |
| 专项 | phase7m_param_fuzz.py |
参数Fuzz |
| 专项 | phase7n_logic_vuln.py |
业务逻辑 |
| 专项 | phase7o_jwt_vuln.py |
JWT |
| 专项 | phase7p_graphql_vuln.py |
GraphQL |
| 专项 | phase7q_smuggling_vuln.py |
HTTP走私 |
| 专项 | phase7r_bypass_vuln.py |
403/401绕过 |
| 报告 | phase8_report.py |
最终报告(必须) |
| 工具 | tool_manager.py status |
工具状态检查 |
| 工具 | health_check.py |
环境检查 |
| 工具 | cli.py |
统一CLI入口 |
公共参数: --target --output-dir --config --verbose
降级: nuclei→Python, ffuf→fuzz_engine.py, subfinder→crt.sh, nmap→socket
MCP 工具集成
默认 mcp__jshook__search_tools + mcp__jshook__activate_tools 按需激活。完整索引 Read references/tools-src-hunter/mcp-jshook.md。