7.9 KiB
2FA/OTP 绕过
通过 htARTE (HackTricks AWS Red Team Expert)从零开始学习 AWS 黑客攻击!
支持 HackTricks 的其他方式:
- 如果您想在 HackTricks 中看到您的公司广告或下载 HackTricks 的 PDF,请查看订阅计划!
- 获取官方 PEASS & HackTricks 商品
- 发现PEASS 家族,我们独家的NFTs 集合
- 加入 💬 Discord 群组 或 telegram 群组 或在 Twitter 🐦 上关注我 @carlospolopm。
- 通过向 HackTricks 和 HackTricks Cloud github 仓库提交 PR 来分享您的黑客技巧。
绕过双因素认证
直接绕过
要绕过 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 再生
如果您可以无限次生成新的 OTP,OTP 足够简单(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
如果“记住我”功能使用带有可预测代码的新 cookie,请尝试猜测它。
IP 地址
如果“记住我”功能与您的 IP 地址相关联,您可以尝试找出受害者的 IP 地址,并使用 X-Forwarded-For 头来冒充它。
旧版本
子域
如果您能找到带有登录功能的“测试”子域,它们可能使用不支持 2FA 的旧版本(因此直接绕过),或者这些端点可能支持 2FA 的易受攻击版本。
APIs
如果您发现 2FA 使用位于 /v*/ 目录下的 API(如“/v3/”),这可能意味着存在可能易受某种 2FA 绕过攻击的旧 API 端点。
之前的会话
启用 2FA 时,应该结束之前创建的会话。这是因为当客户的账户被危害时,他可能希望通过激活 2FA 来保护它,但如果之前的会话没有结束,这将不会保护他。
对备份代码的不当访问控制
备份代码在启用 2FA 后立即生成,并且可以通过单个请求获得。在每次后续调用请求后,代码可以重新生成或保持不变(静态代码)。如果存在 CORS 配置错误/XSS 漏洞和其他允许您从备份代码端点的响应请求中“提取”备份代码的漏洞,那么攻击者可以窃取代码,并在知道用户名和密码的情况下绕过 2FA。
信息泄露
如果您注意到在 2FA 页面上出现了一些您之前不知道的机密信息(如电话号码),那么这可以被视为信息泄露漏洞。
密码重置 == 禁用 2FA
- 创建一个账户并开启 2FA。
- 从该账户注销。
- 现在,转到忘记密码重置页面。
- 更改您的密码。
- 现在尝试登录。
- 如果您没有被要求输入 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 的其他方式:
- 如果您想在 HackTricks 中看到您的公司广告或下载 HackTricks 的 PDF,请查看订阅计划!
- 获取官方 PEASS & HackTricks 商品
- 发现PEASS 家族,我们独家的NFTs 集合
- 加入 💬 Discord 群组 或 telegram 群组 或在 Twitter 🐦 上关注我 @carlospolopm。
- 通过向 HackTricks 和 HackTricks Cloud github 仓库提交 PR 来分享您的黑客技巧。