Shocker

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.

Shocker

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

Shocker

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

Shocker

Enumeración de servicios

Shocker

Web Fuzzing

Shocker

Shocker

Explotación inicial

CVE 2014-6278 2014-6271

Descripción:
Apache mod_cgi - 'Shellshock' Remote Command Injection

Shocker

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

  1. 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.

  2. mod_cgi de Apache: Es un módulo que permite a Apache ejecutar scripts CGI.

Proceso del ataque

  1. 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.

  2. 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"
  1. 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

  1. Actualizar Bash: Asegúrate de que Bash esté actualizado a una versión que no sea vulnerable a Shellshock.
  2. Revisar scripts CGI: Verifica y actualiza scripts CGI que puedan estar utilizando Bash.
  3. 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.
  4. Encabezados HTTP estrictos: Implementa políticas para validar y sanitizar encabezados HTTP entrantes.

PoC.

Shocker

Shocker

Ganamos acceso al sistema.

Nos ponemos en escucha con netcat por el puerto 443.

nc -lnvp 443

Shocker

Shocker

Realizamos el tratamiento de la TTY.

Leemos el flag de user.txt.

Shocker

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.

Shocker

Si buscamos en GTFObins vemos que existe una forma de escalar nuestros privilegios abusando de este binario en este contexto.

Shocker

Shocker

Leemos el flag de root.txt

Shocker