Training / WriteUp

WriteUp NightHawk CTF (training exercises) – Imagemagick

Ce challenge d’entrainement était disponible dans l’attente du NightHawk CTF 2018.

Catégorie: Web

Points: 1000 pts

Énoncé (traduit du chinois) : Can you find the flag in a directory? There is a flag in server https://flaskimage.herokuapp.com/

En arrivant sur le site on tombe sur une petite interface qui nous propose d’upload une image aux formats :

png, jpg, jpeg, gif, mvg, svg

On à donc la possibilité d’upload une image mvg (Magic Vector Graphics). On sait également que le “moteur” utilisé pour traiter les images est ImageMagick.

La faille à utiliser devient donc claire: Il faut utiliser ImageTragick exploitant la CVE-2016-3714.

Mais Sicarius, en quoi consiste cette vulnérabilité ? Et bien c’est simple, le système d’ImageMagick ne filtre pas assez les commandes shell lors du traitement des images. Lors de la conversion de formats comme MVG, il est possible d’insérer des commandes dans les chunks de l’image. Le processus de conversion implémentant une fonction similaire à “exec()” en php, le service va exécuter les commandes que l’on veut.

Il faut préciser que si on connais déjà la faille d’ImageMagick, le challenge est relativement simple.

Avant toute chose, Il ne faut pas oublier qu’on recherche un répertoire, il ne sert donc a rien d’essayer d’exécuter un reverse shell ou autre, c’est une perte de temps (oui j’ai essayé et oui j’ai perdu du temps dessus).

Commençons avec l’exploit de base. Je vais tout faire à la main, j’aime pas trop le module metasploit pour cet exploit.

On crée donc une image MVG avec les lignes suivantes:

Cependant, on se rend vite compte que lorsque on upload l’image, le site nous la rend illico, sans donner de résultat d’exécution ou autre. Cela peut paraître perturbant, mais rien de grave !

En effet, si on envoie une image contenant les lignes suivantes:

Bingo ! coté requestinspector on a la réponse suivante:

Nice !

Bon, d’après l’énoncé, on serait à la recherche d’un dossier 🤔. Prenons le nom de dossier qui a l’air d’avoir été créé comme ça:

Pour la suite:

Nous donne simplement:

Okay, on continue:

Nous donne:

C’était simple !

Flag:

flag{you_kn0w_1magemag1ck_3xp10it_1s}

La bise.

Auteur

Sicarius
Étudiant @ENSIBS et apprenti ingénieur en cybersécurité chez GIE CBP

Commentaires

marc
décembre 31, 2019 à 3:02

bonsoir..Merci pour ce article..j’ai juste une préoccupation, quelles sont les commandes à entrer pour créer une image au format mvg ?



Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *