# 2FA/OTP绕过
☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 YouTube 🎥
* 你在一家**网络安全公司**工作吗?想要在HackTricks中看到你的**公司广告**吗?或者你想要**获取PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品——[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram群组**](https://t.me/peass) 或 **关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
## **绕过双因素认证**
### **直接绕过**
要绕过2FA,只需**直接尝试访问下一个端点**(您需要知道下一个端点的路径)。如果这样不起作用,请尝试更改**引用页头**,就好像您来自2FA页面。
### **重用令牌**
也许您可以重用账户内先前使用过的令牌进行身份验证。
### 共享未使用的令牌
检查是否可以从您的账户中获取令牌,并尝试使用它来绕过另一个账户的2FA。
### 泄露的令牌
令牌是否在Web应用程序的响应中泄露?
### 电子邮件验证链接
尝试使用创建账户时收到的**电子邮件验证链接**,看看即使设置了2FA,您是否仍然可以只使用该链接访问您的个人资料([文章](https://srahulceh.medium.com/behind-the-scenes-of-a-security-bug-the-perils-of-2fa-cookie-generation-496d9519771b))。
### 会话权限
使用相同的会话启动流程,使用您的账户和受害者的账户。当两个账户都达到2FA点时,使用您的账户完成2FA,但不要访问下一步。相反,尝试使用受害者账户的流程访问下一步。如果后端只是在您的会话中设置一个布尔值,表示您已成功通过了2FA,则可以绕过受害者的2FA。
### **密码重置功能**
在几乎所有的Web应用程序中,**密码重置功能在重置过程完成后会自动登录用户**。\
检查是否发送了一封带有重置密码链接的**邮件**,以及您是否可以**重复使用**该**链接**重置密码,**无论受害者是否更改了他的电子邮件地址**。
### OAuth
如果您可以入侵用户在受信任的**OAuth**平台(Google、Facebook...)上的账户
### 暴力破解
#### 缺乏速率限制
是否有任何限制您可以尝试的代码数量,以便您可以进行暴力破解?要小心可能存在的“静默”速率限制,始终尝试多个代码,然后再尝试真正的代码以确认漏洞。
#### 速率限制流程但无速率限制
在这种情况下,存在流程速率限制(您必须非常缓慢地进行暴力破解:1个线程和一些延迟,然后再尝试2次),但没有速率限制。因此,只要有足够的时间,您就可以找到有效的代码。
#### 重新发送代码并重置限制
存在速率限制,但当您“重新发送代码”时,相同的代码被发送,并且速率限制被重置。然后,您可以在重新发送代码的同时进行代码暴力破解,以便永远不会达到速率限制。
#### 客户端速率限制绕过
{% content-ref url="rate-limit-bypass.md" %}
[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](race-condition.md)
{% endcontent-ref %}
### CSRF/点击劫持
检查是否存在跨站请求伪造(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**
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" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* 您在**网络安全公司**工作吗?您想在HackTricks中看到您的**公司广告**吗?或者您想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 发现我们的独家[NFT](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或在**Twitter**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**