- 网络安全
- 应用安全
【免费下载链接】HowToHunt
Collection of methodology and test case for various web vulnerabilities.
导读
本文基于 HowToHunt 开源漏洞猎捕方法论仓库中的 Password_Reset_Token_Leakage.md,系统讲解密码重置令牌(Password Reset Token)通过第三方域名请求意外泄露的检测思路与完整实战流程。你将掌握:如何在触发忘记密码功能后通过 Burp Suite 逐包排查令牌是否随请求流向 bat.bing.com、facebook.com 等外部域名,如何利用 Referer 头泄露链完成复现与影响评估,以及从仓库同目录姊妹文档中沉淀出的同源攻击变体(邮箱数组注入、OTP 爆破、响应篡改)与配套加固建议。
1. 漏洞本质:密码重置令牌为何会"出走"第三方域名
密码重置功能是现代 Web 应用的标配,其安全核心是重置令牌(reset token)——一段随密码重置邮件下发、用于证明"你拥有该邮箱"的高敏感凭证。令牌一旦泄露给第三方,攻击者即可在有效期内完成整条"申请重置 → 验证令牌 → 设置新密码"链路,直接导致账号完全接管(Full Account Takeover)。
令牌泄露的常见渠道之一,正是本文主角:应用自身或页面内嵌第三方组件在发起 HTTP 请求时,将令牌带入请求头或请求参数。典型场景包括:
- 重置页面内嵌的
bat.bing.com(Bing 站点分析)、facebook.com等统计/社交脚本触发的跨域请求; - 用户在重置页面上继续浏览时,浏览器依据 HTTP Referer 规范,自动将上一跳页面 URL(含令牌)写入第三方请求的
Referer头; - 开发者将令牌拼进页面 URL 查询参数后未做
Referrer-Policy限制。
HowToHunt 仓库将这种漏洞归纳为「Password Reset Token Leakage」,并给出了一条不依赖源码、纯黑盒的检测路径,即下文第 2 节的核心五步法。
2. 核心检测方法论:Burp 逐包排查五步法
原文档 Password_Reset_Token_Leakage.md 给出了完整检测步骤,下面逐条展开并补充关键操作细节:
步骤 1:发起密码重置请求
进入目标站点的「忘记密码(Forget Password)」入口,提交你自己的测试邮箱,触发一次正常的密码重置流程。建议全程开启 Burp Suite 代理,确保后续所有流量可被捕获。
步骤 2:收取邮件并提取重置链接
在测试邮箱中收取密码重置邮件,完整复制邮件中的重置页面链接——链接中通常携带token、reset_token、key、code等参数的令牌值,这就是后续排查的比对基准。
步骤 3:新标签页打开重置链接并开启拦截
将复制的重置链接粘贴到另一个新的浏览器标签页中打开,同时让 Burp Suite 处于Intercept(拦截)开启状态。之所以用新标签页,是为了让浏览器产生一次全新的、可被捕获的页面加载与关联请求序列。
步骤 4:逐包查找与重置链接中令牌一致的请求
在 Burp 的 HTTP history / Proxy 拦截视图中,逐个审查每一个请求,重点比对两处位置:
- 请求 URL 的查询参数:是否出现了与重置链接中完全相同的 token 值;
- 请求的
Referer头:是否携带了包含该 token 的上一页面 URL。
判断标准:只要发现某个请求的 token 值与重置链接中的令牌一致,且该请求发往了其他域名——文档中给出的典型案例如bat.bing.com、facebook.com——即可判定存在令牌泄露。
步骤 5:判定漏洞
一旦在第 4 步中命中上述特征,即可确认Password Reset Token Leakage(密码重置令牌泄露)漏洞成立,进入影响评估与报告撰写阶段。
实战提示:不要只盯
Referer。将 Burp 的 Filter 设置为只显示bat.bing.com、facebook.com等第三方域名,再对每个请求逐一比对 token 参数,能显著提升排查效率;同时留意 POST 表单体与 Cookie 中是否携带令牌。
3. 同源攻击变体:Referer 头泄露链的完整复现
仓库同目录下的 Password_Reset_Flaws_by_Sm4rty.md 与 Top_5_Password_Reset_Bugs.md 对该泄露链的主动复现手法做了更细化的说明,可作为第 2 节五步法的进阶延伸。
其复现路径为:
- 向自己的邮箱发起密码重置请求;
- 点击邮件中的重置链接,进入重置页面;
- 不要修改密码,保持重置页面停留在打开状态;
- 从该页面主动点击任意第三方网站(如 Facebook、Twitter)的外链;
- 在 Burp Suite 代理中拦截该次跳转请求;
- 检查请求的
Referer头是否泄露了重置令牌。
其核心原理是 HTTP Referer 头的标准语义:Referer请求头携带发起当前请求的上一个页面地址。当重置页 URL 中嵌有 token、且站点未设置Referrer-Policy: no-referrer之类的限制时,浏览器会在跳转第三方时把完整 URL(含 token)自动放入Referer。若第三方域名被攻击者控制,即可被动采集到受害者令牌,完成接管。
同文档还补充了令牌之外的密码重置功能高发漏洞,建议在同一测试会话中一并验证(详见 Password_Reset_Flaws_by_Sm4rty.md):
| 攻击类型 | 手法要点 | 后果 |
|---|---|---|
| 邮箱数组注入 | 将{"email_address":"victim@gmail.com"}改为{"email_address":["admin@breadcrumb.com","attacker@evil.com"]} | 重置链接同时发往受害者与攻击者,直接账户接管 |
| OTP 爆破 | 拦截 OTP 校验请求,用 Burp Intruder 空载荷/数字载荷爆破 6 位验证码 | 绕过 OTP 校验重置任意账户密码 |
| API 参数篡改 | 在/api/changepass请求中把email与password改为受害者的邮箱和攻击者自设密码 | 未授权修改任意用户密码 |
| 响应篡改 | 将HTTP/1.1 401 Unauthorized+"statusCode":403的失败响应改为200 OK+"statusCode":200 | 绕过依赖响应码的客户端校验 |
4. 前置条件排查:忘记密码接口的限流缺失
令牌泄露检测常与「忘记密码接口无速率限制」问题相伴出现。仓库 Rate_limit/No Rate-limit on forget-password.md 记录了该类问题的复现路径,可作为令牌测试的前置联动项:
- 访问
https://target.com/forgot-password(或reset-password)页面; - 输入受害者邮箱并拦截请求;
- 将请求发送至 Burp Intruder,清除所有载荷位置;
- 使用Null payloads并设置载荷计数(如 100);
- 启动攻击,观察是否可无限制地向受害者触发重置邮件。
其影响不止于骚扰:大规模触发邮件会耗尽第三方邮件服务配额并拖慢业务服务,造成财务损失与服务中断;若限流策略只按单一维度计数,还可结合 RateLimitBypass.md 中记录的X-Forwarded-For、X-Client-IP等伪造 IP 头、HTTP 方法切换(GET↔POST↔HEAD)、路径尾部加斜杠(/v1/login→/v1/login/)等手法尝试绕过。
5. 影响评估与修复建议
5.1 影响评估
- 账户接管链:泄露的令牌若仍在有效期内,攻击者可在未持有受害者邮箱的情况下完成密码重置,形成Full Account Takeover;
- 第三方信任边界破坏:泄露面向 bat.bing.com、facebook.com 等不可控第三方,受害者隐私(邮箱关联、令牌)超出目标系统信任边界;
- 组合放大:令牌泄露常与限流缺失、OTP 爆破等缺陷叠加,使接管难度进一步下降。
5.2 修复与加固建议
综合仓库 Top_5_Password_Reset_Bugs.md 与 Password_Reset_Flaws_by_Sm4rty.md 中沉淀的缓解策略:
- 设置安全的 Referrer-Policy:为重置页面及全站配置
Referrer-Policy: no-referrer或strict-origin-when-cross-origin,阻断令牌经Referer外泄;仓库 CSRF/CSRF.md 中同样记录了<meta name="referrer" content="no-referrer">这一可复用的页面级兜底写法; - 令牌不出现在 URL:重置链接改用 POST 提交或会话侧存储,避免 token 进入地址栏与
Referer头; - 短有效期与一次性使用:令牌限时(如 10–15 分钟)且使用后立即失效;
- 服务端强校验:重置流程的所有校验在服务端完成,不信任客户端响应码与参数(对应响应篡改变体);
- 参数类型与授权校验:严格限制
email参数为标量并校验当前会话授权(对应数组注入与 API 参数篡改变体); - OTP 全链路限流:对验证码校验接口按 IP、账号、设备多维限流,并配合验证码失效机制。
6. 方法总结
「Password Reset Token Leakage」是一条检测成本极低、接管价值极高的密码重置类漏洞线索:
- 触发:通过忘记密码功能生成携带令牌的重置链接;
- 捕获:新标签页打开链接并开启 Burp 拦截,建立令牌比对基准;
- 比对:逐包审查请求 URL 参数与
Referer头,寻找与重置链接 token 一致的跨域请求(bat.bing.com、facebook.com 等为高频命中域); - 进阶:主动从重置页点击第三方外链复现 Referer 泄露链,并联动验证邮箱数组注入、OTP 爆破、响应篡改等同源变体;
- 收尾:按影响面评估严重性,按第 5.2 节建议输出修复方案。
该方法论完整收录于 HowToHunt 仓库的 Password_Reset_Token_Leakage.md,并可横向参考 Password_Reset_Functionality 目录下的同主题文档与 Rate_limit 目录的限流测试资料,形成一套覆盖"令牌泄露 + 限流缺失 + 接管链"的完整测试矩阵。
作者注:核心五步法由 @Virdoex_hunter 贡献至 HowToHunt 仓库,本文在此基础上结合仓库同目录文档进行了系统性展开。
- 网络安全
- 应用安全
【免费下载链接】HowToHunt
Collection of methodology and test case for various web vulnerabilities.
相关推荐
告别密码泄露:authentik+YubiKey/Google Titan硬件令牌配置全攻略
告别密码泄露:authentik+YubiKey/Google Titan硬件令牌配置全攻略 你是否还在为账户被盗、密码泄露而担忧?本文将带你一步步完成auth
后端认证鉴权单点登录从密码泄露到数据安全:ECB模式下的明文泄露案例解析
从密码泄露到数据安全:ECB模式下的明文泄露案例解析 你是否曾想过,为什么明明使用了加密算法,敏感数据还是会被泄露?在Web开发中,错误选择加密模式可能导致"加
密码学GitHub Dork 全量清单实战指南:HowToHunt 仓库敏感信息泄露检测手册
GitHub Dork 全量清单实战指南:HowToHunt 仓库敏感信息泄露检测手册 本指南以 Github_dorks_all.md https://lin
网络安全应用安全
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考