Iniciamos corriendo la máquina previamente habiendo dado permisos de ejecución al archivo auto_deploy.sh.
Posteriormente, esperamos que se levante la máquina para luego escucharlo en la interfaz de red 172.17.0.2 de Docker.
Reconocimiento de puertos
Escaneo inicial (puertos)
Realizamos un escaneo sencillo para averiguar solamente los puertos:
Resultado: puertos TCP abiertos 22, 80.
Escaneo detallado (versiones y scripts)
Escaneo más complejo para obtener versiones y detección de servicios:
Resultado: versiones detectadas para HTTP y SSH, que nos permitirán enfocar el reconocimiento web y conexiones remotas.
Reconocimiento de la Web
Previamente a entrar, hacemos un reconocimiento con whatweb:
Accedemos a la web en :80, vemos una página de bienvenida (tema Halloween) y procedemos a inspeccionar el código fuente.
También se puede usar Wappalyzer para más contexto (por ejemplo detectar PHP).
En el código fuente hay enlaces: uno al .mp3 que reproduce fondo y otro que apunta a un sitio oculto.
/hidden/.shell.php
Al acceder a la ruta encontramos una página vacía (posible punto de entrada).
Escaneo con wfuzz
Probamos qué parámetros acepta .shell.php usando wfuzz:
Resultado: la página responde con una variable cmd que permite ejecutar comandos (vía RCE).
Con la entrada para ejecutar comandos, listamos usuarios:
Se detectan usuarios negan y rick. Procedemos a obtener una reverse shell hacia el host atacante.
Preparar escucha
Ponemos a la escucha una conexión entrante en la máquina atacante.
Usando netcat:
Usando Penelope:
Lanzar reverse shell
Ejecutamos la reverse shell desde la web/vía RCE y, al conectarse, obtenemos la shell en nuestro host.
Tras entrar, realizamos el tratamiento de la TTY (mejorar la terminal):
Búsqueda de binarios SUID
Dentro del sistema, buscamos binarios con el bit SUID para escalar privilegios:
Se detecta python3.8 como SUID (interesante para escalada).
Usamos el siguiente payload para obtener shell con privilegios de root:
Resultado: acceso a root obtenido.
Last updated