关于 hunt-forgot-password
面向安全测试人员的密码重置流程检测技能,指导发现用户名枚举、重置令牌暴露或重放及限速缺失等问题。还提供验证方法,并指出与账户接管等问题的关联。
主要功能
- 01比较有效与无效用户名响应
- 02检查重置令牌暴露与可预测性
- 03测试令牌重放和过期情况
- 04检查重置接口限速
- 05识别令牌绑定与来源泄露风险
适用场景
- 01检查密码重置接口是否泄露账户存在性
- 02验证重置令牌能否重复使用或长期有效
- 03测试重置请求是否受到限速
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ elementalsouls/ claude-bughunter --skill hunt-forgot-password安装后在 Claude Code 中输入/hunt-forgot-password确认已加载。
详细介绍
自动化测试优先级
先从用户名枚举入手——这是最快的突破口,也是后续测试的前提。
模式 1 — 用户名枚举(有效与无效邮箱的响应存在差异):
- 向忘记密码端点发送 POST 请求,使用明显无效的邮箱(例如
[email protected])——记录响应正文、状态码和长度 - 使用你确定存在的邮箱发送 POST 请求(或尝试常见模式,例如
[email protected]、[email protected]、[email protected]) - 比较响应:提示信息不同(“邮件已发送”与“未找到邮箱”)、HTTP 状态不同,或正文长度有明显差异 = 确认存在用户名枚举
- 证明:当两个响应在提示文本、状态码或正文长度上存在可测量的差异(基线与探测结果)时,即可确认存在枚举
模式 2 — 重置令牌暴露在 API 响应中: 有些 API 会直接在响应正文中返回重置令牌(而不是只通过邮件发送)。向忘记密码端点发送 POST 请求,并检查 JSON/HTML 响应中是否包含令牌、链接或验证码。如果出现可用于重置密码的令牌,这就是可立即用于接管账户的攻击路径。
模式 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,则在此处测试绕过