Shock - Walkthrough
Introducción

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.

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

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