Description
Votre mission, si vous l’acceptez est de voler le cookie de l’administrateur du site, ça ne devrait pas être trop compliqué pour un H4X0R tel que vous ?
Ca devrait être aussi simple que de voler un cookie à un enfant !
(ahahah ta kompri la blague ? cookie le gateau et cookie le truc sur internet mdrrrr)
Observations
Dès qu’on arrive sur le site, c’est plutôt simple, on a directement une messagerie. Après avoir envoyé quelques messages (ou non), on se rend vite compte qu’ils sont lu par un bot (c’est écrit en white text d’ailleurs).
Étant donné qu’on est ici sur un service de messagerie. Il y a une faille qui est plutôt classique sur ce genre de service. C’est une faille nommée XSS, ce qui signifie Cross Site Scripting (oui, oui, le C devient un X). La manière dont on va détecter cette faille est la même qui va nous permettre de l’exploiter.
Le principe de cette faille est de pouvoir injecter des balises HTML qui vont être interprétées par le navigateur. Normalement, le serveur devrait gérer toutes les entrées utilisateur avant de les ré-afficher.
Attention : ici, le serveur tourne sous Flask, en temps normal, il n’est pas possible d’exploiter cette faille avec des serveurs Flask. Ici, ça fonctionne car j’ai retiré cette sécurité (n’espérez pas avoir ça dans la réalité). En effet, Flask utilise jinja2 pour générer l’HTML d’une page et fait bien attention à gérer les caractères ‘<’ et ‘>’. Il n’est alors plus possible d’injecter des balises HTML.
Pour tester, s’il est possible d’avoir un XSS, on peut simplement afficher
TEST_XSS
Avec ça, le texte devrait apparaître comme ça TEST_XSS. Si l’affichage se fait comme ça, on est sûrement bien parti pour trouver cette faille.
Par contre ce qui serait parfait serait d’exécuter du script. Et c’est justement la prochaine étape. On va essayer de faire alert(1)
. Si quand la page se recharge, vous avez une petite fenêtre qui apparaît en affichant ‘1’, c’est que vous venez de trouver une faille XSS et c’est génial.
Exploitation de la faille
Exploiter cette faille est ici très simple. Le but étant de récupérer le cookie de l’administrateur, il y a plusieurs manières possible. La manière que je vais vous présenter est la suivante. On va utiliser un site request bin, ici ça sera hookbin.
Le payload pour intercepter le cookie de l’administrateur est très simple :
|
|
Le résultat sur Hookbin fait plaisir, on a récupérer le cookie de l’admin.
Et voilà, on a bien récupéré le cookie de l’administrateur. Il faut savoir que l’on peut aussi utiliser d’autres fonctions JavaScript. Il arrive même que des sites internet refusent les balises de script, mais autorisent quand même les balises d’image par exemple. Dans ce cas il est aussi possible de récuperer le cookie de l’admin en choisissant la source de l’image comme étant notre hookbin.