Web Security Academy

Cross-site scripting - Lab : Reflected XSS into a template literal with angle brackets, single, double quotes, backslash and backticks Unicode-escaped

Objectif :

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

Solution :

On démarre le lab et on se retrouve dans un blog avec une barre de recherche à disposition.

On essaye par exemple de rechercher le mot "rouge" et il apparaît en clair sur la page comme dans l'image qui suit :

D'un point de vue du code source, on constate que le mot "rouge" est contenu dans une template string :

On va donc tenter une XSS réfléchie :

On va utiliser une expression qui va être placée entre "${" et "}". Ainsi elle va être exécutée dans la template string.

Notre payload est : ${alert(1)}. Il ne contient aucun caractére filtré par le WAF mis en place.

On essaye de le soumettre au serveur par la barre de recherche et une fenêtre surgit :

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