SuperAPI AI 工具集

hunt-forgot-password

安全与审计

查看项目

更新于 10-15 13:02

技能介绍

该技能面向忘记密码与账户恢复流程的认证缺陷测试,属于自主测试类技能,测试优先级上建议先做用户名枚举,因为这是最快且能作为其他测试前提的切入点。

覆盖的测试模式

模式1:用户名枚举 用明显无效的邮箱(例如 nonexistent@fakedomain12345.com)向忘记密码接口发送POST请求,记录响应体、状态码和长度;再用已知存在的邮箱(或尝试 admin@target.com、test@target.com、user@target.com 等常见模式)发送请求。比较两次响应:若提示消息不同(“邮件已发送”与“未找到邮箱”)、HTTP状态不同,或响应体长度存在明显差异,即可确认用户名枚举。确认标准是基线与探测两次响应在消息文本、状态码或响应体长度上存在可测量差异。

模式2:重置令牌在API响应中泄露 部分API会在响应体中直接返回重置令牌,而不仅通过邮件发送。向忘记密码接口发送请求,查找JSON或HTML响应中的令牌、链接或验证码。若出现可直接用于重置密码的令牌,即为直接的账户接管路径。

模式3:重置令牌重放(使用后仍可复用) 完成一次完整的重置流程:请求令牌→用其重置密码;随后立即再次向重置密码接口提交同一令牌。若第二次提交返回200或“成功”,说明令牌在使用后未被失效。

模式4:重置请求无速率限制 用同一邮箱快速提交忘记密码接口10到20次。若全部成功且没有429、锁定或验证码,则说明没有速率限制,可能被用于枚举与令牌洪水攻击。

内容类型:忘记密码接口常为JSON的REST API;仅当接口是传统HTML表单时才使用 application/x-www-form-urlencoded,可根据登录页HTML判断表单编码。

证明材料:用户名枚举需响应可测量差异(响应体/状态码/长度);令牌暴露需响应体中出现令牌;令牌重放需已消费令牌能被第二次成功使用。

涉及的漏洞类别

1. 通过密码重置进行用户名枚举 对有效与无效账户返回不同错误消息,可在未认证情况下泄露用户列表;即使只是时间差异(快速返回“未找到用户”与较慢返回“邮件已入队”)也算。高价值目标包括管理员账户、员工邮箱模式和由用户名派生的API密钥。

2. 弱或可预测的重置令牌 由时间戳、用户名或顺序ID衍生的重置令牌可被暴力破解,例如base64(email+timestamp)可解码、4到6位数字验证码仅1万次尝试(无速率限制时容易穷举)、顺序令牌token=1234、token=1235可被轻易枚举。

3. 令牌未绑定会话或IP 多数应用生成令牌、发送邮件并接受任意浏览器提交。真正绑定的令牌应仅在同一IP或需要原始会话Cookie时才生效。若两者均未强制,链接转发即可导致账户接管。

令牌还可能通过Referer或第三方资源泄露:当令牌位于重置页URL(/reset?token=…)且该页加载任何跨域资源(分析、广告、字体、CDN图片)时,完整URL(含令牌)会通过Referer头泄露给第三方。需检查重置页的出站请求:若令牌出现在任何跨域Referer中,无需受害者邮箱即可被收集。同样可通过 <meta name=referrer> 配置错误或受害者在重置页点击的出站链接泄露。

4. 重置链接不过期 常见最佳实践是重置令牌在约15到60分钟内过期(无硬性RFC规定具体值;OWASP建议短时、一次性使用)。若24小时前的令牌仍有效,则为钓鱼攻击提供了持久化风险。

5. 重置接口无速率限制 无上限的重置接口会导致:对受害者邮箱的邮件洪水(DoS)、令牌空间较小时被暴力破解、以及大规模用户名枚举。

相关技能

  • hunt-ato:掌握账户接管链路(密码重置是其路径#1)。本技能用于发现并证明恢复流程的原语,随后交由hunt-ato组装完整接管。
  • hunt-cache-poison:重置邮件生成期间的Host头注入(不同漏洞,同一流程)。
  • hunt-brute-force:速率限制测试模式同样适用于重置接口。
  • hunt-auth-bypass:若重置流程可被完全跳过(直接访问 /reset-password?token= 并带空/空令牌)。
  • hunt-mfa-bypass:若重置后需要MFA,则在那里测试绕过。