我发现的最简单但影响最大的 Bug:
这是我的另一个旧发现,分享它。有时,最有价值的 bug 并不是最复杂的 bug。这是关于我如何通过绕过速率限制来暴力破解 2FA 代码来赚取 12,000 美元赏金的故事——这个漏洞非常简单但很严重。
发现:
使用正确的凭证登录后,系统会向用户发送一个 3 位数的 OTP 以进行 2FA 身份验证。用户需要在 POST 请求中输入正确的 OTP 才能继续。
在分析了请求结构后,我在 POST 请求中发现了一个有趣的参数,我将调用该参数(不是真实名称)。此参数负责实施速率限制。RAREPARA
这是请求结构的一个示例,但它不是真实的请求。
使用正确的凭据登录后,分配了一个会话 Cookie,然后是 OTP 提示。输入正确的 OTP 后,将颁发单独的 2FA-cookie-Token。要访问任何经过身份验证的终端节点,需要会话 cookie 和 2FA-cookie-Token。在这个请求中,我出于隐私原因删除了会话cookie,这个POST请求中的令牌实际上是一个CSRF Token。
速率限制机制:
最初,当我尝试多个不正确的 OTP 时,系统响应一条错误消息:
You have tried too many times. Please try again later.
这表明该应用程序通过限制尝试次数来防止暴力攻击。但引起我注意的是参数(虽然参数很多,但我只关注这个)。RAREPARA
旁路:
我尝试了许多方法来绕过速率限制,但大多数方法都没有成功。谁在乎啊?经过多次失败的尝试,我终于找到了合适的。我将在另一篇文章中讨论那些不成功的方法。
我决定通过修改参数来试验该请求。在尝试了不同的值后,我发送了带有空值的请求RAREPARA
RAREPARA
是的,完全绕过了速率限制保护!系统不再限制我的尝试,我可以不受任何限制地暴力破解 OTP。这意味着攻击者可以不断尝试不同的 OTP,直到他们成功登录受害者的帐户。
重现步骤:
-
使用有效凭证登录以接收 OTP。 -
在 Web 代理(如 Burp Suite)中捕获 OTP 请求。 -
确定提交 OTP 的 POST 请求。 - 在请求中找到该参数。
RAREPARA
-
发送多次不正确的 OTP 尝试并观察速率限制响应。 - 将 参数修改为空值,然后重新发送请求。
RAREPARA
-
请注意,速率限制被绕过,允许无限制的 OTP 尝试。 -
使用 Burp Intruder 自动暴力破解 OTP。 -
找到正确的 OTP 后,成功获得对帐户的未经授权的访问权限。
影响:
此漏洞非常严重,因为它直接导致了帐户接管。由于大多数 OTP 通常为 3 位数,因此攻击者可以在几秒钟内暴力破解正确的代码。考虑到漏洞利用的便利性和潜在的损害,公司奖励了我 12,000 美元的赏金。
有趣的是,他们对用户相关数据和任何类型的身份验证绕过非常感兴趣,这可能解释了为什么他们行动迅速并提供高额奖励。
经验 教训:
- 始终测试系统如何处理与速率限制相关的参数。
有时,修改或省略单个参数可以绕过限制。 - 简单性可以带来强大的力量。
这不是一次复杂的攻击,但产生了巨大的影响。
如果我犯了任何错误,很抱歉。
下一步是什么?
我尝试了其他几种绕过速率限制和 2FA 的技术,我将在另一篇详细的文章中介绍。请继续关注深入了解打破 2FA 保护的不同方法!
原文始发于微信公众号(安全狗的自我修养):12,000 美元的 2FA 旁路 — 如此简单,但如此关键!
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论