☰
复现作者的测试:Claude-BugHunter的CVE验证实验室与Playwright浏览器自动化实战指南
2026/9/26 2:26:18 网站建设 项目流程

复现作者的测试:Claude-BugHunter的CVE验证实验室与Playwright浏览器自动化实战指南

【免费下载链接】Claude-BugHunterA Claude Code skill bundle for bug hunting and external red-team work - 82 skills, 15 slash commands, 681 disclosed-report patterns curated across 24 core vulnerability classes, plus enterprise identity + infrastructure attack matrices.项目地址: https://gitcode.com/gh_mirrors/cl/Claude-BugHunter

Claude-BugHunter 是一个面向漏洞挖掘与外部红队工作的 Claude Code 技能包:82 个技能、15 条斜杠命令,覆盖 24 类核心漏洞的 681 条公开报告模式。但技能库的"能力"不能只靠文档吹出来——作者在 docs/verification/ 目录下搭建了一整套可复现的 CVE 验证实验室和Playwright 浏览器自动化测试,把"技能说能打的漏洞"一条条在真实目标上打穿,并如实记录通过或失败的结果。本文将带你完整复现作者的测试,理解这套"诚实验证"的打法。

为什么要有 CVE 验证实验室

新手常问:技能文件写得再详细,怎么知道它真能派上用场?作者的答案是:每条结论都要有真实目标、真实响应、真实判定。

所有验证文档都遵循统一的记录模板:

记录项说明
初始提示新手会输入什么样的问题
自动触发的技能描述字段如何匹配到对应hunt-*技能
引用的技术直接摘自技能文档的 payload 或手法
真实攻击结果目标返回的实际 HTTP 响应,通过或失败
诚实判定明确写出 PASS / 失败 / 需要修正

这套文档就在 docs/verification/,每个实验都附可复制的命令和最小化目标源码,任何人都能一键重跑。

快速开始:三个真实 CVE 实验室

CVE 复现全部基于 Docker 容器(vulhub 镜像),不碰任何真实生产系统,新手也能放心练手。

1. Apache 路径遍历:CVE-2021-41773

目标是一台 Apache 2.4.49 容器。利用 alias 路径的规范化缺陷,先用编码路径读取/etc/passwd(文件泄露),再借助/cgi-bin/的Options +ExecCGI把文件读取升级为远程命令执行。

git clone --depth 1 https://github.com/vulhub/vulhub.git /tmp/vulhub cd /tmp/vulhub/httpd/CVE-2021-41773 docker-compose up -d --build

完整记录见 apache-cve-2021-41773.md。作者在验证中还发现技能库的短板:hunt-rce技能会给出编码绕过家族(../→..%2F→%2e%2e%2f),方向正确,但缺少"只针对 2.4.49 特定版本""必须走 alias 路径"这类版本级细节——这正是验证实验的价值:技能知道"怎么打",实验室补上"打哪里"。

2. Jenkins 2. Jenkins 未授权文件读取:CVE-2024-23897

CI/CD 服务器是红队的重灾区(源码仓库、云密钥、kubeconfig 都在上面)。Jenkins LTS 2.441 的 CLI 工具存在 args4j@前缀参数展开缺陷,未认证即可用@/etc/passwd这样的参数读取任意文件,该 CVE 当年迅速进入 CISA KEV 利用目录。

目标同样一行命令拉起:vulhub/jenkins:2.441容器,映射端口后下载官方jenkins-cli.jar即可复现。详见 jenkins-cve-2024-23897.md。

3. Spring Cloud Function SpEL 注入:CVE-2022-22963

Spring 系微服务的老熟人。攻击点不在 URL 参数里,而是藏在请求头spring.cloud.function.routing-expression中——服务器会把头里的 SpEL 表达式直接求值,一条 curl 就能在容器内以 root 执行命令。交付向量(哪个端点、哪个头)正是新手最容易卡住的 30 分钟,而实验文档把它完整写了出来。见 spring-cve-2022-22963.md。

💡 三个 CVE 实验的共同模式:先grep技能库"它知道什么",再列出"它不知道什么",最后给出真实利用。这种先自曝缺口、再现场验证的写法,比纯炫技的写穿更有参考价值。

自研实验台:Phase 2E ~ 2J 与"诚实判定"

除了真实 CVE,作者还在 docs/verification/ 里用最小化 Flask 应用搭了一系列自研实验台,每个实验台只内置一两个故意埋的漏洞,用于验证对应技能能否打穿:

实验台覆盖漏洞类技能验证文档
phase2e-labJWTalg=none、GraphQL IDOR、优惠券竞态条件hunt-api-misconfig/hunt-graphql/hunt-race-conditionphase2e-jwt-graphql-race.md
phase2f-labSSTI、OAuth 绕过、文件上传对应hunt-*phase2f-ssti-oauth-fileupload.md
phase2g-labSAML、MFA 绕过、XXE对应hunt-*phase2g-saml-mfa-xxe.md
phase2h-labHTTP 请求走私、缓存投毒(Nginx + 源站双容器)对应hunt-*phase2h-smuggling-cachepoison.md
phase2i-labLLM 驱动的账户接管(ATO)链对应hunt-*phase2i-llm-ato.md
LocalStack 云实验公开 S3 桶、IAM 提权链hunt-cloud-misconfig/cloud-iam-deepphase2j-cloud-localstack.md

