☰
HowToHunt 密码重置令牌泄露检测实战指南:从 Burp 抓包到 Referer 泄露链分析
2026/10/6 1:49:09 网站建设 项目流程
  • 网络安全
  • 应用安全

【免费下载链接】HowToHunt

Collection of methodology and test case for various web vulnerabilities.

项目地址:https://gitcode.com/gh_mirrors/ho/HowToHunt
点击查看免费下载

导读

本文基于 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 拦截视图中,逐个审查每一个请求,重点比对两处位置:

  1. 请求 URL 的查询参数:是否出现了与重置链接中完全相同的 token 值;
  2. 请求的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 节五步法的进阶延伸。

其复现路径为:

  1. 向自己的邮箱发起密码重置请求;
  2. 点击邮件中的重置链接,进入重置页面;
  3. 不要修改密码,保持重置页面停留在打开状态;
  4. 从该页面主动点击任意第三方网站(如 Facebook、Twitter)的外链;
  5. 在 Burp Suite 代理中拦截该次跳转请求;
  6. 检查请求的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 记录了该类问题的复现路径,可作为令牌测试的前置联动项:

  1. 访问https://target.com/forgot-password(或reset-password)页面;
  2. 输入受害者邮箱并拦截请求;
  3. 将请求发送至 Burp Intruder,清除所有载荷位置;
  4. 使用Null payloads并设置载荷计数(如 100);
  5. 启动攻击,观察是否可无限制地向受害者触发重置邮件。

其影响不止于骚扰:大规模触发邮件会耗尽第三方邮件服务配额并拖慢业务服务,造成财务损失与服务中断;若限流策略只按单一维度计数,还可结合 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」是一条检测成本极低、接管价值极高的密码重置类漏洞线索:

  1. 触发:通过忘记密码功能生成携带令牌的重置链接;
  2. 捕获:新标签页打开链接并开启 Burp 拦截,建立令牌比对基准;
  3. 比对:逐包审查请求 URL 参数与Referer头,寻找与重置链接 token 一致的跨域请求(bat.bing.com、facebook.com 等为高频命中域);
  4. 进阶:主动从重置页点击第三方外链复现 Referer 泄露链,并联动验证邮箱数组注入、OTP 爆破、响应篡改等同源变体;
  5. 收尾:按影响面评估严重性,按第 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.

项目地址:https://gitcode.com/gh_mirrors/ho/HowToHunt
点击查看免费下载

相关推荐

上一篇:鸣潮自动化终极指南:解放双手,让AI帮你轻松刷声骸做日常
下一篇:Steamless终极指南:高效解除SteamStub DRM的完整解决方案

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询