HTB - Monitored
https://app.hackthebox.com/machines/Monitored
ΒΏTe fue ΓΊtil?
https://app.hackthebox.com/machines/Monitored
ΒΏTe fue ΓΊtil?
Nombre de la MΓ‘quina: Monitored
IP de la MΓ‘quina: 10.10.11.248
Sistema Operativo: Linux
Dificultad: Medium
Fecha de PublicaciΓ³n: 13 Jan 2024
Primero, establecemos el objetivo utilizando el comando settarget con la direcciΓ³n IP de la mΓ‘quina objetivo:
Realizamos un ping a la mΓ‘quina objetivo para verificar la conectividad y obtener informaciΓ³n sobre la ruta utilizando la opciΓ³n -R para incluir la ruta de retorno:
Luego, realizamos un escaneo de puertos utilizando Nmap para identificar los puertos abiertos en la mΓ‘quina objetivo. Utilizamos las opciones -p- para escanear todos los puertos, --open para mostrar solo los puertos abiertos, -sS para un escaneo de tipo TCP SYN, --min-rate 5000 para establecer la velocidad mΓnima de paquetes y -vvv para un nivel de verbosidad alto. AdemΓ‘s, utilizamos -n para desactivar la resoluciΓ³n de DNS, -Pn para no realizar el escaneo de ping, y -oG allPorts para guardar la salida en un archivo con formato Greppable:
Posteriormente, realizamos un escaneo mΓ‘s detallado de los puertos identificados utilizando la opciΓ³n -sCV para detecciΓ³n de versiones y scripts de enumeraciΓ³n de servicios. EspecΓficamente, indicamos los puertos a escanear con -p __PORTS__ (reemplazando __PORTS__ con los puertos identificados en el paso anterior) y guardamos la salida en un archivo de texto con el nombre targeted:
Para aΓ±adir la entrada "10.10.11.248 nagios.monitored.htb" al archivo /etc/hosts, puedes usar el siguiente comando en la terminal:
Este comando aΓ±ade la direcciΓ³n IP 10.10.11.245 asociada al nombre de host nagios.monitored.htb al archivo /etc/hosts de tu sistema.
Para obtener mΓ‘s informaciΓ³n sobre nuestro objetivo, utilizamos la herramienta WhatWeb. Esta herramienta nos permite identificar tecnologΓas web utilizadas en el servidor, como el sistema de gestiΓ³n de contenidos (CMS), el lenguaje de programaciΓ³n, los plugins y otras caracterΓsticas. Ejecutamos el siguiente comando:
En la fase de enumeraciΓ³n de SNMP (Simple Network Management Protocol) utilizando SNMPWalk, se realiza un escaneo de la red en busca de informaciΓ³n sobre dispositivos y sistemas. En este caso, se ejecutΓ³ el comando snmpwalk -v2c -c public 10.10.11.248
para buscar informaciΓ³n sobre el sistema remoto. Luego, se utilizΓ³ el comando snmpwalk -v2c -c public 10.10.11.248 1.3.6.1.2.1.25.4.2.1.5
para obtener informaciΓ³n especΓfica sobre los procesos en ejecuciΓ³n en el sistema.
La herramienta utilizada, SNMPWalk, recopila informaciΓ³n utilizando el protocolo SNMP, que es comΓΊnmente utilizado para gestionar dispositivos de red. En este caso, se identificaron las credenciales svc
y XjH7VCehowpR1xZB
relacionadas con algΓΊn servicio o proceso en el sistema remoto. Estas credenciales podrΓan ser ΓΊtiles para posteriores fases de penetraciΓ³n en el sistema.
En la fase de descubrimiento de directorios, se utilizan herramientas como WFuzz y Dirsearch para identificar posibles puntos de entrada o recursos ocultos en el sitio web objetivo. En este caso, se ejecutΓ³ un fuzzing con WFuzz en el directorio /nagiosxi/
para obtener mΓ‘s informaciΓ³n sobre el objetivo.
El comando utilizado fue :
Donde se especificΓ³ el archivo de lista de palabras /usr/share/seclists/Discovery/Web-Content/raft-large-files.txt
para realizar el fuzzing en la URL proporcionada $URL
. Este comando busca archivos y directorios comunes en el sitio web objetivo y muestra las respuestas que no sean cΓ³digo de estado 404 (not found).
Posteriormente, se utilizΓ³ Dirsearch con el comando:
Para identificar directorios y archivos que puedan contener informaciΓ³n ΓΊtil. En este caso, se encontraron los directorios /api/
y /api/v1/
, los cuales podrΓan ser puntos de entrada adicionales para investigar mΓ‘s a fondo.
En la fase de bΓΊsqueda de directorios dentro de /v1/
, se utilizΓ³ Dirsearch con el comando
para identificar posibles puntos de entrada adicionales. En este caso, se encontrΓ³ el directorio /authenticate/
dentro de /v1/
, el cual puede ser un endpoint de autenticaciΓ³n de la API.
Este hallazgo podrΓa ser crucial para avanzar en la penetraciΓ³n del sistema, ya que el endpoint /authenticate/
podrΓa permitir la autenticaciΓ³n en la API y el acceso a funciones adicionales. Es importante analizar este endpoint con mΓ‘s detalle para determinar cΓ³mo se puede utilizar de manera segura y efectiva en el contexto del pentesting.
Se utilizΓ³ la siguiente solicitud Curl para enviar las credenciales de autenticaciΓ³n al endpoint:
-X POST
: Especifica que se realizarΓ‘ una solicitud POST.
-k
: Permite realizar la solicitud a un servidor con un certificado SSL no vΓ‘lido.
-L
: Sigue las redirecciones si la respuesta es un cΓ³digo de estado 3xx.
-d 'username=svc&password=XjH7VCehowpR1xZB'
: EnvΓa los parΓ‘metros de usuario y contraseΓ±a en el cuerpo de la solicitud.
Gracias a las credenciales podemos obtener nuestro token que serΓ‘ crucial mΓ‘s adelante.
Al realizar una bΓΊsqueda en Internet, encontrΓ© informaciΓ³n sobre una vulnerabilidad conocida como CVE-2023-40931 que afecta a NagiosXI. Esta vulnerabilidad se puede explotar enviando una solicitud POST a /nagiosxi/admin/banner_message-ajaxhelper.php
con los parΓ‘metros action=acknowledge_banner_message&id=3&token=*******
.
Demostrando ser vulnerable por lo que procedemos a investigar...
Se consultΓ³ la documentaciΓ³n oficial de NagiosXI para aprender a crear un usuario a travΓ©s de la API utilizando la api_key. Se encontrΓ³ un ejemplo en un post del foro de soporte de Nagios que mostraba cΓ³mo hacerlo.
Se utilizΓ³ la herramienta Curl para enviar una solicitud POST al endpoint api/v1/system/user
con los parΓ‘metros necesarios para crear un nuevo usuario. Se incluyeron los parΓ‘metros username
, password
, name
, email
, y auth_level=admin
para crear un usuario con privilegios de administrador.
Mientras exploraba el panel de NagiosXI, descubrΓ una pΓ‘gina interesante en la ruta https://nagios.monitored.htb/nagiosxi/includes/components/ccm/xi-index.php
, donde es posible agregar un comando personalizado. Aprovechando esta funcionalidad, decidΓ intentar colar un reverse shell en el sistema.
AccedΓ a la pΓ‘gina mencionada y colΓ© mi reverse shell en el campo de comando. UtilicΓ© el siguiente comando para establecer una conexiΓ³n de reverse shell con mi mΓ‘quina:
DespuΓ©s de agregar el comando, me dirigΓ a la secciΓ³n de servicios en NagiosXI y creΓ© un nuevo servicio. En la configuraciΓ³n del servicio, establecΓ que se ejecute el comando personalizado que acababa de agregar.
Recuerda que puedes mejorar el UX de la shell con los siguientes tips:
Descargo desde mi mΓ‘quina (a travΓ©s de un servidor Python) LinEnum.sh y le doy permisos de ejecuciΓ³n (chmod +x).
Al utilizar LinEnum, descubrimos que algunos archivos en la carpeta /usr/local/nagiosxi/scripts/
se ejecutan con permisos de root sin contraseΓ±a. Investigando mΓ‘s a fondo, encontramos que el archivo manage_services.sh
tiene un CVE que nos permite escalar privilegios.
El archivo manage_services.sh
se utiliza para iniciar, detener y ver el estado de los servicios que se ejecutan en el sistema. Aparentemente, se ejecuta con privilegios de root y no solicita contraseΓ±a, lo que nos permite ejecutar comandos con privilegios elevados.
Detener el Servicio NPCD: Utilizaremos manage_services.sh
para detener el servicio NPCD, que es uno de los servicios que se ejecutan con permisos de root.
Eliminar el Ejecutable NPCD: Eliminaremos el ejecutable del servicio NPCD y crearemos un nuevo archivo con un reverse shell que nos permitirΓ‘ obtener una shell interactiva en nuestra mΓ‘quina.
Reiniciar el Servicio NPCD: Utilizaremos manage_services.sh
para reiniciar el servicio NPCD, lo que ejecutarΓ‘ nuestro reverse shell como root.
Al ejecutar estos comandos, detendremos el servicio NPCD, crearemos un nuevo archivo NPCD con un reverse shell y reiniciaremos el servicio NPCD, lo que ejecutarΓ‘ nuestro reverse shell como root, dΓ‘ndonos acceso completo al sistema.
Para mΓ‘s detalles sobre el funcionamiento de SNMP y cΓ³mo realizar una enumeraciΓ³n efectiva, se puede consultar la guΓa proporcionada en el enlace , asΓ como la referencia de los Object Identifiers (OIDs) utilizados en .
Utilizamos este wordlist especial para API endpoints:
Finalmente, iniciΓ© Netcat en mi mΓ‘quina local para escuchar la conexiΓ³n de reverse shell en el puerto especificado. Una vez que el servicio se ejecutΓ³ en el sistema remoto, logrΓ© obtener acceso a la mΓ‘quina a travΓ©s de la conexiΓ³n de reverse shell y obteniendo la primera flag user.txt