Web Security Academy

Cross-site scripting - Lab : Reflected XSS in canonical link tag

Objectif :

  • Invoquer la fonction alert() ( en Javascript ) en injectant du script dans le site web.

Solution :

Lorsqu'on accède au lab, on atterrit sur un blog.

On regarde le code source et un tag <link> permettant de mettre en place une URL canonique dans ce contexte est présent :

On va essayer d'effectuer une XSS réfléchie à partir de ce tag.

L'idée est d'ajouter des attributs (à partir de l'URL) dont l'un sera un événement HTML qui sera exécuté.

On va utiliser l'association des attributs accesskey et onclick. Lorsque la touche précisée dans accesskey sera pressée (avec une combination d'autres touches), le code Javascript écrit dans l'événement onclick sera exécuté.

Notre payload est : ?'accesskey='x'onclick='alert(1)

Il faut maintenant le concaténer à l'URL d'origine. Ce qui donne :

https://acda1f941eca1f01802d4ba7005e00ef.web-security-academy.net/?%27accesskey=%27x%27onclick=%27alert(1)

On accède à cette URL, et lorsque l'on inspecte le code source, on aperçoit que le payload est bien placé :

Il suffit de presser les touches ALT + 'X' (la combinaison de touches peut être différente selon le système d'exploitation) pour exécuter la méthode alert() :

Le lab est désormais résolu !

À noter que la solution de ce lab ne fonctionne que sur Google Chrome.