Cap – Hack The Box

Bienvenidos a un nuevo writeup. En esta ocasión vamos a resolver la máquina Cap de Hack The Box. Es una máquina Linux de dificultad fácil que nos permitirá repasar conceptos clave como la explotación de vulnerabilidades IDOR, el análisis básico de tráfico de red y la escalada de privilegios abusando de capabilities mal configuradas.


1. Reconocimiento

Como es habitual, comenzamos nuestro análisis realizando un escaneo de puertos con Nmap para identificar qué servicios están expuestos en la máquina objetivo.

El escaneo nos revela los siguientes puertos abiertos:

  • Puerto 21 (FTP)
  • Puerto 22 (SSH)
  • Puerto 80 (HTTP)
cap-2

Nuestra primera prueba consiste en intentar acceder al servicio FTP utilizando el usuario «anonymous» para comprobar si existe acceso no autenticado. Sin embargo, el servidor rechaza la conexión, por lo que decidimos centrar nuestra atención en el servidor web del puerto 80.

2. Análisis Web

Al acceder por el navegador a la dirección de la máquina, nos encontramos con un panel de control o Security Dashboard. Explorando las distintas opciones del menú, nos llama la atención un apartado llamado Security Snapshot (5 Second PCAP + Analysis). Esta función permite descargar un registro del tráfico de red (archivo .pcap) para su análisis.

Si nos fijamos en la URL al acceder a estos reportes, veremos que sigue una estructura secuencial, por ejemplo: «http://cap.htb/data/3» o «http://cap.htb/data/6«.

Este comportamiento es un claro indicio de una posible vulnerabilidad IDOR (Insecure Direct Object Reference). Para comprobar si el servidor valida correctamente los permisos, modificamos manualmente el número en la URL y apuntamos al primer registro posible: «http://cap.htb/data/data/0«.

El servidor nos permite el acceso sin ningún tipo de restricción y logramos descargar el archivo «0.pcap«.

3. Acceso Inicial

Con el archivo de captura en nuestro equipo, procedemos a abrirlo utilizando Wireshark. Nuestro objetivo es buscar información sensible que haya quedado registrada en ese lapso de tiempo.

Al filtrar el tráfico y seguir el flujo TCP correspondiente a las peticiones FTP, observamos que alguien se autenticó en el servidor. Dado que FTP no cifra sus comunicaciones por defecto, logramos leer las credenciales en texto plano:

Teniendo en cuenta que los usuarios suelen reutilizar contraseñas, probamos estas mismas credenciales en el servicio SSH. La conexión es exitosa y logramos acceder al sistema como el usuario «nathan«, lo que nos permite capturar la user_flag.

4. Escalada de Privilegios

El siguiente paso es elevar nuestros privilegios para convertirnos en el usuario «root«. Comenzamos la enumeración del sistema buscando vectores de escalada comunes.

Una buena práctica en Linux es revisar las capabilities asignadas a los binarios, ya que a menudo pasan desapercibidas.

Entre la lista de resultados, destaca una configuración muy peligrosa el binario de Python3 tiene asignada la capability «cap_setuid«. Esto significa que podemos utilizar Python para modificar nuestro Identificador de usuario (UID).

Para explotar esta mala configuración, simplemente ejecutamos Python de forma interactiva e importamos la librería «os» para cambiar nuestro «UID» a «0» y lanzar una bash con privilegios de «root» y así obtener la root_flag.