值此机会,请允许我分享我的一个 Critical vulnerability 发现。事不宜迟,让我们直接进入讨论。
有时,最小的疏忽可能会导致一些最危险的漏洞。在这篇文章中,我将向您介绍我如何通过调整标头来劫持密码重置令牌。是的,你没看错 — 不需要花哨的开发,只需要一个位置合适的 .Origin
?
🔍 发现
我正在浏览托管在 的 Web 应用程序上的密码重置功能。在我捕获重置密码的请求之前,看起来没有什么异常:api.app.redacted.com
POST /v1/public/rpc/auth.password_reset.request HTTP/2 Content-Type: application/json Origin: https://app.redacted.com
大多数开发人员有点太信任标头了。这就是乐趣开始的地方。Origin
🧨 漏洞利用
这是我所做的:
-
我点击“忘记密码”并输入受害者的电子邮件。 -
我拦截了传出的 POST 请求以:
/v1/public/rpc/auth.password_reset.request
3. 我将标题更改为:Origin
https://attacker.com?.redacted.com
为什么这样做:许多系统只检查源是否以 .但是,如果你放入 ,该检查会正常失败,并将其视为合法的子域。redacted.com
?
4. 服务器响应 。200 OK
5. 密码重置邮件已发送给受害者,但重置链接?它指向我的服务器 — — 随身携带着 Juicy Token。https://attacker.com
6. 一旦受害者点击它,我在我的听众上收到了重置令牌,然后 BOOM !!— 完全接管帐户,而无需触及他们的收件箱。
⚠️ 冲击
这个漏洞使我能够:
-
劫持密码重置流。 -
获得对任何账户的完全访问权限,而不会触发警报。 -
提供看起来合法的链接(因为从技术上讲它们是合法的),但被重定向到我的恶意服务器。
📊 风险分析 (CVSS v3.1)
指标值基本分数 9.0(严重)
🛡️ 缓解提示
解决这个问题非常简单。开发人员应该:
- 使用 或 代替 。
$_SERVER['SERVER_NAME']
$_SERVER['HTTP_HOST']
Origin
-
为有效的重定向域实施严格的允许列表。 -
避免将用户控制的输入反映到敏感的响应机制(如密码重置链接)中。
💬 最后的思考
这个错误表明,有时最薄弱的链接隐藏在众目睽睽之下——比如一个放错位置的标题。我们越是假设“无害”,就越有可能招致巧妙的滥用。
与往常一样,我们进行了负责任的披露,并且问题已经得到解决。感谢开发团队的快速响应!
祝您黑客愉快🧑 💻,注意安全!
原文始发于微信公众号(安全狗的自我修养):我是如何通过一次偷偷摸摸的标头注入劫持密码重置链接的
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论