HTB Write-up – Poison

Buenas a tod@s!!

Seguimos con la serie de write-ups de las máquinas de HackTheBox, esta vez os traemos la solución a la máquina Poison, que acaba de ser retirada.

Antes de comenzar, os recomiendo que os paséis por el resto de write-ups que hemos publicado hasta ahora, son muy interesantes:

HTB Write-up – Popcorn

HTB Write-up – Celestial

HTB Write-up – Haircut

Enumeración

Como en cualquier máquina de este tipo, comenzamos enumerando los puertos y servicios de dicha máquina. Para ello, haremos uso de la herramienta NMAP. ¿Nada nuevo, no?

Realizaremos un escaneo TCP completo a todos los puertos. Es un proceso un poco más lento, pero es la única forma de asegurarnos que no nos dejamos nada en el tintero.

nmap -sT -T4 -A -p- 10.10.10.84

 

Finalizado el escaneo, se detectan los siguientes puertos y servicios:

  • Puerto 22 – SSH OpenSSH 7.2 (FreeBSD)
  • Puerto 80 – Apache httpd 2.4.29 (FreeBSD) PHP/5.6.32

Este proceso nos sirve para conocer alguna información sobre el sistema operativo (FreeBSD) y sobre las tecnologías utilizadas para servir la aplicación web: (Apache 2.4.29 / PHP 5.6.32).

En este caso, las opciones más viables serían, intentar acceder vía SSH (default users, bruteforce, etc) o intentar localizar alguna vulnerabilidad en la aplicación web, que nos permita comprometer el sistema o al menos, extraer información de utilidad para la elaboración de vectores de ataque más complejos.

 

Explotación

Accedemos a la aplicación web, y lo primero que nos encontramos es lo siguiente:

Nos encontramos con funcionalidad que permite «testear» ciertos scripts del sistema. Por ejemplo, podemos visualizar el archivo info.php.

Esto nos muestra alguna información sobre la versión del Kernel utilizado.

También podemos listar algunos archivos del sistema mediante el script «listfiles.php». En este punto, observamos un archivo interesante llamado pwdbackup.txt , que con toda probabilidad contendrá información sensible.

 

Este archivo contiene una cadena de texto encodeada 13 veces. Por el formato del texto, enseguida detectamos que se trata de Base64.
En el siguiente paso decodeamos la cadena y obtenemos la password: Charix!2#4%6&8(0

Nota: lo sé, se podría realizar de otra manera más limpia.

 

En este punto, nos damos cuenta de que la aplicación contiene una vulnerabilidad de «Local File Inclusion» que nos permite listar archivos del sistema de manera arbitraria. Por ejemplo, podemos obtener el archivo «/etc/passwd» que nos mostrará los usuarios del sistema.

Casualmente encontramos que en el sistema existe un usuario: charix, para completar el proceso de explotación y obtener acceso al sistema, accederemos al sistema utilizando estas credenciales vía SSH.

  • Usuario: charix
  • Password: Charix!2#4%6&8(0
ssh charix@10.10.10.84

 

Privilege Escalation

Una vez estamos dentro de la máquina, es hora de elevar privilegios y adquirir nuestro ansiado «root».

Como ya sabéis, el proceso de escalada de privilegios puede ser muy tedioso y largo, dependiendo de la dificultad. En este caso no voy a detallar todas las pruebas que hice, simplemente explicaré el proceso que seguí.

En primer lugar, si observamos el directorio /home/charix/ donde se encuentra la primera flag, nos encontramos un archivo comprimido secret.zip.

Descargamos el archivo mediante scp y tratamos de descomprimirlo mediante fuerza bruta en local.

scp charix@10.10.10.84:/home/charix/secret.zip .

Tras probar varios diccionarios sin éxito alguno, decido aplicar uno de los principios básicos: «Reutilización de contraseñas». Efectivamente, la password para descomprimir el archivo era la misma que la de acceso SSH.

El fichero descomprimido muestra una serie de caracteres sin interpretación ninguna, por lo que seguramente tendrían que ser utilizado más adelante.

Seguimos buscando y es entonces cuando encontramos el servicio VNC en ejecución. Este servicio se ejecuta como root y únicamente es visible de manera local, ya que durante la enumeración de puertos y servicios no obtuvimos información sobre el mismo.

 

VNC (Virtual Network Computing) es un software cliente-servidor que permite observar y controlar las acciones del servidor, desde un cliente de manera remota.

A efectos prácticos, funciona de manera similar a RDP (Remote Desktop Protocol) , por lo que dado que se ejecuta como root, parece una buena idea intentar acceder a él.

En este punto toca estudiar como funciona dicho servicio y estudiar las opciones que tenemos para interactuar con él.

 

Para acceder a este servicio de manera externa, deberemos realizar un portforwarding y estableceremos un túnel para redirigir los puertos de manera local al conectarnos desde el exterior. Para ello simplemente haremos uso del siguiente comando:

ssh charix@10.10.10.84 -L 4444:localhost:5901

Para conectarnos, simplemente utilizamos el comando:

vncviewer localhost:4444

Parece que el acceso a dicho servicio se encuentra protegido por una contraseña. Es en este momento cuando nos acordamos de aquel fichero que obtuvimos tras descomprimir «secret.zip» que a priori parecía inútil.

Utilizamos el archivo como contraseña para conectarnos y…como diría mi fiel amigo @naivenom: CARIÑO..TENGO LA FLAG!! 

Hora de validar la FLAG y sumar puntos!

Y ya estaría. Espero que os haya servido, hayáis disfrutado y aprendido algo nuevo!

Saludos!!!
@djurado9