Nocturnal WriteUp Hack The Box
Introducción
Nocturnal es una máquina de Hack The Box que presenta una vulnerabilidad IDOR en una aplicación web desarrollada en PHP. Gracias a la idor encontramos documentos privados con credenciales que permiten utilizar la app con un usuario con mas privilegios y de ahi subir una shell, obtendremos las credenciales desde una base de datos y las crackearemos para acceder al usuario Tobias Finalmente, utilizaremos un CVE en la aplicación ISPConfig que nos permitirá ejecutar comandos, lo que nos llevará a obtener acceso como usuario root
Reconocimiento
Comenzaremos lanzando un escaneo con nmap.
Como se puede observar, están activos el puerto 22 y el puerto 80. Para acceder al servidor HTTP, será necesario añadir la IP al archivo /etc/hosts.
Al visitar http://nocturnal.htb, llegaremos a una página principal que nos permitirá registrarnos e iniciar sesión.
Procedemos a registrarnos e iniciar sesión.
Una vez redirigidos a /dashboard.php, notamos que al intentar subir un archivo PHP, se genera un error indicando que el formato no es válido y que solo se aceptan archivos con extensiones .pdf, .doc, .docx, entre otros.
Si creamos un archivo PDF de prueba y lo subimos, podremos descargarlo nuevamente haciendo clic en el enlace. Sin embargo, al observar el enlace, notamos que está compuesto por el nombre de usuario y el nombre del archivo.
Si modificamos la URL y cambiamos el parámetro username, si el usuario no existe, aparecerá un error indicando que el archivo no existe.
Con esta información, podemos enumerar los usuarios utilizando la herramienta ffuf. Debemos añadir la URL, la palabra FUZZ en el lugar que queremos enumerar, el diccionario y la cookie de sesión que tengamos. Como se muestra en la imagen, obtenemos muchos resultados, por lo que será necesario filtrar los resultados más relevantes.
Filtraremos por tamaño (-fs) y por palabras (-fw), logrando identificar dos usuarios: amanda y john.
Al modificar la URL y colocar el usuario amanda, podremos ver los archivos que ha subido a la plataforma, en este caso, privacy.odt.
Al descargarlo, encontraremos su contraseña.
Si accedemos a su cuenta, podremos ingresar al panel de administrador.
Desde aquí, podemos crear copias de seguridad, así que utilizaremos una contraseña de prueba y crearemos una.
Una vez finalizado, intentamos controlarlo mediante una inyección de código, pero recibimos un error de “intentar otra contraseña”, lo que impide la ejecución de código.
Otra función del panel de administrador es la opción de ver el código fuente. En el archivo admin.php, podremos observar cuáles son los caracteres que no podemos utilizar.
Explotación
Con esta información, podemos crear un archivo shell y, utilizando la herramienta curl, realizaremos una petición para subir la shell que hemos creado previamente.
Ahora, con curl, podremos ejecutar la shell y establecer una conexión remota con la máquina como el usuario www-data.
Al realizar una búsqueda rápida en el sistema, encontraremos la base de datos nocturnal_database.db. Con la herramienta sqlite3, accederemos y obtendremos las credenciales hasheadas.
Utilizando la herramienta john, podremos crackear el hash del usuario Tobias.
Finalmente, podremos acceder al SSH de la máquina con el usuario Tobias y obtener la primera flag de la máquina.
Escalada de privilegios
Al realizar una enumeración completa de la máquina, observamos que el puerto 8080 está abierto en la interfaz local.
Con esta información, redirigiremos este puerto a nuestra máquina para poder acceder a él.
En este puerto, se está ejecutando un panel de control de ISPConfig. Podemos iniciar sesión como admin utilizando la contraseña que hemos crackeado del usuario Tobias. Una vez dentro, en la sección de “ayuda”, podremos ver la versión del programa.
Conociendo la versión utilizada, podemos buscar exploits y pruebas de concepto que podamos utilizar contra la máquina. Utilizaremos CVE-2024-46818 del usuario bipbopbup.
Al ejecutar el exploit, obtendremos una shell interactiva como el usuario root.
python3 exploit.py http://127.0.0.1:8080 admin slowmotionapocalypse
Esto ocurre porque la carpeta donde opera ISPConfig pertenece al usuario root.
Además, el usuario ispconfig también existe en el sistema.
Conclusión
A través de este proceso, hemos logrado escalar privilegios desde un usuario normal hasta obtener acceso como root en la máquina Nocturnal. Espero que os haya gustado esta publicación y nos vemos en la siguiente.