mcpField
H
hunt-forgot-password

hunt-forgot-password

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

关于 hunt-forgot-password

面向安全测试人员的密码重置流程检测技能,指导发现用户名枚举、重置令牌暴露或重放及限速缺失等问题。还提供验证方法,并指出与账户接管等问题的关联。

主要功能

  1. 01比较有效与无效用户名响应
  2. 02检查重置令牌暴露与可预测性
  3. 03测试令牌重放和过期情况
  4. 04检查重置接口限速
  5. 05识别令牌绑定与来源泄露风险

适用场景

  1. 01检查密码重置接口是否泄露账户存在性
  2. 02验证重置令牌能否重复使用或长期有效
  3. 03测试重置请求是否受到限速

安装

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

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

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

详细介绍

自动化测试优先级

先从用户名枚举入手——这是最快的突破口,也是后续测试的前提。

模式 1 — 用户名枚举(有效与无效邮箱的响应存在差异):

  1. 向忘记密码端点发送 POST 请求,使用明显无效的邮箱(例如 [email protected])——记录响应正文、状态码和长度
  2. 使用你确定存在的邮箱发送 POST 请求(或尝试常见模式,例如 [email protected]、[email protected]、[email protected])
  3. 比较响应:提示信息不同(“邮件已发送”与“未找到邮箱”)、HTTP 状态不同,或正文长度有明显差异 = 确认存在用户名枚举
  4. 证明:当两个响应在提示文本、状态码或正文长度上存在可测量的差异(基线与探测结果)时,即可确认存在枚举

模式 2 — 重置令牌暴露在 API 响应中: 有些 API 会直接在响应正文中返回重置令牌(而不是只通过邮件发送)。向忘记密码端点发送 POST 请求,并检查 JSON/HTML 响应中是否包含令牌、链接或验证码。如果出现可用于重置密码的令牌,这就是可立即用于接管账户的攻击路径。

模式 3 — 重放重置令牌(使用后复用):

  1. 完成完整的密码重置流程:请求令牌 → 使用令牌重置密码
  2. 随即尝试再次将同一令牌提交到重置密码端点
  3. 如果第二次提交返回 200 或“成功”→ 令牌使用后未失效

模式 4 — 重置请求没有速率限制: 使用同一邮箱,快速向忘记密码端点提交 10-20 次请求。如果所有请求都成功,且没有 429、锁定或 CAPTCHA → 没有速率限制(可能进行枚举和令牌泛滥攻击)。

内容类型: 忘记密码端点通常是基于 JSON 的 REST API。只有当端点是传统 HTML 表单时,才使用 application/x-www-form-urlencoded(检查登录页的 HTML 以确定表单编码)。

证明: 用户名枚举 = 响应存在可测量的差异(正文/状态/长度)。令牌暴露 = 令牌出现在响应正文中。令牌重放 = 已消耗的令牌第二次使用仍成功。


此技能中的漏洞类别

1. 通过密码重置进行用户名枚举

针对有效账户与无效账户返回不同的错误消息,会在无需身份验证的情况下泄露用户列表。即使只是响应时间不同(“未找到用户”响应很快,而“邮件已排队”响应较慢),也算。

高价值目标:管理员账户、员工邮箱模式、根据用户名派生的 API 密钥。

2. 弱 / 可预测的重置令牌

根据时间戳、用户名或递增 ID 派生的重置令牌可能被暴力破解:

  • base64(email + timestamp) — 可解码
  • 4-6 位数字验证码 — 共 10K 种猜测;没有速率限制时很容易尝试
  • 递增的 token=1234、token=1235 — 极易枚举
3. 令牌未绑定到会话或 IP

大多数应用会生成令牌并通过邮件发送,且允许从任何浏览器提交该令牌。真正绑定的令牌应只能从同一 IP 使用,或要求提供原始会话 Cookie。如果这两项都未实施 → 转发链接即可接管账户。

通过 Referer / 第三方资源泄露令牌。 当令牌出现在重置页 URL 中(/reset?token=…),且该页面加载了任何跨域资源(分析服务、广告、字体、CDN 图片)时,完整 URL(包括令牌)会通过 Referer 标头泄露给第三方。检查重置页的外发请求:如果令牌出现在任何跨域 Referer 中,就可能在无需访问受害者收件箱的情况下被窃取。同样的泄露也可能通过配置错误的 <meta name=referrer> 或受害者在重置页点击的外链发生。已披露的令牌泄露→账户接管漏洞类别:https://hackerone.com/reports/173551。

4. 重置链接不会过期

常见最佳实践:重置令牌应在约 15–60 分钟内过期(RFC 没有明确规定具体时限;OWASP 建议采用较短且仅可使用一次的有效期)。如果 24 小时前的令牌仍然有效 → 存在被钓鱼攻击长期利用的风险。

5. 重置端点未设置速率限制

未设置速率限制的重置端点会导致:

  • 邮件轰炸(对受害者的收件箱发起 DoS 攻击)
  • 如果令牌空间较小,可暴力破解令牌
  • 大规模枚举用户名

相关技能

  • hunt-ato — 负责账号接管 CHAIN(密码重置是其路径 #1)。此技能用于发现并验证恢复流程中的原语;交由 hunt-ato 组合完成整个接管流程。
  • hunt-cache-poison — 生成重置邮件时的 Host 头注入(漏洞类型不同,但属于同一流程)
  • hunt-brute-force — 速率限制测试模式同样适用于重置端点
  • hunt-auth-bypass — 如果可以完全跳过重置流程(使用空值/null token 访问 /reset-password?token=)
  • hunt-mfa-bypass — 如果重置后需要 MFA,则在此处测试绕过

评论

支持 Markdown