利用条件竞争绕过HackerOne2FA

admin 2025-12-25 03:11:46 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详述了作者利用HackerOne平台2FA重置接口的竞争条件漏洞,通过并发GraphQL请求生成多封重置邮件,导致用户仅取消部分链接仍可能被关闭2FA,从而威胁账户安全。HackerOne团队确认该漏洞并修复,判定为中等严重性漏洞。 综合评分: 80 文章分类: SRC活动,漏洞分析,WEB安全,漏洞POC


cover_image

利用条件竞争绕过 HackerOne 2FA

白帽子左一

白帽子左一

2025年3月12日 12:00 美国

扫码领资料

获网安教程

Track安全社区投稿~

赢千元稿费!还有保底奖励~(https://bbs.zkaq.cn)

这篇文章讲述了我是如何发现 HackerOne 的一个 竞争条件漏洞,该漏洞允许我 关闭任何 HackerOne 账户的 2FA。我不清楚这个漏洞存在了多久,直到我注意到并向团队报告它。

部分披露的报告:https://hackerone.com/reports/2598548


背景:HackerOne 的 2FA 工作原理

在了解漏洞之前,首先需要了解 HackerOne 双因素认证 (2FA) 的工作方式。

假设你已经在 HackerOne 账户中启用了 2FA,那么身份验证流程如下:

输入邮箱和密码 ✅

输入 2FA 验证码 ✅

成功登录

这是一条安全的认证流程,我无法找到绕过这些步骤以跳过身份验证的漏洞。


如何禁用 2FA?

要关闭 2FA,需要执行以下步骤:

访问 HackerOne 登录页面[1],输入你的邮箱和密码

img

然后点击 重置双因素认证 链接

img

然后,系统会提示您是否确实要重置账户的双因素认证,提示内容如下:

img

如果您点击“OK”,那么您将会收到如下邮件:

img

这意味着您的 2FA 将在 24 小时内自动重置,但您会在几个小时的间隔内多次收到 2FA 重置的提醒邮件(大约 4-6 次),以提醒您如果不是您本人操作,可以取消恢复以保护您的账户。

假设您没有取消账户恢复,并且在一段时间后登录您的账户,您会注意到“重置两步验证”按钮已被禁用,如下图所示:

img

这意味着您需要取消 2FA 重置请求后才能再次请求,因为它是一次性操作。

我发现,当我点击“重置两步验证”时,可以对该请求进行竞态攻击(race condition)。

该 HTTP 请求如下所示:

POST /graphql HTTP/2Host: hackerone.comCookie: <COOKIES>User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:135.0) Gecko/20100101 Firefox/135.0Accept: */*Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflate, brReferer: https://hackerone.com/users/sign_inContent-Type: application/jsonX-Csrf-Token: <CSRF TOKEN>X-Product-Area: user-managementX-Product-Feature: signinContent-Length: 467Origin: https://hackerone.comDnt: 1Sec-Gpc: 1Sec-Fetch-Dest: emptySec-Fetch-Mode: corsSec-Fetch-Site: same-originPriority: u=0Te: trailers
{"operationName":"TwoFactorReset","variables":{"product_area":"user-management","product_feature":"signin","email":"<EMAIL>","password":"<PASSWORD>","fingerprint":"<FINGERPRINT>"},"query":"mutation TwoFactorReset($email: String!, $password: String!, $fingerprint: String!) {\n  createUserTwoFactorReset(\n    input: {email: $email, password: $password, fingerprint: $fingerprint}\n  ) {\n    success\n    __typename\n  }\n}\n"}

变更(mutation)TwoFactorReset 负责为您的 HackerOne 账户发起 2FA 重置请求。如果对该 HTTP 请求进行竞态攻击(race condition),您将会收到多封 2FA 重置通知,如下所示:

img

如果你分析上面的图片,会发现所有的 2FA 重置通知邮件都是在 20 分钟前发送的,这说明竞态条件成功生效了。

但是,受害者会检查邮件并取消账户恢复,因为他们并没有主动发起该请求,所以账户应该是安全的,对吧?错!

因为当你点击链接取消 2FA 重置请求后,其余的重置链接仍然是有效的。这意味着,用户必须点击所有链接才能彻底取消账户恢复请求,确保账户安全。

但这对大多数用户来说是不现实的,因为没有人能 24/7 全天候在线,并且用户通常不会意识到他们需要点击所有链接来取消 2FA 重置请求,以保护他们的账户。

HackerOne 团队将这一发现判定为中等严重性(Medium Severity),并给予了我漏洞赏金:

img

修复: 该问题现已在正式环境中修复。一旦用户点击任意 2FA 请求取消链接,所有其他链接都会立即失效,并且用户会收到邮件通知。因此,用户不再需要点击每个链接来确保账户安全。

为什么会发生这个问题? 由于每次成功的竞态请求都会向用户账户发送一封邮件,使所有 2FA 取消链接保持有效。如果用户取消了其中一个,其他链接仍然可以使用。

References

[1] HackerOne 登录页面: https://hackerone.com/users/sign_in

漏洞挖掘 #SRC #CTF #web安全 #渗透测试 #黑客 #红队 #网络安全

声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权

如果你是一个网络安全爱好者,欢迎加入我的知识星球:zk安全知识星球,我们一起进步一起学习。星球不定期会分享一些前沿漏洞,每周安全面试经验、SRC实战纪实等文章分享,微信识别二维码,即可加入。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:白帽子左一 白帽子左一《利用条件竞争绕过 HackerOne 2FA》

评论:0   参与:  1