利用条件竞争绕过 HackerOne 2FA

admin 2025年3月12日15:27:12评论14 views字数 2371阅读7分54秒阅读模式

扫码领资料

获网安教程

利用条件竞争绕过 HackerOne 2FA

利用条件竞争绕过 HackerOne 2FA

Track安全社区投稿~  

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

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

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

背景:HackerOne 的 2FA 工作原理

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

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

输入邮箱和密码 ✅

输入 2FA 验证码 ✅

成功登录

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

如何禁用 2FA?

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

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

利用条件竞争绕过 HackerOne 2FA

img

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

利用条件竞争绕过 HackerOne 2FA

img

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

利用条件竞争绕过 HackerOne 2FA

img

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

利用条件竞争绕过 HackerOne 2FA

img

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

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

利用条件竞争绕过 HackerOne 2FA

img

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

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

该 HTTP 请求如下所示:

POST /graphql HTTP/2Host: hackerone.comCookie:<COOKIES>User-Agent:Mozilla/5.0(Macintosh;IntelMac OS X 10.15; rv:135.0)Gecko/20100101Firefox/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 successn __typenamen }n}n"}

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

利用条件竞争绕过 HackerOne 2FA

img

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

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

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

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

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

利用条件竞争绕过 HackerOne 2FA

img

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

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

References

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

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

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

原文始发于微信公众号(白帽子左一):利用条件竞争绕过 HackerOne 2FA

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月12日15:27:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   利用条件竞争绕过 HackerOne 2FAhttps://cn-sec.com/archives/3833029.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息