Empoisonnement de la réinitialisation de mot de passe via dangling markup
Password reset poisoning via dangling markup
Description du laboratoire
Ce laboratoire est vulnérable à un password reset poisoning via dangling markup. En exploitant une mauvaise gestion du HTML dans l’email de réinitialisation, il est possible de détourner le lien envoyé à un utilisateur et de récupérer son nouveau mot de passe.
Objectif : se connecter au compte de carlos.
Identifiants fournis :
Utilisateur :
wienerMot de passe :
peter

Tous les emails peuvent être consultés via le client mail du serveur d’exploitation.

Observation initiale
Une fonctionnalité de réinitialisation de mot de passe est disponible. Après la demande, un email HTML est envoyé avec le contenu suivant :
Le lien de connexion est construit dynamiquement à partir de l’en-tête Host de la requête.
Analyse du comportement
Si l’on modifie l’en-tête Host pour y inclure un port arbitraire :
Le port est correctement reflété dans l’email reçu. Cela confirme que la valeur de Host est intégrée sans validation stricte dans le HTML de l’email.

Exploitation via dangling markup
On injecte ensuite une valeur Host contenant une apostrophe, ce qui permet de casser l’attribut HTML :
Le contenu est interprété par le client mail, ce qui indique une injection HTML exploitable.

Payload final
On exploite ce comportement en ouvrant une balise <a href> sans la refermer correctement, afin que le reste du contenu de l’email (incluant le mot de passe) soit interprété comme faisant partie de l’URL :

Résultat
Lorsque l’email est généré et envoyé à carlos, le client mail interprète le HTML injecté. Le nouveau mot de passe est alors inclus dans l’URL et transmis automatiquement au serveur d’exploitation.
Le mot de passe de Carlos est récupéré depuis les logs du serveur, ce qui permet de se connecter à son compte et de valider le laboratoire.

Mis à jour