8.7 KiB
2FA/OTP绕过
☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在一家网络安全公司工作吗?你想在HackTricks中看到你的公司广告吗?或者你想获得PEASS的最新版本或下载PDF格式的HackTricks吗?请查看订阅计划!
- 发现我们的独家NFTs收藏品The PEASS Family
- 获取官方PEASS和HackTricks周边产品
- 加入💬 Discord群组 或 电报群组 或 关注我在Twitter上的🐦@carlospolopm。
- 通过向hacktricks repo 和hacktricks-cloud repo 提交PR来分享你的黑客技巧。
绕过双因素认证
直接绕过
要绕过2FA,只需直接尝试访问下一个端点(您需要知道下一个端点的路径)。如果这样不起作用,请尝试更改引用者标头,就好像您来自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)或点击劫持漏洞以禁用2FA。
记住我功能
可猜测的Cookie
如果“记住我”功能使用一个可猜测的代码的新Cookie,尝试猜测它。
IP地址
如果“记住我”功能与您的IP地址相关联,您可以尝试找出受害者的IP地址,并使用X-Forwarded-For头部进行冒充。
旧版本
子域名
如果您能找到一些带有登录功能的“测试”子域名,它们可能使用不支持2FA的旧版本(因此可以直接绕过),或者这些端点可能支持一个易受攻击的2FA版本。
API
如果您发现2FA正在使用位于/v*/目录下的API(如“/v3/”),这可能意味着存在旧的API端点,可能容易受到某种2FA绕过的攻击。
先前的会话
启用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" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 您在网络安全公司工作吗?您想在HackTricks中看到您的公司广告吗?或者您想获得PEASS的最新版本或下载PDF格式的HackTricks吗?请查看订阅计划!
- 发现我们的独家NFT收藏品The PEASS Family
- 获取官方PEASS和HackTricks周边产品
- 加入💬 Discord群组或电报群组,或在Twitter上关注我🐦@carlospolopm。
- 通过向hacktricks repo 和hacktricks-cloud repo 提交PR来分享您的黑客技巧。