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

150 lines
8.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 2FA/OTP绕过
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 YouTube 🎥</strong></a></summary>
* 你在一家**网络安全公司**工作吗想要在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来分享你的黑客技巧。**
</details>
## **绕过双因素认证**
### **直接绕过**
要绕过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" %}
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* 您在**网络安全公司**工作吗您想在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来分享您的黑客技巧。**
</details>