mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-28 07:31:10 +00:00
157 lines
9.1 KiB
Markdown
157 lines
9.1 KiB
Markdown
# 2FA/OTP Bypass
|
|
|
|
<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>
|
|
|
|
## **Bypassing two-factor authentication**
|
|
|
|
### **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**
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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.
|
|
|
|
### 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>
|