关于 hunt-captcha-bypass
面向安全测试人员的 CAPTCHA 绕过检测技能,涵盖缺失或空值验证、令牌重放及相关端点检查。内容还说明如何验证绕过并关联其可能影响。
主要功能
- 01测试省略 CAPTCHA 字段
- 02检查空值与令牌重放
- 03测试相似端点的验证遗漏
- 04检查并发请求计数行为
- 05验证状态变更与影响链
适用场景
- 01检查登录接口是否缺少服务端验证
- 02测试注册或密码重置的 CAPTCHA
- 03验证 CAPTCHA 令牌是否可重复使用
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ elementalsouls/ claude-bughunter --skill hunt-captcha-bypass安装后在 Claude Code 中输入/hunt-captcha-bypass确认已加载。
详细介绍
自主测试优先级
最快的测试方法:直接省略 CAPTCHA 字段。大多数 CAPTCHA 绕过漏洞都只是客户端验证。
模式 1——省略 CAPTCHA 字段(最常见、最易自动化):
- GET 显示 CAPTCHA 的表单/端点,确认字段名称(通常为
g-recaptcha-response、captcha、captcha_token、captcha_answer、h-captcha-response) - POST 表单时包含除 CAPTCHA 字段以外的所有字段
- 如果操作成功(200、重定向或显示“成功”消息)→ 服务端未验证 CAPTCHA
- 证明:不提供有效 CAPTCHA 字段也能完成状态变更操作(与包含该字段的基准请求进行比较)
模式 2——使用空或 null CAPTCHA 值:
不完全省略该字段,而是将其设为空字符串、null、0 或 undefined:
captcha=&[email protected]&password=test123
有些应用会验证字段是否存在,但不验证其内容。
模式 3——重放之前通过验证的 CAPTCHA 令牌:
- 完成一次合法的 CAPTCHA 挑战并捕获
g-recaptcha-response令牌 - 立即使用相同的令牌值提交第二个请求
- 如果第二次提交也成功 → 令牌不是一次性的(重放攻击)
- 可在自动化请求中重复使用同一个令牌
模式 4——测试类似端点是否无需 CAPTCHA:
有些应用会在注册表单中添加 CAPTCHA,却忘了在密码重置、API 端点或移动 API 路径中添加(/api/register 与 /register)。尝试通过不带任何 CAPTCHA 字段的 API 路径执行相同操作。
模式 5——通过速率/吞吐量限制触发的“证明你是自动化程序”挑战: 有些应用将 CAPTCHA“绕过”定义为超出人类合理可维持的速率—— 例如“在 T 秒内提交 N 次”——并通过中间件计数到达该路由的请求,而非成功的操作。无效/占位载荷也能满足这一条件,与有效载荷无异,因为无论请求自身的验证是否通过,计数器都会递增。
时间说明(滑动窗口计数器): 不要一次只发一个请求来解决这个问题——顺序发送
(每个请求间隔数秒)从机制上就无法在短滑动窗口内发出 N 个请求,串行发送更多请求也无济于事。一个常见的失败模式是在约 250 秒内发送 12 个请求,而检查要求在 20 秒内发送约 10 个请求。
应改为并发发送请求(例如,在单次请求调用中设置 "concurrency": N,或使用工具提供的任何并行请求机制,其中 N >= 所需请求数),这样请求会同时到达,轻松满足滑动窗口条件。首先检查端点自身的必填字段验证(例如不能为 null 的 rating 字段),确保并发载荷格式足够正确,能够到达计数中间件,即使其他字段(如 CAPTCHA 答案本身)有误或被重复使用。
自动化测试中应跳过的内容: 以编程方式破解真实的 reCAPTCHA/hCaptcha(OCR、音频绕过)需要外部服务。只有在模式 1–4 均无效且测试预算允许时才尝试。
证明: 任何无需有效 CAPTCHA 令牌即可完成的成功状态变更操作(创建账户、登录成功、提交表单)都能确认存在绕过漏洞。
此技能涵盖的漏洞类别
1. 仅客户端 CAPTCHA 验证
JavaScript 会在 CAPTCHA 验证通过前隐藏/禁用提交按钮,但服务端从不检查 CAPTCHA 令牌。直接调用 API 可完全绕过 UI 门槛。
2. CAPTCHA 未绑定会话或操作
为登录验证的令牌也会被注册端点(或任何其他端点)接受。服务端只验证“这是否是真正的 CAPTCHA 答案”,却不验证“这是否是针对这项操作的正确答案”。
3. 未强制执行一次性使用
CAPTCHA 令牌(尤其是 reCAPTCHA v2)应在使用一次后即失效。如果服务端验证后不撤销令牌,那么一个由真人解决的令牌就可以被重复用于多个请求。
4. 仅在连续失败 N 次后才显示 CAPTCHA
有些应用仅在登录失败 3–5 次后才显示 CAPTCHA。在达到该阈值前,无需通过 CAPTCHA → 攻击者可以通过在每次尝试之间重置状态,无限次地对每个账户尝试 N-1 次。
5. 静态或可预测的 CAPTCHA
数学 CAPTCHA(3 + 4 = ?)、简单的图像 CAPTCHA,或答案集有限的文本 CAPTCHA 都可以自动化处理。这些是自定义 CAPTCHA 实现,并非 Google/hCaptcha。
影响链
单独绕过 CAPTCHA:中(可自动执行受速率限制的操作)
绕过 CAPTCHA + 登录端点 = 移除暴力破解门槛 → 与 hunt-brute-force 串联 → 高危/严重
绕过 CAPTCHA + 注册端点 = 批量创建账户 → 滥用、垃圾信息、资源耗尽
绕过 CAPTCHA + 密码重置 = 令牌泛滥 → 与 hunt-forgot-password 串联
相关技能
hunt-brute-force— CAPTCHA 通常是唯一的速率限制关卡;绕过后即可进行暴力破解hunt-forgot-password— 重置端点有时仅受 CAPTCHA 保护hunt-race-condition— 利用 CAPTCHA 验证窗口的竞态条件(在令牌被撤销前提交)