Shocker

Sistema operativo | Dificultad | Fecha de Lanzamiento | Creador |
---|---|---|---|
Linux | Easy | 30 Setiembre 2017 | sau123 |
Reconocimiento
Lanzamos una traza ICMP a la máquina objetivo para comprobar que tengamos conectividad.
Enumeración inicial
Realizamos un escaneo con nmap
para descubrir que puertos TCP se encuentran abiertos en la máquina víctima.
nmap -sS -p- --open --min-rate 5000 -Pn -n 10.10.10.56 -oG open_ports -vvv
Lanzamos una serie de script básicos de enumeración propios de nmap
, para conocer la versión y servicio que esta corriendo bajo los puertos.
nmap -sCV -p80,2222 10.10.10.56 -oN services -vvv
Enumeración de servicios
Web Fuzzing
Explotación inicial
Descripción:
Apache mod_cgi - 'Shellshock' Remote Command Injection
Podemos comprobar si es vulnerable a shell shock.
Shellshock, también conocido como Bashdoor, es una vulnerabilidad crítica encontrada en el shell Bash de Unix en 2014. Permite que un atacante ejecute comandos arbitrarios en un sistema vulnerable. Esto se hace explotando el manejo incorrecto de Bash de las variables de entorno, específicamente aquellas que contienen funciones definidas por el usuario.
El ataque de “Shellshock” puede explotarse a través del módulo mod_cgi
de Apache, lo que permite la ejecución remota de comandos en el servidor. Aquí hay un desglose de cómo se puede llevar a cabo este ataque:
Contexto del ataque
-
CGI (Common Gateway Interface): Es un estándar para ejecutar scripts en servidores web. Estos scripts pueden estar escritos en varios lenguajes, incluyendo Bash, Perl y Python.
-
mod_cgi de Apache: Es un módulo que permite a Apache ejecutar scripts CGI.
Proceso del ataque
-
Envío de una solicitud maliciosa: Un atacante envía una solicitud HTTP a un servidor web que utiliza
mod_cgi
para ejecutar scripts Bash. Esta solicitud incluye un encabezado HTTP malicioso que contiene la carga útil de Shellshock. -
Encabezados HTTP maliciosos: Los encabezados HTTP pueden ser manipulados para incluir código malicioso. Por ejemplo:
GET /cgi-bin/vulnerable_script.cgi HTTP/1.1
Host: target.com
User-Agent: () { :;}; /bin/bash -c "echo; echo; /usr/bin/id"
- Ejecución del código malicioso: Cuando el servidor Apache recibe esta solicitud, el módulo
mod_cgi
ejecuta el script CGI correspondiente. Si Bash se utiliza para procesar la solicitud, la carga útil en el encabezado HTTP será ejecutada, permitiendo al atacante ejecutar comandos arbitrarios en el servidor.
Ejemplo de exploit
Un script CGI vulnerable podría ser uno como el siguiente:
#!/bin/bash
echo "Content-type: text/plain"
echo
echo "Hello, world!"
Si este script es accesible a través del servidor web, un atacante puede enviar una solicitud con un encabezado malicioso:
GET /cgi-bin/vulnerable_script.cgi HTTP/1.1
Host: target.com
User-Agent: () { :;}; /bin/bash -c "echo; echo; /usr/bin/id"
El comando /usr/bin/id
será ejecutado en el servidor, y su salida será incluida en la respuesta HTTP.
Mitigación
- Actualizar Bash: Asegúrate de que Bash esté actualizado a una versión que no sea vulnerable a Shellshock.
- Revisar scripts CGI: Verifica y actualiza scripts CGI que puedan estar utilizando Bash.
- Configuración del servidor: Configura el servidor Apache para minimizar el uso de scripts CGI o usa alternativas más seguras como
mod_php
,mod_python
, etc. - Encabezados HTTP estrictos: Implementa políticas para validar y sanitizar encabezados HTTP entrantes.
PoC.
Ganamos acceso al sistema.
Nos ponemos en escucha con netcat por el puerto 443.
nc -lnvp 443
Realizamos el tratamiento de la TTY.
Leemos el flag de user.txt
.
Elevación de privilegios
Si realizamos una enumeración básica del sistema, nos encontramos con que podemos ejecutar con sudo
y sin proporcionar contraseña el binario de perl como el usuario root
.
Si buscamos en GTFObins vemos que existe una forma de escalar nuestros privilegios abusando de este binario en este contexto.
Leemos el flag de root.txt