Shock - Walkthrough

Introducción

Shock

Fase de reconocimiento

Lanzamos un escaneo ARP dentro de la red donde se encuentra la máquina víctima para identificar su dirección IP.

Escaneo de puertos básico. Puerto 22 (SSH) y 80 (HTTP) abiertos.

Escaneamos los servicios de los puertos abiertos en busca de información de versiones, etc.

Lanzamos un escaneo con nikto pero la información no es relevante prácticamente.

Pasamos a la enumeración de directorios y vemos que el directorio cgi-bin existe.

Si echamos un vistazo vía navegador sobre el servicio HTTP encontramos algo muy sencillo.

Service HTTP

Buscando información sobre cgi-bin, se trata de un directorio donde se almacenan scripts para interactuar con el servidor web. Esto ofrece a los programas externos, hacer uso de los datos que provengan del servidor web. Suele ser muy común que los servidores web que presentan este directorio, sean vulnerables al ShellShock attack.

ShellShock es una vulnerabilidad que afecta al shell de línea de comandos Bash, ampliamente utilizado en los sistemas operativos basados en Unix. Su objetivo es la capacidad de Bash para ejecutar comandos pasados por aplicaciones. La vulnerabilidad radica en la manipulación de variables de entorno, que son valores dinámicos que afectan a la forma en que los procesos se ejecutan en un ordenador. Los atacantes pueden explotar esto adjuntando código malicioso a las variables de entorno, que se ejecuta al recibir la variable. Esto permite a los atacantes comprometer potencialmente el sistema.

Antes de probar si es vulnerable o no haremos fuzzing sobre el directorio cgi-bin porque deberían existir scripts. Encontramos un script llamado shell.

Si accedemos al script vía navegador, obtenemos un error.

Shell script error

Fase de explotación

En hacktricks hay documentadas varias PoC donde se explica como explotar esta vulnerabilidad.

Abrimos nuestro puerto 4444 para recibir la reverse shell.

Realizamos una solicitud HTTP con curl donde definiremos el encabezado User-Agent, para que ejecute una shell bash que será enviada a nuestra máquina atacante por el puerto 4444. Con esto conseguimos manipular el encabezado User-Agent para poder ejecutar comandos de forma arbitraria en la máquina víctima.

Recibimos la reverse shell.

Realizamos el tratamiento de la tty.

Escalada de privilegios

Enumeramos los permisos sudo del usuario www-data, tiene capacidad de ejecutar busybox como usuario will.

Después de buscar información sobre busybox, encontramos en gtfobins la forma de ejecutar el binario como root pero en este caso lo adaptaremos para ejecutarlo como usuario will.

Realizamos de nuevo el tratamiento de la tty.

Enumeramos permisos sudo del usuario will, tiene capacidad de ejecutar el binario de systemctl como root.

Buscamos en gtfobins opciones de escalada de privilegios a partir de la ejecución del binario como sudo y encontramos varias opciones.

Ejecutamos el siguiente comando para interactuar con el sistema de control de servicios de systemd y luego spawnear la shell como usuario root.

Última actualización