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

9.1 KiB

2FA/OTP Bypass

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

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?

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).

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 {% 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 {% 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"

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" %}

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks: