Writeups

ClouDB (Web 200) Writeup – CSAW’16 CTF Finals

Après une longue absence sur ce blog, je reviens avec un petit writeup pour le challenge ClouDB – un challenge Web à 200 pts – proposé lors de la finale du CSAW CTF à Abu Dhabi.

Avant de commencer ce post un big up à Mohamed ZEHRAOUI qui m’a aidé pour l’accomplissement de cette épreuve :D

Nous avions une plateforme web comme point de départ, le but étant, bien évidemment, de trouver le flag caché, essayons de voir les trésors qui s’y trouve.

Une LFI à pu être découverte en regardant le contenu du fichier main.js “http://web.chal.csaw.io:1344/js/main.js”

LFI

Figure 1 : Code vulnérable à une LFI



 

Nous essayons après de valider cette vulnérabilité en incluant simplement le fichier /etc/passwd et voir si son contenu s’affiche bien :

Figure 2: Exploitation de la faille LFI – Screenshot © Mohamed ZEHRAOUI

Figure 2: Exploitation de la faille LFI – Screenshot © Mohamed ZEHRAOUI

Grâce à cette LFI, nous arrivons à lire le contenu de plusieurs fichiers dont l’index de la plateforme, ce dernier nous mènera à plusieurs autres fichiers comme :

  • tiles.php
  • todos.php
  • notes.php
  • common.php
  • db.php (qui contient le mot de passe de la BDD, S0meR3@11yG00dPa$$w0rdThatY0u5hou1dntCar3@b0uT = Un mot de passe qui nous intéresse pas dans ce challenges dommage ça aurait été très facile )
Figure 3: – Screenshot © Mohamed ZEHRAOUI

Figure 3: Fichier note.php – Screenshot © Mohamed ZEHRAOUI

Figure 4: – Screenshot © Mohamed ZEHRAOUI

Figure 4: Fichier db.php – Screenshot © Mohamed ZEHRAOUI

Figure 5: – Screenshot © Mohamed ZEHRAOUI

Figure 5: Fichier login.php – Screenshot © Mohamed ZEHRAOUI

 

Après avoir checker le fichier “main.js” encore une fois ainsi que le fichier “common.php” et le fichier “tiles.php”, nous pouvons soupçonner une injection via le jsonp Callback en utilisant le paramètre POST “url” utilisé normalement lors de la création des “tiles“, nous pouvons en d’autres termes exploiter une XSS afin de Hijacker la session de l’administrateur, et récupérer donc le contenu publié par lui.

ctf2

Figure 6: XSS vulnérabilité – Fichier : main.js

Figure 7: Fichier tiles.php

Figure 7: Fichier tiles.php

Pour exploiter cette vulnérabilité nous devons injecter un code JS dans le paramètre “callback” de notre “url” malicieuse dans le but de récupérer la session de l’admin UID=0 (le userid “UID” a été identifié grâce au fichier backup SQL : http://web.chal.csaw.io:1344/backups/db.sql.bak )

Mais nous avons un autre problème, la routine “verify_auth” nous empêche d’avancer si le UID est différent de l’ID contenu dans la variable $_SESSION[‘id’], d’un autre côté, s’il n’y avait plus de $_SESSION, il n’y aurait plus rien à comparer n’est ce pas? et 0 sera égal à 0 n’est ce pas ? bah c’est réglé donc, détruisons le contenu de la variable superglobale $_SESSION en nous déconnectant (session_destroy() )

 

Nous injectons simplement notre code après et nous attendons le résultat

capture-decran-2016-11-12-a-2-08-20-am

Figure 8 : Code malicieux à injecter

Quand l’administrateur chargera sa page d’accueil, le payload nous enverra automatiquement ses cookies (c’est aussi bon que les cookies de grand-mère je vous assure )

capture-decran-2016-11-12-a-2-10-21-am

Il ne reste plus qu’à Hijacker sa session et checker le contenu de sa Todo list :

capture-decran-2016-11-12-a-2-05-41-am

Figure 9: The FLAAAAAG

et voila : flag{d0nt_Forg3t_2_San1t1ze_Y0uR_C@11back$}

 

Annexes :

 

Standard

2 thoughts on “ClouDB (Web 200) Writeup – CSAW’16 CTF Finals

Leave a Reply