Web Security Academy

Cross-site scripting - Lab : DOM XSS in jQuery anchor href attribute sink using location.search source

Objectif :

  • Invoquer la fonction alert() ( en Javascript ) en exécutant du script dans site web.

Solution :

On démarre le lab et on se trouve dans un blog.

En visant le site, on clique en haut à droite sur "Submit feedback".

On se retrouve dans une page avec un formulaire. En examinant l'URL, on constate qu'un paramètre GET nommé "returnPath" est utilisé.

On examine dès à présent le code source et un bout de code nous saute aux yeux :

Le code Javascript définit l'attribut href de l'ancre dont l'identifiant est "backLink" grâce à la fonction attr() de la librairie jQuery. Il attribue la valeur du paramètre GET "returnPath" à href.

On a donc un contrôle total sur ce que va contenir l'attribut href. Sachant qu'il accepte du code Javascript, il suffit d'effectuer par là notre injection en utilisant par exemple le simple payload suivant : javascript:alert(1).

Ce qui donne : https://ac121f5a1e107c4c805d832200f000fa.web-security-academy.net/feedback?returnPath=javascript:alert(1)

On accède à cette URL et lorsqu'on clique sur l'hyperlien "Back" en bas à droite, une fenêtre apparaît :

Le script s'est exécuté et le lab est désormais résolu !