mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-22 19:13:39 +00:00
150 lines
9.9 KiB
Markdown
150 lines
9.9 KiB
Markdown
# Bypassando autenticação de dois fatores (2FA/OTP)
|
|
|
|
<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>
|
|
|
|
* Você trabalha em uma **empresa de segurança cibernética**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo Telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|
|
|
|
## **Bypass de autenticação de dois fatores**
|
|
|
|
### **Bypass direto**
|
|
|
|
Para burlar o 2FA, basta **tentar acessar diretamente o próximo endpoint** (você precisa saber o caminho do próximo endpoint). Se isso não funcionar, tente alterar o **cabeçalho Referrer** como se você viesse da página de 2FA.
|
|
|
|
### **Reutilização de token**
|
|
|
|
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 tente usá-lo para burlar o 2FA em uma conta diferente.
|
|
|
|
### Token vazado
|
|
|
|
O token vazou em uma resposta da aplicação web?
|
|
|
|
### Link de verificação de e-mail
|
|
|
|
Tente usar o **link de verificação de e-mail recebido quando a conta foi criada** para ver se, mesmo que o 2FA tenha sido 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 atingir o ponto de 2FA em ambas as contas, conclua o 2FA com sua conta, mas não acesse a próxima parte. Em vez disso, tente acessar a próxima etapa com o fluxo da conta da vítima. Se o back-end apenas definir um booleano dentro de suas sessões dizendo que você passou com sucesso pelo 2FA, você poderá burlar o 2FA da vítima.
|
|
|
|
### Função de redefinição de senha
|
|
|
|
Em quase todas as aplicações web, a **função de redefinição de senha faz login automaticamente** no aplicativo após o procedimento de redefinição ser concluído.\
|
|
Verifique se um **e-mail** é enviado com um **link** para **redefinir a senha** e se você pode **reutilizar** esse **link** para redefinir a senha **quantas vezes quiser** (mesmo que a vítima altere seu endereço de e-mail).
|
|
|
|
### OAuth
|
|
|
|
Se você puder comprometer a conta do usuário em uma plataforma de **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 fazer uma força 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
|
|
|
|
Nesse caso, há um limite de taxa de fluxo (você precisa fazer a força bruta muito devagar: 1 thread e algum tempo de espera antes de 2 tentativas), mas sem limite de taxa. Portanto, com tempo suficiente, você pode encontrar o código válido.
|
|
|
|
#### Reenviar código e redefinir o limite
|
|
|
|
Existe um limite de taxa, mas quando você "reenvia o código", o mesmo código é enviado e o limite de taxa é redefinido. Em seguida, você pode fazer a força bruta do código enquanto o reenvia, para que o limite de taxa nunca seja atingido.
|
|
|
|
#### Bypass de limite de taxa no 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 (alterar e-mail, senha...). No entanto, mesmo nos casos em que há um limite de taxa ao tentar fazer login, não há limite de taxa para proteger as ações dentro da conta.
|
|
|
|
#### Falta de limite de taxa ao reenviar o código via SMS
|
|
|
|
Você não poderá burlar o 2FA, mas poderá gastar o dinheiro da empresa.
|
|
|
|
#### Regeneração infinita de OTP
|
|
|
|
Se você puder **gerar um novo OTP infinitas vezes**, o OTP for **suficientemente simples** (4 números) e você puder tentar até 4 ou 5 tokens por OTP gerado, basta tentar os mesmos 4 ou 5 tokens todas as vezes e gerar OTPs até que corresponda aos que você está usando.
|
|
|
|
### Condição de corrida
|
|
|
|
Verifique a seção sobre o bypass de 2FA na seguinte página:
|
|
|
|
{% content-ref url="race-condition.md" %}
|
|
[race-condition.md](race-condition.md)
|
|
{% endcontent-ref %}
|
|
|
|
### CSRF/Clickjacking
|
|
|
|
Verifique se há uma vulnerabilidade de Cross Site Request Forgery (CSRF) ou Clickjacking para desativar o 2FA.
|
|
|
|
### Funcionalidade de "lembrar-me"
|
|
#### Cookie previsível
|
|
|
|
Se a funcionalidade "lembrar-me" usa um novo cookie com um código previsível, tente adivinhá-lo.
|
|
|
|
#### Endereço IP
|
|
|
|
Se a funcionalidade "lembrar-me" está vinculada ao seu endereço IP, você pode tentar descobrir o endereço IP da vítima e se passar por ela usando o cabeçalho **X-Forwarded-For**.
|
|
|
|
### Versões mais 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 (portanto, são diretamente ignorados) ou esses endpoints podem suportar uma versão vulnerável do 2FA.
|
|
|
|
#### APIs
|
|
|
|
Se você descobrir que o 2FA está usando uma API localizada em um diretório /v\* (como "/v3/"), isso provavelmente significa que existem endpoints de API mais antigos que podem ser vulneráveis a algum tipo de bypass de 2FA.
|
|
|
|
### Sessões anteriores
|
|
|
|
Quando o 2FA está ativado, as sessões anteriores criadas devem ser encerradas. Isso ocorre 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
|
|
|
|
Os códigos de backup são gerados imediatamente após a ativação do 2FA 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" os códigos de backup da solicitação de resposta do endpoint de código de backup, o atacante poderá roubar os códigos e ignorar o 2FA se o nome de usuário e a senha forem conhecidos.
|
|
|
|
### Divulgação de informações
|
|
|
|
Se você notar algumas informações confidenciais aparecendo na página de 2FA que você não conhecia anteriormente (como o número de telefone), isso pode ser considerado uma vulnerabilidade de divulgação de informações.
|
|
|
|
### **Redefinição de senha == desativar 2FA**
|
|
|
|
1. Crie uma conta e ative o 2FA.
|
|
2. Faça logout dessa conta.
|
|
3. Agora, vá para a página de redefinição de senha.
|
|
4. Altere sua senha.
|
|
5. Tente fazer login.
|
|
6. Se você não for solicitado a inserir um código 2FA, você pode relatar.
|
|
|
|
## 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><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>
|
|
|
|
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|