DockerLabs SummerVibes

DockerLabs SummerVibes

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

·

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 un escaneo de la dirección IP y podemos observar que tenemos 2 puertos.

Si vamos al navegador podemos observar que es la página default de apache2

Revisando el código podemos observar lo siguiente.

Ingresamos el nombre del cmsms en el directorio y podemos observar que accedemos.

Revisando la página observamos que hay un usuario admin y que la versión es la 2.2.19.

Realizamos un escaneo de los directorios de este directorio y podemos observar varios.

El más prometedor es el login.

Probando diversas credenciales esta no nos bloquea así que podemos usar fuerza bruta. Podemos probar directamente con burpsuite y usar intruder.

En payloads cargamos una versión corta del rockyou y luego de ello damos es start attack.

Luego de unos segundos podemos observar que el valor que varía es cuando prueba chocolate.

La otra manera es usar hydra de la siguiente manera, en nuestra captura con burpsuite le damos a change request y cambiará la petición por lo que se verá así y esto copiamos en hydra.

También debemos tener en cuenta que al enviar una respuesta erróneo tenemos el siguiente texto que agregaremos a la consulta.

Teniendo todo ello en cuenta nuestra consulta será de la siguiente manera.

hydra -l admin -P /usr/share/wordlists/rockyou.txt  172.17.0.2 http-post-form "/cmsms/admin/login.php:username=^USER^&password=^PASS^&loginsubmit=Submit:User name or password incorrect"

Luego de unos segundos podemos observar que también obtuvimos el password de chocolate.

Nos logueamos y ya estamos dentro.

Si revisamos en content, tenemos la posibilidad de subir un archivo. Probamos subiendo una shell en PHP, pero no nos deja, pero si cambiamos la extensión a .phar podemos observar que se subió con éxito.

Indicamos nuestro listener

Abrimos nuestro el archivo usando la dirección URL o simplemente podemos dar clic en el archivo.

http://172.17.0.2/cmsms/uploads/images/test/rvshell.phar

Al dirigirnos a nuestro listener podemos observar que obtuvimos 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.

Realizamos un sudo -l y podemos observar que no tenemos acceso.

Revisamos permisos SUID y capabilities, pero no encontramos nada.

Como no encontramos vamos a la carpeta de usuarios, pero no podemos acceder.

Buscando en las configuraciones de la página encontramos el config.php y observamos unas credenciales de cms que era el usuario en home.

Probamos loguearnos con las credenciales, pero son erróneas para cambiar de sesión. Probamos revisando la base de datos y solo contamos con 2.

Comprobando solo tenemos el usuario admin del cual sabemos su password.

Como no tenemos más pistas, probaremos haciendo fuerza bruta para ello copiaremos el archivo corto de rockyou y usaremos este script al crear le damos permisos de ejecución.

usuario="cms"
for password in $(cat minirockyou.txt); do
    echo $password | su -c "exit" $usuario 2>/dev/null
    if [ $? -eq 0 ]; then
        echo "Encontrado: la contraseña de $usuario es $password"
        break
    fi
done

En nuestra máquina iniciamos el servidor

descargamos el minirockyou.txt

Ejecutamos el archivo con el usuario cms, pero no obtenemos ninguno válido. Probamos usando root y notamos que estaban reutilizando el password de admin.

Ingresamos las credenciales y podemos observar que ya somos root. Culminando de manera exitosa esta máquina.