CTF – Ew_Skuzzy: 1

avril 18, 2017

Mes journées étant particulièrement chargées ces derniers mois, je n’ai malheureusement pas eu beaucoup de temps pour écrire un seul article. Alors rien de mieux qu’un petit CTF pour se remettre dans le bain ! Au menu du jour, un CTF en 5 Flags, dispo sur la plateforme VULNHUB.

Comme d’habitude je dégaine un nmap 192.168.56.101 -PN -O -sV -p 1-65535 afin d’en apprendre un peu plus sur cette VM vulnérable.

Le port 80 ne m’apprend pas grand chose, je n’ai rien trouvé de particulier sur le site web. En revanche, le port 3260 semble être lui beaucoup plus intéressant, d’après NMAP, il s’agit d’un port connecteur ISCSI en écoute. Essayons de nous connecter à ce lecteur. Je vous conseil cet article pour vous familiarisez avec les commandes de connecteur ISCSI sous debian :

Installation d’un client ISCSI , via la commande :

Puis :

Magique ! il n’y a plus qu’à monter /dev/sdb

Nous voila donc avec notre premier Flag .

Congratulations! You’ve discovered the first flag!

flag1{c0abc15976b98a478150c900ebb0c86f0327f4dd}

Let’s see how you go with the next one…

Je remarque également la présence d’un fichier « bobsdisk.dsk ». Montons ce fichier image.

Un simple cat du fichier « ToAlince.eml » nous donne des informations très intéressantes concernant le fichier « ToAlice.csv.enc ». Fichier crypté.

« You know what happened to me this morning? My kids, the little darlings, had spilled their fancy 256 bit Lego kit all over the damn floor. Sigh. Of course I trod on it making my coffee, the level of pain really does ROCKYOU to the core when it happens! It’s hard to stay mad though, I really love Lego, the way those blocks chain togeather really does make them work brilliantly. My favourite new Spanish swear came in handy when this happened… supercalifragilisticoespialidoso ! »

PS: Oh, before I forget, the hacker-kid who told me how to use this new algorithm, said it was very important I used the command option -md sha256 when decrypting. Why? Who knows? He said something about living on the bleeding-edge…

ainsi que notre 2eme Flag :)

PPS: flag2{054738a5066ff56e0a4fc9eda6418478d23d3a7f}

un rapide :

En spécifiant comme clé, celle présente dans le document: supercalifragilisticoespialidoso nous permettra d’avoir la version décryptée du fichier.

Plusieurs solutions existes pour tenter un brute force via le dictionnaire Rockyou, de la simple commande bash :
« for i in dico; do openssl aes-256-cbc -d -md sha256 -in file.enc -out result.txt -pass pass:$i ; done »
au script plus complet :
https://github.com/glv2/bruteforce-salted-openssl

et voila notre 3eme Flag :)

Ici les choses se compliquent un peu. L’url : http://192.168.56.101/5560a1468022758dba5e92ac8f2353c0 nous envoie vers un site web, comprenant du base64 dans sa source, mais qui n’apporte rien de bien concret. La seconde URL http://192.168.56.101/c2444910794e037ebd8aaf257178c90b renvoie, par contre, vers un site internet plus complet. En prenant soin de faire le tour du site et de tester les URLS, je remarque une LFI : http://192.168.56.101/c2444910794e037ebd8aaf257178c90b/?p=reader&url=http://127.0.0.1/c2444910794e037ebd8aaf257178c90b/data.txt

j’ai tenté un  : http://192.168.56.101/c2444910794e037ebd8aaf257178c90b/?p=../../../etc/passwd

Now now.. We paid mega bucks to a big consultancy to mitigate skiddy tricks like that one! :trollface:

puis avec l’ajout d’un ‘php filter’ les informations obtenus sont beaucoup plus interessante :)

http://192.168.56.101/c2444910794e037ebd8aaf257178c90b/?p=php://filter/convert.base64-encode/resource=reader.php

bingo :)

il n’y a plus qu’a décoder le BASE64, et nous voila avec la source du document :

Tentons maintenant la meme solution sur le lien envoyant vers FLAG.PHP

http://192.168.56.101/c2444910794e037ebd8aaf257178c90b/?p=php://filter/convert.base64-encode/resource=flag.php

Et voila notre flag n° 4 : )

En recuperant le code source de notre reader.php, on constate qu’il a besoin d’une clé d’une longueur de 47 caractères. Le flag 4 faisant exactement 47 caracteres de long, j’imagine qu’il doit être la clé

Le contenu du fichier data.txt (http://192.168.56.101/c2444910794e037ebd8aaf257178c90b/data.txt) nous apprends egalement certaines choses :

Le code php est interpreter lorsqu’il se trouve entre balise ##php##

Je genere donc une backdoor avec l’outil weevely et ensuite je l’edite pour modifier les balises

 

bingo :)

les options de weevely donne quelques infos sur la cible, mais je n’ai pas trouvé d’exploit kernel. De plus je la trouve particulièrement instable, sans explication.

Je lance donc un nc -lvp 4444 puis et relance ma backdoor

Me voila avec un shell + pratique et plus stable :)

En fouillant sur le serveur, je trouve un executable, dans le repertoire /opt. Cet exécutable « alicebackup » essai de faire une backup via scp en tant que root :

Afin de gagner les privileges, l’idée est de creer un ‘scp’ contenant ‘/bin/bash’ et de modifier la variable d’environnement PATH. Ainsi l’appel au SCP ouvrira un shell avec les droits root, vu que l’executable alicebackup le lance en tant que root.

et voila notre 5eme et dernier flag :-)