CGI
Información
Los scripts CGI son scripts perl, por lo tanto, si has comprometido un servidor que puede ejecutar scripts .cgi puedes subir un shell inverso 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 inverso desde el navegador web para ejecutarlo. Para probar vulnerabilidades CGI se recomienda usar nikto -C all
(y todos los complementos)
ShellShock
ShellShock es una vulnerabilidad que afecta al ampliamente utilizado shell de línea de comandos Bash en sistemas operativos basados en Unix. Se dirige a la capacidad de Bash de ejecutar comandos pasados por aplicaciones. La vulnerabilidad radica en la manipulación de variables de entorno, que son valores nombrados dinámicos que afectan 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 potencialmente comprometer el sistema.
Explotando esta vulnerabilidad la página podría arrojar un error.
Podrías encontrar esta vulnerabilidad notando que está utilizando 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
Curl (reflejado, ciego y fuera de banda)
Explotar
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"
Dado que 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:
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.
Última actualización