danielprz21@home:~$

dockerlabs.es: máquina Agua de Mayo



Descripción



Esta máquina virtual creada con Docker tiene de todo un poco para que practiques tus habilidades de hacking. Está equipada con un servidor web Apache, más algunos servicios básicos como SSH en el puerto 22 y HTTP en el puerto 80, listos para ser desafiados.

Enlace de Lab:

dockerlabs.es: Agua de Mayo.

Dificultad:

Fácil.

Solución



Para iniciar el proceso de vulnerar esta máquina, lo primero que haremos es con ayuda de nmap ver a qué nos estamos enfrentando.

nmap -p- -Pn  -sS --min-rate 5000 --open 172.17.0.2  -oX report.xml -v

donde:

-p-: Escanea todos los puertos existentes (0-65365)

-Pn: Evita que nmap realice un descubrimiento de host antes de realizar el escaneo

-sS: Realiza un escaneo de puertos TCP mediante un escaneo SYN. Esto implica enviar un paquete SYN y esperar una respuesta; si el puerto está abierto, el host responderá con un paquete SYN-ACK

--min-rate: Configura la tasa mínima de paquetes enviados a 5000 paquetes por segundo. Esto acelera el escaneo, ya que nmap enviará paquetes a una tasa muy alta

--open: Esta opción le indica a nmap que sólo muestre los puertos que están abiertos.

-oX: Guarda la salida del escaneo en un archivo XML llamado report.xml

-v: Aumenta la verbosidad de la salida de nmap, proporcionando más detalles sobre lo que está haciendo nmap.



Nos fijamos que tiene varios puertos abiertos.

puerto 22: servicio SSH

puerto 80: servicio http

Ahora es momento de ver con qué versiones nos estamos enfrentando de cada servicio. Para ello implementamos el código:

nmap -sCV -p21,22,80 172.17.0.2 -oN ports_version

Donde:

-sC: Esta opción le dice a nmap que ejecute scripts predeterminados contra los puertos encontrados. -sV: Le indica a nmap que intente determinar la versión de los servicios que se están ejecutando en los puertos abiertos.

sCV es la combinación de ambos comandos.



Lo primero que haremos es ver los posibles vectores de ataque. Lamentablemente el puerto 22 perteneciente a ssh no es vulnerable. Nos queda ver si hay alguna fuga de información en el servicio http

Accedemos a la página web del puerto 80 aparenta ser una configuración por defecto de Apache2 pero si vamos al código fuente nos percatamos de que hay un código que pertenece a Brainfuck.

++++++++++[>++++++++++>++++++++++>++++++++++>++++++++++>++++++++++>++++++++++>++++++++++++>++++++++++>+++++++++++>++++++++++++>++++++++++>++++++++++++>++++++++++>+++++++++++>+++++++++++>+>+<<<<<<<<<<<<<<<<<-]>--.>+.>--.>+.>---.>+++.>---.>---.>+++.>---.>+..>-----..>---.>.>+.>+++.>.

La pasamos por un traductor de código brainfuck a ascii y este será el resultado.

bebeaguaqueessano

Aparentemente ya tenemos un usuario para ingresar mediante ssh.

Ahora hacemos un fuzzing web con ayuda de dirbuster y obtenemos los siguientes resultados



Descargamos la imagen,y aplicando técnicas de esteganografía para asegurarnos. Tratamos de ver si tiene alguna información o un txt dentro de esta. Pero no, tomamos el nombre de la imagen agua_ssh y tomamos la parte de agua como usuario y bebeaguaqueessano como clave y vemos que funciona



Hacemos un id y vemos que pertenecemos al grupo lxd. Posiblemente explotando esta vulnerabilidad podamos escalar privilegios.

Si hacemos un ls en el directorio veremos que tenemos una archivo llamado alpine-v3.13-x86_64-20210218_0139.tar.gz que hace que sea casi seguro que debamos explotar el lxd. Pero no, esto no es más que un rabbit hole 1

Si realizamos un sudo -l vemos que podemos ejecutar como root el /usr/bin/bettercap.



Abrimos este binario como sudo y ejecutamos el comando ?. En la ayuda veremos que si corremos un comando iniciando con ! correrá comandos del sistema. Entonces corremos

! whoami

Y recibiremos un root

Pues, en este momento para escalar de una forma más profesional corremos lo siguiente:

! chmod +s /bin/bash



Salimos de bettercap, luego, hacemos un /bin/bash -p y ya seremos usuarios root



Y eso sería todo en esta máquina.

Referencias