Empoisonnement basique du mécanisme de réinitialisation de mot de passe

Basic password reset poisoning

Description du laboratoire

Ce laboratoire présente une vulnérabilité d’empoisonnement du processus de réinitialisation de mot de passe. L’utilisateur carlos clique sans précaution sur tous les liens reçus par email.

Objectif :

  • Exploiter cette faille afin de récupérer un lien de réinitialisation valide

  • Se connecter au compte de carlos

Identifiants fournis :

  • Utilisateur : wiener

  • Mot de passe : peter

Tous les emails envoyés à ce compte sont consultables via le client mail de l’exploit server.

Observation initiale

L’application propose une fonctionnalité “Forgot password” permettant de demander une réinitialisation de mot de passe à partir d’un nom d’utilisateur.

Lorsque l’on saisit l’utilisateur wiener, un email de réinitialisation est correctement envoyé.

Analyse de la requête backend

La requête HTTP envoyée lors de la demande de réinitialisation est la suivante :

Test de manipulation du Host

En remplaçant la valeur du header Host par un domaine arbitraire (par exemple test.com), le serveur traite toujours la requête comme valide et génère le lien de réinitialisation à partir de ce Host modifié.

vemos que la pagina me lo interpreta igual el contenido de la pagina del host normal

Cela confirme une confiance excessive dans l’en-tête Host.

Exploitation de la vulnérabilité

L’attaque consiste à :

  1. Modifier le header Host pour y placer le domaine de l’exploit server

  2. Demander une réinitialisation pour l’utilisateur carlos

Requête exploitée :

Résultat

  • Le serveur génère un lien de réinitialisation basé sur le Host contrôlé par l’attaquant

  • L’utilisateur carlos clique sur ce lien piégé reçu par email

  • Le token de réinitialisation est alors visible dans les logs de l’exploit server

  • Il est possible de définir un nouveau mot de passe pour le compte carlos

  • Connexion réussie au compte ciblé

Mis à jour