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.