DockerLabs DockHackLab

DockerLabs DockHackLab

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.

Si realizamos un escaneo de las direcciones IP podemos observar que tenemos 2 puertos encontrados.

Ingresamos a la dirección web y podemos observar que nos muestra la página de inicio de apache2.

Realizamos una búsqueda de directorios y podemos observar que identifico uno llamado hackademy.

Observamos el directorio y podemos observar que es una página en la cual podemos subir archivos.

Tratamos de subir un archivo

Podemos observar que nos redirige a otra página donde parece haber cambiado el nombre del archivo.

Ingresamos la dirección buscando el archivo, pero no encontramos ningún indicio usando xxx_index.jpeg Pero suponemos que xxx representa algún número o palabras. Para ello primero haremos un diccionario con números y luego con letras. Para ello usaremos crunch.

Realizamos la captura y lo enviamos al intruder.

Modificamos y cambiamos el texto a la siguiente manera.

Luego en payload cargamos, pero podemos observar que ninguno es correcto.

Ahora Volvemos a generar los archivos usando las letras y si esto no funciona lo haremos combinando letras y números.

crunch 3 3 abcdefghijklmnopqrstuvwxyz -o diccionarioletras.txt

Cargamos el payload de letras y ejecutamos

después de mucho tiempo observamos que obtuvimos una respuesta diferente y es con klp.

En la página web reemplazamos por ese valor podemos observar que nos muestra la imagen que subimos.

Subiremos un revshell que podemos encontrar en pentestmonkey y subimos el archivo.

Antes indicamos el servicio de nc.

Ingresamos la dirección.

Manejo de la TTY.

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 realizamos un sudo -l y podemos observar que podemos elevar como firsthacking haciendo uso de nano.

Al buscar en la página GFTOBins podemos observar como elevar privilegios.

Usamos el comando y agregamos el usuario para el que tenemos permisos.

Luego ingresamos ctrl +r y ctrl + x y podremos ver el command to execute donde ingresamos el resto del comando.

Podemos observar que ya accedimos como firsthacking.

Realizamos un sudo -l podemos observar que podemos hacer sudo del binario de Docker para poder acceder como root.

Al buscar en la página GFTOBins podemos observar los pasos a seguir para elevar privilegios.

Primero establecemos una conexión usando una shell, ya que no podemos pegar o borrar comandos. Para ello iniciamos nuestro nc.

Y enviamos la shell.

Luego de enviar podemos observar que ya tenemos conexión y el manejo en esta sesión es mucho mejor para mejorar ello volvemos a mejorar la shell con los comandos que usamos en la anterior conexión.

Enviamos el comando para obtener Root, pero no podemos y obtenemos un mensaje que no se puede conectar, usamos el comando que nos indica y podemos observar que tenemos un mensaje.

Al final se puede leer lo siguiente de nada servira si no llamas antes esto ya vimos antes y podemos intuir que hace referencia a que debemos usar knock para que el sistema abra estos puertos. Para ello revisaremos si existe el knockd y podemos observar que sí lo tenemos en el sistema.

Ahora debemos usarlo con los puertos que nos brindaron cuando ejecutamos el --help de docker.

En nuestra máquina atacante usamos knock para habilitar puertos.

Ahora si vamos a la máquina víctima y ejecutamos el comando que obtuvimos de GFTOBins podemos observar que ya somos root. De esta manera culminando esta máquina.