Analyse de la vulnérabilité
Le paramètre image de l’URL est injecté directement dans une balise HTML sans filtrage.
Cela permet d’injecter du JavaScript arbitraire via une vulnérabilité XSS (Cross-Site Scripting).
Le bot exécute le JavaScript contenu dans la page visitée et renvoie tous les appels à console.log
sur la connexion TCP.
Exploitation
L’objectif est d’exécuter du JavaScript permettant de lire la valeur du flag stockée dans le
localStorage du navigateur du bot.
Payload XSS utilisé :
http://meme-generator/?image=x " onerror=“console.log(localStorage.getItem(‘flag’))” src=“x&text=ok
Ce payload déclenche un événement onerror sur une image invalide, ce qui permet
d’exécuter console.log(localStorage.getItem('flag')).
Interaction avec le bot
Connexion au bot :
ncat localhost 4000
Envoi de l’URL malveillante :
http://meme-generator/?image=x " onerror=“console.log(localStorage.getItem(‘flag’))” src=“x&text=ok
Le bot visite alors l’URL et renvoie le contenu de console.log sur la connexion TCP.
Résultat
Le bot renvoie le flag directement dans la sortie.