Web Security Academy

Cross-site scripting - Lab : Stored XSS with angle brackets and double quotes HTML-encoded and single quotes and backslash escaped

Objectif :

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

Solution :

On lance le lab et on se retrouve dans un blog avec plusieurs posts publiés.

On accède à l'un des posts et tout en bas de la page, il y a un espace commentaire disponible avec la possibilité d'en poster un.

On remplit tous les champs comme dans l'image suivante et on essaye de poster un commentaire :

Il apparaît désormais en public :

Si on clique sur le nom de l'auteur du commentaire, on est redirigé vers le site qu'il a précisé dans le champ Webside.

On regarde maintenant le code source :

On constate qu'un événement onclick est présent parmi les attributs du tag <a> ( de l'hyperlien ).

On constate aussi que ce qu'on a noté dans le champ Webside est réécrit dans le code Javascript présent dans l'évévement onclick.

On va profiter de cette implémentation pour effectuer une XSS stockée.

Le payload final sera : https://xxxxxx.xxxxxx&apos;);alert(&apos;1. On s'assure bien qu'aucun antislash, ni guillemets écrits en clair ne soient présents.

On va reposter un commentaire avec le champs Webside rempli avec le payload :

On poste notre commentaire :

On clique sur Jean et la fonction alert() s'exécute :

Le lab est désormais validé !