hacktricks/pentesting-web/reset-password.md

229 lines
12 KiB
Markdown

# Bypass de Redefinição/Senha Esquecida
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Suporte ao HackTricks</summary>
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (3).png" alt=""><figcaption></figcaption></figure>
Junte-se ao [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para se comunicar com hackers experientes e caçadores de bugs!
**Insights de Hacking**\
Engaje-se com conteúdo que explora a emoção e os desafios do hacking
**Notícias de Hacking em Tempo Real**\
Mantenha-se atualizado com o mundo acelerado do hacking através de notícias e insights em tempo real
**Últimos Anúncios**\
Fique informado sobre os novos programas de recompensas por bugs lançados e atualizações cruciais da plataforma
**Junte-se a nós no** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e comece a colaborar com os melhores hackers hoje!
## **Vazamento de Token de Redefinição de Senha Via Referer**
* O cabeçalho HTTP referer pode vazar o token de redefinição de senha se estiver incluído na URL. Isso pode ocorrer quando um usuário clica em um link de um site de terceiros após solicitar uma redefinição de senha.
* **Impacto**: Potencial tomada de conta via ataques de Cross-Site Request Forgery (CSRF).
* **Exploração**: Para verificar se um token de redefinição de senha está vazando no cabeçalho referer, **solicite uma redefinição de senha** para seu endereço de e-mail e **clique no link de redefinição** fornecido. **Não altere sua senha** imediatamente. Em vez disso, **navegue até um site de terceiros** (como Facebook ou Twitter) enquanto **intercepta as requisições usando Burp Suite**. Inspecione as requisições para ver se o **cabeçalho referer contém o token de redefinição de senha**, pois isso pode expor informações sensíveis a terceiros.
* **Referências**:
* [HackerOne Report 342693](https://hackerone.com/reports/342693)
* [HackerOne Report 272379](https://hackerone.com/reports/272379)
* [Artigo sobre Vazamento de Token de Redefinição de Senha](https://medium.com/@rubiojhayz1234/toyotas-password-reset-token-and-email-address-leak-via-referer-header-b0ede6507c6a)
## **Envenenamento de Redefinição de Senha**
* Os atacantes podem manipular o cabeçalho Host durante as solicitações de redefinição de senha para direcionar o link de redefinição para um site malicioso.
* **Impacto**: Leva a uma potencial tomada de conta ao vazar tokens de redefinição para os atacantes.
* **Passos de Mitigação**:
* Valide o cabeçalho Host contra uma lista de domínios permitidos.
* Use métodos seguros do lado do servidor para gerar URLs absolutas.
* **Correção**: Use `$_SERVER['SERVER_NAME']` para construir URLs de redefinição de senha em vez de `$_SERVER['HTTP_HOST']`.
* **Referências**:
* [Artigo da Acunetix sobre Envenenamento de Redefinição de Senha](https://www.acunetix.com/blog/articles/password-reset-poisoning/)
## **Redefinição de Senha Manipulando o Parâmetro de E-mail**
Os atacantes podem manipular a solicitação de redefinição de senha adicionando parâmetros de e-mail adicionais para desviar o link de redefiniçã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 e-mail do atacante como segundo parâmetro usando %20
```php
POST /resetPassword
[...]
email=victim@email.com%20email=attacker@email.com
```
* Adicione o e-mail do atacante como segundo parâmetro usando |
```php
POST /resetPassword
[...]
email=victim@email.com|email=attacker@email.com
```
* Adicione o e-mail do atacante como segundo parâmetro usando cc
```php
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dcc:attacker@mail.tld"
```
* Adicione o e-mail do atacante como segundo parâmetro usando bcc
```php
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dbcc:attacker@mail.tld"
```
* Adicione o e-mail do atacante como segundo parâmetro usando ,
```php
POST /resetPassword
[...]
email="victim@mail.tld",email="attacker@mail.tld"
```
* Adicione o e-mail do atacante como segundo parâmetro no array json
```php
POST /resetPassword
[...]
{"email":["victim@mail.tld","atracker@mail.tld"]}
```
* **Etapas de Mitigação**:
* Analise e valide corretamente os parâmetros de email no lado do servidor.
* Use declarações preparadas ou consultas parametrizadas para prevenir ataques de injeção.
* **Referências**:
* [https://medium.com/@0xankush/readme-com-account-takeover-bugbounty-fulldisclosure-a36ddbe915be](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://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](https://twitter.com/HusseiN98D/status/1254888748216655872)
## **Mudando o Email e a Senha de qualquer Usuário através de Parâmetros da API**
* Os atacantes podem modificar os parâmetros de email e senha em solicitações da API para alterar as credenciais da conta.
```php
POST /api/changepass
[...]
("form": {"email":"victim@email.tld","password":"12345678"})
```
* **Passos de Mitigação**:
* Garantir validação rigorosa de parâmetros e verificações de autenticação.
* Implementar registro e monitoramento robustos para detectar e responder a atividades suspeitas.
* **Referência**:
* [Full Account Takeover via API Parameter Manipulation](https://medium.com/@adeshkolte/full-account-takeover-changing-email-and-password-of-any-user-through-api-parameters-3d527ab27240)
## **Sem Limitação de Taxa: Bombardeio de Email**
* A falta de limitação de taxa em solicitações de redefinição de senha pode levar ao bombardeio de email, sobrecarregando o usuário com emails de redefinição.
* **Passos de Mitigação**:
* Implementar limitação de taxa com base no endereço IP ou na conta do usuário.
* Usar desafios CAPTCHA para prevenir abusos automatizados.
* **Referências**:
* [HackerOne Report 280534](https://hackerone.com/reports/280534)
## **Descubra Como o Token de Redefinição de Senha é Gerado**
* Compreender o padrão ou método por trás da geração de tokens pode levar à previsão ou força bruta de tokens. Algumas opções:
* Baseado em Timestamp
* Baseado no UserID
* Baseado no email do Usuário
* Baseado no Primeiro Nome e Sobrenome
* Baseado na Data de Nascimento
* Baseado em Criptografia
* **Passos de Mitigação**:
* Usar métodos fortes e criptográficos para geração de tokens.
* Garantir aleatoriedade e comprimento suficientes para prevenir previsibilidade.
* **Ferramentas**: Use Burp Sequencer para analisar a aleatoriedade dos tokens.
## **UUID Adivinhável**
* Se UUIDs (versão 1) forem adivinháveis ou previsíveis, atacantes podem forçá-los para gerar tokens de redefinição válidos. Verifique:
{% content-ref url="uuid-insecurities.md" %}
[uuid-insecurities.md](uuid-insecurities.md)
{% endcontent-ref %}
* **Passos de Mitigação**:
* Usar GUID versão 4 para aleatoriedade ou implementar medidas de segurança adicionais para outras versões.
* **Ferramentas**: Use [guidtool](https://github.com/intruder-io/guidtool) para analisar e gerar GUIDs.
## **Manipulação de Resposta: Substituir Resposta Ruim por Boa**
* Manipulando respostas HTTP para contornar mensagens de erro ou restrições.
* **Passos de Mitigação**:
* Implementar verificações do lado do servidor para garantir a integridade da resposta.
* Usar canais de comunicação seguros como HTTPS para prevenir ataques man-in-the-middle.
* **Referência**:
* [Critical Bug in Live Bug Bounty Event](https://medium.com/@innocenthacker/how-i-found-the-most-critical-bug-in-live-bug-bounty-event-7a88b3aa97b3)
## **Usando Token Expirado**
* Testando se tokens expirados ainda podem ser usados para redefinição de senha.
* **Passos de Mitigação**:
* Implementar políticas rigorosas de expiração de tokens e validar a expiração do token no lado do servidor.
## **Força Bruta do Token de Redefinição de Senha**
* Tentando forçar o token de redefinição usando ferramentas como Burpsuite e IP-Rotator para contornar limites de taxa baseados em IP.
* **Passos de Mitigação**:
* Implementar mecanismos robustos de limitação de taxa e bloqueio de conta.
* Monitorar atividades suspeitas indicativas de ataques de força bruta.
## **Tente Usar Seu Token**
* Testando se o token de redefinição de um atacante pode ser usado em conjunto com o email da vítima.
* **Passos de Mitigação**:
* Garantir que os tokens estejam vinculados à sessão do usuário ou a outros atributos específicos do usuário.
## **Invalidar Sessão em Logout/Redefinição de Senha**
* Garantir que as sessões sejam invalidadas quando um usuário faz logout ou redefine sua senha.
* **Passos de Mitigação**:
* Implementar gerenciamento adequado de sessões, garantindo que todas as sessões sejam invalidadas ao fazer logout ou redefinir a senha.
## **Invalidar Sessão em Logout/Redefinição de Senha**
* Tokens de redefinição devem ter um tempo de expiração após o qual se tornam inválidos.
* **Passos de Mitigação**:
* Definir um tempo de expiração razoável para tokens de redefinição e aplicá-lo rigorosamente no lado do servidor.
## Referências
* [https://anugrahsr.github.io/posts/10-Password-reset-flaws/#10-try-using-your-token](https://anugrahsr.github.io/posts/10-Password-reset-flaws/#10-try-using-your-token)
<figure><img src="../.gitbook/assets/image (3).png" alt=""><figcaption></figcaption></figure>
Junte-se ao [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para se comunicar com hackers experientes e caçadores de bugs!
**Insights de Hacking**\
Engaje-se com conteúdo que mergulha na emoção e nos desafios do hacking
**Notícias de Hack em Tempo Real**\
Mantenha-se atualizado com o mundo do hacking em ritmo acelerado através de notícias e insights em tempo real
**Últimos Anúncios**\
Fique informado sobre as novas recompensas de bugs lançadas e atualizações cruciais da plataforma
**Junte-se a nós no** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e comece a colaborar com os melhores hackers hoje!
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
{% endhint %}