Normalisation d’URL

URL normalization

Ce laboratoire contient une vulnérabilité XSS qui n’est pas exploitable directement, car le navigateur applique un encodage d’URL automatique. On doit donc tirer parti du processus de normalisation d’URL du cache pour exploiter cette faille.

L’objectif est d’injecter un payload qui exécute alert(1) dans le navigateur de la victime, puis de lui fournir l’URL malveillante.

1) Identification du point d’injection

Lorsque l’on accède à une page inexistante (par exemple /test), le site renvoie une page d’erreur qui réutilise le chemin demandé dans la réponse HTML.

On observe que si l’on ferme une balise HTML et que l’on injecte un script, celui-ci est interprété :

2) Problème rencontré

Si l’on saisit directement cette URL dans le navigateur, le payload n’est pas exécuté. La raison est que le navigateur encode automatiquement les caractères spéciaux (<, >, /, etc.), ce qui empêche l’exécution du script.

3) Exploitation via la normalisation du cache

Pour contourner cette protection, on utilise le cache :

  • On envoie la requête malveillante via Burp Suite, sans passer par la barre d’adresse du navigateur.

  • Le cache normalise l’URL et stocke la réponse associée.

  • La réponse mise en cache contient alors le payload non encodé.

4) Déclenchement de la XSS

Une fois la réponse empoisonnée dans le cache :

  • On fournit l’URL à la victime.

  • Le cache lui renvoie la version normalisée de la page.

  • Le script est interprété et alert(1) s’exécute dans le navigateur de la victime.

Mis à jour