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 :

 

Par défaut

2 réflexions sur “ClouDB (Web 200) Writeup – CSAW’16 CTF Finals

Laisser un commentaire