DockerLabs HackmeDaddy

DockerLabs HackmeDaddy

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 identifico 2 puertos, también notar que nos muestra diferentes entradas.

Ingresamos en el navegador la dirección IP principal y podemos observar lo siguiente. Si damos en ejecutar comando, salen uno que otro comando y luego se repite.

De las 3 entradas que nos mostró el escaneo el único que nos da algo claro fue el flag.txt

Escaneamos los subdirectorios y podemos observar que nos muestra un info.txt.

Ingresamos al directorio encontramos el siguiente texto que es muy interesante.

Volvemos a la página principal y revisando podemos observar que esos comandos que listaban al comienzo, observamos que lee el archivo readme.txt que era lo que indicaba el texto de info.txt.

En el navegador agregamos ese archivo sospechoso y podemos observar un archivo PHP con ese nombre.

Abrimos el archivo y podemos observar que tenemos un campo donde ingresar una IP.

Realizamos el ping, pero no vemos alguna respuesta. Usando burpsuite e interceptando la petición en la sección pretty del response no observamos nada, pero si nos ponemos a observar en raw se ve la ejecución.

Esto también podemos validarlo usando tcpdump.

Iniciamos el servicio

Luego de ello enviamos la dirección IP y podemos observar que si hace la consulta.

Como podemos ejecutar comandos probamos agregando una consulta más y podemos ver que nos también la ejecuta.

Probamos intentando obtener una shell de manera directa, pero no es posible.

Realizamos un pwd y vemos que estamos en la carpeta d05notfound

Probaremos si podemos descargar archivos. Creamos un archivo e iniciamos el servidor.

Descargamos el archivo, pero observamos que no es posible.

Probamos descargando en tmp y se observa que sí tenemos permisos.

Ya que podemos guardar archivos guardaremos un archivo con una shell.

Descargamos el archivo.

Una vez descargado para ejecutar el archivo ejecutamos el listener.

Enviamos el comando.

En nuestra máquina ya tenemos 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 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 hecho ello vamos a la carpeta home y notamos dos directorios de los cuales podemos acceder al directorio de e1i0t.

Listamos los archivos de e1i0t, podemos ver varios archivos y una pista de este.

Como el diccionario es corto usaremos un script para usar el diccionario.

usuario="e1i0t"
for password in $(cat agenda.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

Copiamos el diccionario en la carpeta tmp, damos permisos de ejecución al script y ejecutamos.

Luego de unos segundos podemos observar la respuesta.

e1i0t:eliotelmejor

Ingresamos las credenciales y ya estamos como ese usuario.

Podemos observar que si realizamos un sudo -l podemos ver que tenemos permisos para usar el comando find como el usuario an0n1mat0.

Esto lo podemos comprobar si vamos a la página GTFOBins y buscamos find podremos ver lo que podemos hacer, en nuestro caso, ejecutarlo como el usuario an0n1mat0

Ingresamos el comando y ya somos an0n1mat0.

Enviamos el comando para generar una nueva shell.

script /dev/null -c bash

Listamos y podemos observar el texto nota.txt

Vamos a la carpeta raíz para buscar este archivo, pero realizamos un ls y notamos que esa carpeta está ahí, así que no será necesario buscarlo.

Leemos el archivo.

Ya que debemos buscar el archivo nos dirigimos a la carpeta raíz usamos find luego de ello ya sabemos donde está el archivo.

Leemos el archivo y podemos ver la lista de passwords.

Para obtener el password de an0nb1mat0 usaremos crunch así generar una lista que pueda contener el password que necesitamos.

Podemos usar hydra y luego unos segundos vemos el password.

an0n1mat0:soyanonymous

Como tenemos el password del usuario podemos realizar un sudo -l y para escalar como root tenemos el binario de php.

Buscando en GTFOBins tenemos la manera de como aprovechar ese binario.

Ejecutamos el comando y podemos observar que ya somos root. De esta manera culminando esta máquina.