mcpField
H
hunt-captcha-bypass

hunt-captcha-bypass

github.com/elementalsouls安全5.3k211 次安装今天更新
代码仓库

关于 hunt-captcha-bypass

面向安全测试人员的 CAPTCHA 绕过检测技能,涵盖缺失或空值验证、令牌重放及相关端点检查。内容还说明如何验证绕过并关联其可能影响。

主要功能

  1. 01测试省略 CAPTCHA 字段
  2. 02检查空值与令牌重放
  3. 03测试相似端点的验证遗漏
  4. 04检查并发请求计数行为
  5. 05验证状态变更与影响链

适用场景

  1. 01检查登录接口是否缺少服务端验证
  2. 02测试注册或密码重置的 CAPTCHA
  3. 03验证 CAPTCHA 令牌是否可重复使用

安装

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

$npx skills add https://github.com/elementalsouls/claude-bughunter --skill hunt-captcha-bypass

安装后在 Claude Code 中输入/hunt-captcha-bypass确认已加载。

详细介绍

自主测试优先级

最快的测试方法:直接省略 CAPTCHA 字段。大多数 CAPTCHA 绕过漏洞都只是客户端验证。

模式 1——省略 CAPTCHA 字段(最常见、最易自动化):

  1. GET 显示 CAPTCHA 的表单/端点,确认字段名称(通常为 g-recaptcha-response、captcha、captcha_token、captcha_answer、h-captcha-response)
  2. POST 表单时包含除 CAPTCHA 字段以外的所有字段
  3. 如果操作成功(200、重定向或显示“成功”消息)→ 服务端未验证 CAPTCHA
  4. 证明:不提供有效 CAPTCHA 字段也能完成状态变更操作(与包含该字段的基准请求进行比较)

模式 2——使用空或 null CAPTCHA 值: 不完全省略该字段,而是将其设为空字符串、null、0 或 undefined:

captcha=&[email protected]&password=test123

有些应用会验证字段是否存在,但不验证其内容。

模式 3——重放之前通过验证的 CAPTCHA 令牌:

  1. 完成一次合法的 CAPTCHA 挑战并捕获 g-recaptcha-response 令牌
  2. 立即使用相同的令牌值提交第二个请求
  3. 如果第二次提交也成功 → 令牌不是一次性的(重放攻击)
  4. 可在自动化请求中重复使用同一个令牌

模式 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 验证窗口的竞态条件(在令牌被撤销前提交)

评论

支持 Markdown