还有一个反直觉的亮点:hardened-lab(加固实验室)。它内置真实防御(预处理语句、输出编码、限流)和一堆"长得像漏洞其实不是"的行为,专门考验技能库会不会误报。结果 8/8 测试都触发了正确的纪律规则——每一个假阳性被拦截,每一个真漏洞被抓出。完整规则见 hardened-lab-discipline-rules.md。

进阶:Playwright 浏览器自动化,把验证做到"执行层"

前几轮实验有个盲区:很多验证只停留在"源码里有这个漏洞点"(source-verified),没有在真实浏览器里执行 payload。Phase 3.1 用 Playwright + 无头 Chromium 补上了这一课,测试台和自动化脚本都随仓库提供:

  • 目标应用:docs/verification/phase3-playwright/target_app.py——一个最小 Flask 应用,内置 DOM XSS 和 OAuth 前缀校验两个漏洞端点
  • 自动化脚本:docs/verification/phase3-playwright/harness.py
pip install flask playwright playwright install chromium python target_app.py # 启动目标 python harness.py # 运行浏览器自动化测试

测试 28a/28b:DOM XSS 真正"跑"起来

  • 28a用<img src=x onerror="alert(...)">注入 URL hash,脚本监听弹窗事件——无头 Chromium 真的弹出了 alert,说明 JS 在浏览器内执行了;
  • 28b更实用:payload 写入window变量,脚本再读回该变量。这个"window 变量副作用"模式可以穿越同源内的多次导航,是验证存储型 XSS 的黄金模式。

测试 29:一次漂亮的"打脸式修正"

最有价值的其实是 Phase 3.1 推翻了 Phase 2F 的一处过度宣称。此前文档声称:对带尾斜杠的前缀白名单(https://acme.example/),提交redirect_uri=https://acme.example/@evil.attacker.example/能把授权码带到攻击者域名。

Playwright 实测结果:

  1. 尾斜杠前缀下不成立——URL 里://后第一个/之后的所有内容都是路径,@被浏览器当普通路径字符,授权码留在了acme.example;
  2. 无前缀尾斜杠时才成立——此时@位于 authority 段,浏览器把localhost:58020解析成 userinfo、把evil.attacker.example当成真正的 host 发起请求,服务端startswith()字符串校验又恰好放行——完整 ATO 链路在浏览器中真实复现。

结论被写回文档并同步更新了 skills/hunt-oauth/SKILL.md:服务端前缀校验缺陷只是必要条件,声称 OAuth → ATO 之前必须用无头浏览器实测最终跳转。全部测试记录见 phase3-playwright-browser-execution.md。

这个浏览器自动化框架还能继续用于:存储型 XSS 确认、开放重定向链、CSRF token 绑定、DOM 污染、XSS 后读 Cookie 等场景。

更进一步:eval 评测框架与复现建议

验证文档之外,仓库还有一套自动化评测框架 eval/:用无头 Claude Code 代理攻击自评分目标(OWASP Juice Shop 通过/api/Challenges自动判分,PortSwigger 实验室通过状态组件判分),对比"启用技能 vs 关闭技能"的解题率、回合数与成本。2026-08-25 的基线数据见 eval/BASELINE.md——其中也诚实地记录了"Juice Shop 已被模型记住,存在天花板效应"这类测量局限。

复现建议按顺序来,每一步都有文档可查:

  1. 热身:跑 phase2e-lab 等自研实验台,熟悉"提示 → 技能触发 → 攻击 → 判定"的完整闭环;
  2. CVE 复现:用 Docker 依次拉起 Apache、Jenkins、Spring 三个 CVE 环境;
  3. 浏览器层:安装 Playwright,跑 phase3-playwright 的 harness,体会执行层验证与源码层验证的差别;
  4. 防误报:跑 hardened-lab,看看技能库的纪律规则如何拦截假阳性。

⚠️ 纪律提醒:所有实验只针对本地自建、你拥有授权的易受攻击环境。验证框架 eval/README.md 中同样强调这一点——对未授权目标下手是红线。

小结

Claude-BugHunter 最值得新手学习的,不只是 82 个技能本身,而是 docs/verification/ 里这套验证方法论:

  • 可复现:每个实验台都有最小化源码和一键启动命令;
  • 诚实判定:PASS、失败、甚至"作者自己错了"都如实写进文档;
  • 分层验证:HTTP 层打穿 → 浏览器执行层确认 → 加固实验室防误报,层层加码;
  • 缺口驱动:CVE 实验同时暴露技能库盲区(缺版本细节、缺 CVE 编号),反哺 skills/ 内容更新。

配合 docs/cve-coverage.md 与 docs/architecture.md,你可以完整看懂这个技能包"声称什么、验证了什么、还差什么"。

【免费下载链接】Claude-BugHunterA Claude Code skill bundle for bug hunting and external red-team work - 82 skills, 15 slash commands, 681 disclosed-report patterns curated across 24 core vulnerability classes, plus enterprise identity + infrastructure attack matrices.项目地址: https://gitcode.com/gh_mirrors/cl/Claude-BugHunter

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询