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

158 lines
9.1 KiB
Markdown
Raw Normal View History

# 2FA/OTP Bypass
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>
## **Bypassing two-factor authentication**
2022-04-28 16:01:33 +00:00
### **Bypass direto**
Para fazer bypass no 2FA, **tente acessar o próximo endpoint diretamente** (você precisa saber o caminho do próximo endpoint). Se isso não funcionar, tente mudar o **cabeçalho Referrer** como se você tivesse vindo da página do 2FA.
### **Reutilização de token**
2023-06-06 18:56:34 +00:00
Talvez você possa reutilizar um token previamente usado dentro da conta para autenticar.
### Compartilhamento de tokens não utilizados
Verifique se você pode obter o token da sua conta e tentar usá-lo para fazer bypass no 2FA em uma conta diferente.
### Token Vazado
O token está vazado em uma resposta da aplicação web?
### Link de verificação de email
Tente usar o **link de verificação de email recebido quando a conta foi criada** para ver se, mesmo com o 2FA configurado, você ainda pode acessar seu perfil apenas com esse link ([post](https://srahulceh.medium.com/behind-the-scenes-of-a-security-bug-the-perils-of-2fa-cookie-generation-496d9519771b)).
### Permissão de sessão
Usando a mesma sessão, inicie o fluxo usando sua conta e a conta da vítima. Ao chegar no ponto do 2FA em ambas as contas, complete o 2FA com sua conta, mas não acesse a próxima parte. Em vez disso, tente acessar o próximo passo com o fluxo da conta da vítima. Se o back-end apenas configurou um booleano dentro de suas sessões dizendo que você passou com sucesso pelo 2FA, você poderá fazer bypass no 2FA da vítima.
### **Função de reset de senha**
Em quase todas as aplicações web, a **função de reset de senha automaticamente loga o usuário na aplicação** após o procedimento de reset ser completado.\
Verifique se um **email** é enviado com um **link** para **resetar a senha** e se você pode **reutilizar** esse **link** para resetar a senha **quantas vezes quiser** (mesmo que a vítima mude seu endereço de email).
Outra opção para fazer bypass no 2FA com a funcionalidade de reset de senha é **resetar a senha com acesso ao email** e usar a **nova senha para logar**, pode ser possível que após uma mudança de senha o 2FA não seja usado.
### OAuth
Se você pode comprometer a conta do usuário em uma plataforma **OAuth** confiável (Google, Facebook...)
### Força bruta
#### Falta de limite de taxa
Existe algum limite no número de códigos que você pode tentar, para que você possa simplesmente forçar bruta? Tenha cuidado com um possível limite de taxa "silencioso", sempre tente vários códigos e depois o real para confirmar a vulnerabilidade.
#### Limite de taxa de fluxo mas sem limite de taxa
Neste caso, existe um limite de taxa de fluxo (você tem que forçar bruta muito lentamente: 1 thread e algum sono antes de 2 tentativas) mas sem limite de taxa. Então, com tempo suficiente, você pode ser capaz de encontrar o código válido.
#### Reenviar código e resetar o limite
Existe um limite de taxa, mas quando você "reenvia o código", o mesmo código é enviado e o limite de taxa é resetado. Então, você pode forçar bruta o código enquanto o reenvia para que o limite de taxa nunca seja alcançado.
#### Bypass de limite de taxa do lado do cliente
{% content-ref url="rate-limit-bypass.md" %}
[rate-limit-bypass.md](rate-limit-bypass.md)
{% endcontent-ref %}
#### Falta de limite de taxa na conta do usuário
Às vezes você pode configurar o 2FA para algumas ações dentro da sua conta (mudar email, senha...). No entanto, mesmo em casos onde existe um limite de taxa quando você tentou fazer login, não há nenhum limite de taxa para proteger ações dentro da conta.
#### Falta de limite de taxa reenviando o código via SMS
Você não será capaz de fazer bypass no 2FA, mas será capaz de gastar o dinheiro da empresa.
#### Regeneração infinita de OTP
Se você pode **gerar um novo OTP infinitas vezes**, o OTP é **simples o suficiente** (4 números), e você pode tentar até 4 ou 5 tokens por OTP gerado, você pode simplesmente tentar os mesmos 4 ou 5 tokens toda vez e gerar OTPs até que coincida com os que você está usando.
### Condição de corrida
Verifique a seção sobre bypass de 2FA da seguinte página:
{% content-ref url="race-condition.md" %}
[race-condition.md](race-condition.md)
{% endcontent-ref %}
### CSRF/Clickjacking
Verifique se existe uma vulnerabilidade de Cross Site Request Forgery (CSRF) ou Clickjacking para desativar o 2FA.
### Funcionalidade "Lembrar de mim"
#### Cookie previsível
Se a funcionalidade "lembrar de mim" usa um novo cookie com um código previsível, tente adivinhá-lo.
#### Endereço IP
2021-10-07 09:43:36 +00:00
Se a funcionalidade "lembrar de mim" está vinculada ao seu endereço IP, você pode tentar descobrir o endereço IP da vítima e se passar por ele usando o cabeçalho **X-Forwarded-For**.
### Versões antigas
#### Subdomínios
Se você encontrar alguns subdomínios "de teste" com a funcionalidade de login, eles podem estar usando versões antigas que não suportam 2FA (então é diretamente bypassado) ou esses endpoints podem suportar uma versão vulnerável do 2FA.
#### APIs
Se você descobrir que o 2FA está usando uma API localizada sob um diretório /v\*/ (como "/v3/"), isso provavelmente significa que existem endpoints de API mais antigos que poderiam ser vulneráveis a algum tipo de bypass de 2FA.
### Sessões anteriores
Quando o 2FA é habilitado, sessões anteriores criadas devem ser encerradas. Isso porque quando um cliente tem sua conta comprometida, ele pode querer protegê-la ativando o 2FA, mas se as sessões anteriores não forem encerradas, isso não o protegerá.
### Controle de acesso inadequado a códigos de backup
2022-04-28 16:01:33 +00:00
Códigos de backup são gerados imediatamente após o 2FA ser habilitado e estão disponíveis em uma única solicitação. Após cada chamada subsequente à solicitação, os códigos podem ser regenerados ou permanecer inalterados (códigos estáticos). Se houver configurações incorretas de CORS/vulnerabilidades de XSS e outros bugs que permitam "puxar" códigos de backup da solicitação de resposta do endpoint de código de backup, então o atacante poderia roubar os códigos e fazer bypass no 2FA se o nome de usuário e senha forem conhecidos.
2022-04-28 16:01:33 +00:00
### Divulgação de Informação
Se você notar que algumas informações confidenciais aparecem na página do 2FA que você não sabia anteriormente (como o número de telefone), então isso pode ser considerado uma vulnerabilidade de divulgação de informação.
### **Reset de Senha == desativar 2FA**
1. Crie uma Conta e Ative o 2FA.
2. Saia dessa conta.
3. Agora, vá para a página de esqueci a senha para Resetar a Senha.
4. Mude sua senha.
5. Agora tente fazer login.
6. Se você não for solicitado a inserir um código de 2FA, Você pode reportar.
## Referências
{% 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><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>