Réinitialisation/oubli de mot de passe
Reading time: 8 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépôts github.
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.
- 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 :
- HackerOne Report 342693
- HackerOne Report 272379
- Article sur la fuite de jeton de réinitialisation de mot de passe
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.
- É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.
- Patch : Utilisez
$_SERVER['SERVER_NAME']
pour construire des URL de réinitialisation de mot de passe au lieu de$_SERVER['HTTP_HOST']
. - Références :
- Article Acunetix sur l'empoisonnement de réinitialisation de mot de passe
Réinitialisation de mot de passe en manipulant le paramètre email
Les attaquants peuvent manipuler la demande de réinitialisation de mot de passe en ajoutant des paramètres d'email supplémentaires pour détourner le lien de réinitialisation.
- Ajoutez l'email de l'attaquant comme deuxième paramètre en utilisant &
php
POST /resetPassword
[...]
email=victim@email.com&email=attacker@email.com
- Ajoutez l'email de l'attaquant comme deuxième paramètre en utilisant %20
php
POST /resetPassword
[...]
email=victim@email.com%20email=attacker@email.com
- Ajoutez l'email de l'attaquant comme deuxième paramètre en utilisant |
php
POST /resetPassword
[...]
email=victim@email.com|email=attacker@email.com
- Ajoutez l'email de l'attaquant comme deuxième paramètre en utilisant cc
php
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dcc:attacker@mail.tld"
- Ajoutez l'email de l'attaquant comme deuxième paramètre en utilisant bcc
php
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dbcc:attacker@mail.tld"
- Ajoutez l'email de l'attaquant comme deuxième paramètre en utilisant ,
php
POST /resetPassword
[...]
email="victim@mail.tld",email="attacker@mail.tld"
- Ajoutez l'email de l'attaquant comme deuxième paramètre dans le tableau json.
php
POST /resetPassword
[...]
{"email":["victim@mail.tld","atracker@mail.tld"]}
- Étapes d'atténuation :
- Analyser et valider correctement les paramètres d'email côté serveur.
- Utiliser des instructions préparées ou des requêtes paramétrées pour prévenir les attaques par injection.
- Références :
- 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
Changer l'email et le mot de passe de n'importe quel utilisateur via les paramètres API
- Les attaquants peuvent modifier les paramètres d'email et de mot de passe dans les requêtes API pour changer les identifiants du compte.
php
POST /api/changepass
[...]
("form": {"email":"victim@email.tld","password":"12345678"})
- Étapes d'atténuation :
- Assurez-vous d'une validation stricte des paramètres et des vérifications d'authentification.
- Mettez en œuvre une journalisation et une surveillance robustes pour détecter et répondre aux activités suspectes.
- Référence :
- Prise de contrôle complète du compte via manipulation des paramètres API
Pas de limitation de taux : Email Bombing
- L'absence de limitation de taux sur les demandes de réinitialisation de mot de passe peut entraîner un bombardement d'emails, submergeant l'utilisateur avec des emails de réinitialisation.
- Étapes d'atténuation :
- Mettez en œuvre une limitation de taux basée sur l'adresse IP ou le compte utilisateur.
- Utilisez des défis CAPTCHA pour prévenir les abus automatisés.
- Références :
- HackerOne Rapport 280534
Découvrez comment le jeton de réinitialisation de mot de passe est généré
- Comprendre le modèle ou la méthode derrière la génération de jetons peut conduire à prédire ou à forcer des jetons. Quelques options :
- Basé sur l'horodatage
- Basé sur l'ID utilisateur
- Basé sur l'email de l'utilisateur
- Basé sur le prénom et le nom
- Basé sur la date de naissance
- Basé sur la cryptographie
- Étapes d'atténuation :
- Utilisez des méthodes cryptographiques solides pour la génération de jetons.
- Assurez-vous d'une randomisation et d'une longueur suffisantes pour prévenir la prévisibilité.
- Outils : Utilisez Burp Sequencer pour analyser la randomisation des jetons.
UUID devinable
- Si les UUID (version 1) sont devinables ou prévisibles, les attaquants peuvent les forcer pour générer des jetons de réinitialisation valides. Vérifiez :
- Étapes d'atténuation :
- Utilisez la version 4 de GUID pour la randomisation ou mettez en œuvre des mesures de sécurité supplémentaires pour d'autres versions.
- Outils : Utilisez guidtool pour analyser et générer des GUID.
Manipulation de réponse : Remplacer une mauvaise réponse par une bonne
- Manipuler les réponses HTTP pour contourner les messages d'erreur ou les restrictions.
- Étapes d'atténuation :
- Mettez en œuvre des vérifications côté serveur pour garantir l'intégrité des réponses.
- Utilisez des canaux de communication sécurisés comme HTTPS pour prévenir les attaques de type homme du milieu.
- Référence :
- Bug critique dans un événement de bug bounty en direct
Utilisation de 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 :
- Mettez en œuvre des politiques strictes d'expiration des jetons et validez l'expiration des jetons côté serveur.
Brute Force du jeton de réinitialisation de mot de passe
- Tenter de forcer le jeton de réinitialisation en utilisant des outils comme Burpsuite et IP-Rotator pour contourner les limites de taux basées sur l'IP.
- Étapes d'atténuation :
- Mettez en œuvre des mécanismes robustes de limitation de taux et de verrouillage de compte.
- Surveillez les activités suspectes indiquant des attaques par force brute.
Essayez d'utiliser votre jeton
- Tester si le jeton de réinitialisation d'un attaquant peut être utilisé en conjonction avec l'email de la victime.
- Étapes d'atténuation :
- Assurez-vous que les jetons sont liés à la session utilisateur ou à d'autres attributs spécifiques à l'utilisateur.
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.
- É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.
Invalidation de session lors de la déconnexion/réinitialisation de mot de passe
- Les jetons de réinitialisation doivent avoir un temps d'expiration après lequel ils deviennent invalides.
- Étapes d'atténuation :
- Définissez un temps d'expiration raisonnable pour les jetons de réinitialisation et appliquez-le strictement côté serveur.
Références
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépôts github.