hacktricks/pentesting-web/2fa-bypass.md

7.9 KiB
Raw Blame History

2FA/OTP 绕过

通过 htARTE (HackTricks AWS Red Team Expert)从零开始学习 AWS 黑客攻击!

支持 HackTricks 的其他方式:

绕过双因素认证

直接绕过

要绕过 2FA只需直接尝试访问下一个端点(您需要知道下一个端点的路径)。如果这不起作用,尝试更改 Referrer 头,就好像您是从 2FA 页面来的。

重复使用令牌

也许您可以在账户内重复使用之前使用过的令牌进行认证。

分享未使用的令牌

检查是否可以从您的账户获取令牌,并尝试使用它来绕过不同账户的 2FA。

泄露的令牌

Web 应用程序的响应中是否泄露了令牌?

电子邮件验证链接

尝试使用创建账户时收到的电子邮件验证链接,看看即使设置了 2FA您是否仍然可以仅使用该链接访问您的个人资料文章)。

会话权限

使用相同的会话,使用您的账户和受害者的账户开始流程。在两个账户都到达 2FA 点时,使用您的账户完成 2FA但不要访问下一部分。相反尝试使用受害者账户的流程访问下一步。如果后端只是在您的会话中设置了一个布尔值表明您已成功通过了 2FA您将能够绕过受害者的 2FA。

密码重置功能

在几乎所有 Web 应用程序中,密码重置功能在重置程序完成后会自动将用户登录到应用程序
检查是否发送了一封带有链接邮件重置密码,以及您是否可以重复使用链接来重置密码尽可能多次(即使受害者更改了他的电子邮件地址)。

使用密码重置功能绕过 2FA 的另一种方法是通过访问邮件重置密码,然后使用新密码登录,可能在密码更改后不会使用 2FA。

OAuth

如果您能够在受信任的 OAuth 平台Google、Facebook...)上危害用户的账户...

暴力破解

缺乏速率限制

您可以尝试的代码数量是否有任何限制,所以您可以直接暴力破解它?小心可能的“无声”速率限制,始终尝试多个代码,然后是真正的代码以确认漏洞。

流速率限制但没有速率限制

在这种情况下存在流速率限制您必须非常慢地暴力破解1个线程和在2次尝试之前的一些睡眠但没有速率限制。所以如果有足够的时间您将能够找到有效的代码。

重新发送代码并重置限制

存在速率限制,但当您“重新发送代码”时,会发送相同的代码并重置速率限制。然后,您可以在重新发送它的同时暴力破解代码,这样就永远不会达到速率限制。

客户端速率限制绕过

{% content-ref url="rate-limit-bypass.md" %} rate-limit-bypass.md {% endcontent-ref %}

用户账户中缺乏速率限制

有时您可以为账户内的某些操作配置 2FA更改邮件、密码...)。然而,即使在您尝试登录时存在速率限制的情况下,也没有任何速率限制来保护账户内的操作。

通过短信重新发送代码时缺乏速率限制

您将无法绕过 2FA但您将能够浪费公司的钱。

无限 OTP 再生

如果您可以无限次生成新的 OTPOTP 足够简单4个数字并且您可以尝试每个生成的 OTP 最多 4 或 5 个令牌,您可以尝试相同的 4 或 5 个令牌,并生成 OTP 直到它与您正在使用的匹配。

竞态条件

查看以下页面的 2FA 绕过部分:

{% content-ref url="race-condition.md" %} race-condition.md {% endcontent-ref %}

CSRF/Clickjacking

检查是否存在跨站请求伪造CSRF或 Clickjacking 漏洞以禁用 2FA。

记住我功能

如果“记住我”功能使用带有可预测代码的新 cookie请尝试猜测它。

IP 地址

如果“记住我”功能与您的 IP 地址相关联,您可以尝试找出受害者的 IP 地址,并使用 X-Forwarded-For 头来冒充它。

旧版本

子域

如果您能找到带有登录功能的“测试”子域,它们可能使用不支持 2FA 的旧版本(因此直接绕过),或者这些端点可能支持 2FA 的易受攻击版本。

APIs

如果您发现 2FA 使用位于 /v*/ 目录下的 API如“/v3/”),这可能意味着存在可能易受某种 2FA 绕过攻击的旧 API 端点。

之前的会话

启用 2FA 时,应该结束之前创建的会话。这是因为当客户的账户被危害时,他可能希望通过激活 2FA 来保护它,但如果之前的会话没有结束,这将不会保护他。

对备份代码的不当访问控制

备份代码在启用 2FA 后立即生成,并且可以通过单个请求获得。在每次后续调用请求后,代码可以重新生成或保持不变(静态代码)。如果存在 CORS 配置错误/XSS 漏洞和其他允许您从备份代码端点的响应请求中“提取”备份代码的漏洞,那么攻击者可以窃取代码,并在知道用户名和密码的情况下绕过 2FA。

信息泄露

如果您注意到在 2FA 页面上出现了一些您之前不知道的机密信息(如电话号码),那么这可以被视为信息泄露漏洞。

密码重置 == 禁用 2FA

  1. 创建一个账户并开启 2FA。
  2. 从该账户注销。
  3. 现在,转到忘记密码重置页面。
  4. 更改您的密码。
  5. 现在尝试登录。
  6. 如果您没有被要求输入 2FA 代码,您可以报告。

参考资料

{% embed url="https://medium.com/@iSecMax/two-factor-authentication-security-testing-and-possible-bypasses-f65650412b35" %}

{% embed url="https://azwi.medium.com/2-factor-authentication-bypass-3b2bbd907718" %}

通过 htARTE (HackTricks AWS Red Team Expert)从零开始学习 AWS 黑客攻击!

支持 HackTricks 的其他方式: