Skip to content

WalkThrough Cap Machine

CAP MACHINE - CAPTURANDO EL FLAG

ANTES DE EMPEZAR

Iniciamos esta máquina leyendo una breve descripción de la misma, en la que ya se nos habla de una vulnerabilidad conocida: “Insecure Direct Object Reference” (IDOR).

Esta vulnerabilidad se ubica dentro del Top 10 de OWASP 2017 y se clasifica dentro de las vulnerabilidades que surgen de una mala gestión del control de acceso.

Para explicarlo de un modo más práctico, un caso típico sería el de conseguir mostrar la información de perfil de otro usuario desde la cuenta del atacante.

Supongamos una web que, al hacer clic en el perfil, lanza la siguiente URL:

https://site.com/user_profile?user_id=832

Se puede apreciar que la consulta a la base de datos se basa en el “user_id”. Si existe una buena gestión del control de acceso, si un atacante cambia el valor del id 832 por otro número, debería recibir un mensaje de “prohibido el acceso”.

No obstante, en muchas ocasiones este control no se realiza, y el usuario recibe los datos del perfil de otra persona.

Con esto en mente, arrancamos la máquina y empezamos a ver qué nos encontramos.

FOOTPRINTING

Lo primero sería un escaneo de puertos, pero vista la explicación, decidimos abrir un navegador y escribir la IP.
Efectivamente, como sospechamos, nos encontramos con una web que, además, ** parece ejecutar comandos en el servidor**.

Realizando un escaneo de puertos con nmap, se revela un ** servidor FTP**, el tipo de servidor web “gunicorn” y un servidor ** sSH**.

Mientras navegamos en la web, usamos Gobuster para encontrar directorios y posibles API endpoints, sobre todo para buscar lugares donde exista la posibilidad de explotar una vulnerabilidad IDOR.

🔓 INSECURE OBJECT REFERENCE

Durante el escaneo, nos damos cuenta de que el endpoint **/data/**va aumentando su numeración.
Si accedemos a la ruta encontrada, podemos descargar un archivo .pcapque nos muestra tráfico de red y, al analizarlo, podemos comprobar que es nuestro propio tráfico.

Volviendo a las vulnerabilidades IDOR, nos preguntamos si sería posible encontrar tráfico anterior de otros usuarios. Así pues, enviamos la petición pero esta vez usando el id 0 y obtenemos la posibilidad de descargar un archivo .pcapcon tráfico que no es nuestro.

Acabamos de encontrar el “Broken Access Control” del que hablamos al principio.

Ahora, analizamos el tráfico de red. Como estamos ante una aplicación que usa el protocolo HTTP, deberíamos ser capaces de encontrar algo interesante.

Efectivamente, encontramos credenciales de acceso al FTP:

USER nathan
PASS ...TeTocaEncontrarloTuMismo...

Ya tenemos nuestras primeras credenciales. Con ellas, deberíamos poder acceder al menos al servidor FTP.
Además, revelan que estamos trabajando con un servidor vsftpd 3.0.3, que en versiones anteriores (concretamente la versión 2.3.4) venía con un backdoor incorporado. 😈

ACCEDIENDO AL FTP Y OBTENIENDO EL PRIMER FLAG

Accedemos al FTP para ver qué encontramos:

Terminal window
└─$ ftp 10.10.10.245 21
Connected to 10.10.10.245.
220 (vsFTPd 3.0.3)
Name (10.10.10.245): nathan
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
229 Entering Extended Passive Mode (|||30051|)
150 Here comes the directory listing.
-r-------- 1 1001 1001 33 Jul 22 16:27 user.txt
226 Directory send OK.
ftp> get user.txt
local: user.txt remote: user.txt
229 Entering Extended Passive Mode (|||57301|)
150 Opening BINARY mode data connection for user.txt (33 bytes).
100% |************************************************************************************************************************************************************************************************| 33 10.26 KiB/s 00:00 ETA
226 Transfer complete.
33 bytes received in 00:00 (0.81 KiB/s)
ftp> exit
221 Goodbye.

Abrimos el archivo user.txt y encontramos nuestro primer flag:

Terminal window
└─$ cat user.txt
codigo-del-flag ;-)

¡Primer flag conseguido!

ESCALADA DE PRIVILEGIOS EN LINUX

Probamos también si con la misma clave podemos acceder por ** sSH** y funciona.

Ahora, solo nos queda conseguir la escalada de privilegios en la máquina.

Normalmente, explorar manualmente todas las opciones para escalar privilegios es algo tedioso, por lo que hay dos herramientas que nos pueden facilitar el trabajo:

1️ Metasploit - Local Exploit Suggester

  • Si cargamos un Meterpreteren la máquina víctima, podemos lanzar el módulo “local exploit suggester”, que nos mostrará vulnerabilidades explotables.

2️ LinPEAS

  • Un script muy útil que brinda información detallada sobre la máquina y posibles vectores de escalada.

Al ejecutar LinPEAS, encontramos lo siguiente:

Terminal window
/usr/bin/python3.8 tiene en sus capacidades el cap_setuid

Esto nos indica que podemos aprovechar ** python** para ejecutar comandos con privilegios elevados. Así pues, usamos el siguiente comando para escalar privilegios:

Terminal window
python3.8 -c 'import os; os.setuid(0); os.system("/bin/bash")'

¡ROOT CONSEGUIDO!

Hemos conseguido la escalada de privilegios y conquistado la máquina CAP.

¡Máquina hackeada con éxito!

Referencia a la máquina en HackTheBox: HackTheBox CAP Machine