CyberSploit : VulnHub CTF

Allez, cela fait un petit moment qu’il n’y a pas eu de publication de CTF. Pour NoHackMe, on s’intéresse au CTF de VulnHub ayant un niveau « Easy ». On essaie de faire un parallèle entre NoHackMe Academy et la résolution des CTF faciles pour une continuité pédagogique.
Aujourd’hui, nous allons nous attaquer au CTF Cybersploit que vous trouverez à cette adresse :

https://www.vulnhub.com/entry/cybersploit-1,506/

C’est un niveau facile où l’on va devoir trouver 3 flags (« drapeaux »)
Pour rappel, on a généralement 4 phases dans un CTF :

  • Reconnaissance
  • Enumération
  • Exploitation
  • Escalade de privilèges

Reconnaissance :

On doit d’abord repérer la machine sur notre réseau :

netdiscover

La machine à attaquer est en 192.168.1.61 (paramètre variable suivant votre réseau).
Il est maintenant temps de regarder les ports qui sont ouverts à l’aide de la commande Nmap :

nmap -A -p- 192.168.1.61

Rappel :
-A : Active la détection du système d’exploitation et des versions
-p- : On scanne sur la plage de port complet (entre 1 et 65535)

Nous avons deux ports ouverts, le port 22 (SSH) et 80 (HTTP)

Un petit conseil, lorsque vous avez une machine avec une section « Web », il est plus confortable de configurer un host dans /etc/hosts. Cela vous permettra de retenir un nom plutôt qu’une adresse IP (surtout qu’elle risque de changer à chaque nouveau CTF). Ici nous pouvons ajouter :

192.168.1.61 cybersploit

Allez, la phase de reconnaissance est terminée, on connaît l’adresse IP ainsi que les ports qui sont ouverts et quelques infos complémentaires : nous sommes en présence d’une machine Linux tournant sous une distrib Ubuntu. Le site Web tourne sur un serveur Apache. Nous avons aussi la version du serveur Apache : 2.2.22 et celle de l’openSSH : 5.9p1

Enumeration :

Premier réflexe : on regarde le code source :

En fouillant, on trouve :

username : itsskv

Cela va certainement nous servir par la suite.

Deuxième réflexe : toujours penser à regarder s’il existe un fichier robots.txt. Ce fichier dévoile parfois des répertoires qui ne doivent pas être indexés par les moteurs de recherche.

Le contenu du fichier robots.txt ressemble étrangement à un encodage en base 64. Passons à la phase suivante.

Exploitation :

curl -s http://cybersploit/robots.txt | base64 -d

Nous venons de trouver le flag 1 !

A ce stade, nous avons trouvé un username et le flag 1. C’est peut-être un username pour se connecter en SSH. Si l’hypothèse est bonne, le flag 1 doit certainement être le mot de passe :

ssh itsskv@cybersploit

Nous voilà connecté sur la machine avec le compte itsskv !

Dans le repertoire /home/itsskv/ on trouve un fichier flag2.txt qui est codé en binaire :

En cherchant sur Google un convertisseur, on tombe sur ce site (il en existe d’autres) :

http://javascool.gforge.inria.fr/v4/documents/sujets-mathinfo/convertisseur.php

On vient de trouver le second flag ! Il nous reste un flag à trouver et il se trouve certainement dans le user root de cette machine. Il faut donc passer à la dernière phase.

Escalade de privilèges :

La version d’Ubuntu ne semble pas récente, voyons un peu la version du Kernel :

uname -a

C’est donc une Ubuntu 12.04 avec un kernel 3.13.0. Voyons s’il existe des exploits dans la base exploit-db.com :

searchsploit kernel 3.13.0

On récupère le contenu du fichier C qu’on copie dans /tmp/37292.c

cd /tmp
gcc 37292.c -o root
./root

Nous voilà root et on trouve le dernier flag !