githubEditar

🟨HTB - Monitored

https://app.hackthebox.com/machines/Monitored

InformaciΓ³n General

  • 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


Enumeration

Establecer el objetivo

Primero, establecemos el objetivo utilizando el comando settarget con la direcciΓ³n IP de la mΓ‘quina objetivo:

Ping de reconocimiento

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:

Escaneo de puertos con Nmap

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.

Utilizando WhatWeb para Obtener InformaciΓ³n sobre el Objetivo

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:

SNMP Enumeration con SNMPWalk

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.

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 https://book.hacktricks.xyz/network-services-pentesting/pentesting-snmparrow-up-right, asΓ­ como la referencia de los Object Identifiers (OIDs) utilizados en https://oidref.com/1.3.6.1.2.1.25.4.2.1.5arrow-up-right.


Descubrimiento de directorios

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.

Utilizamos este wordlist especial para API endpoints: https://gist.github.com/yassineaboukir/8e12adefbd505ef704674ad6ad48743darrow-up-right

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.

Obteniendo auth_token a travΓ©s del endpoint /authenticate/

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.

CVE-2023-40931 - Vulnerabilidad en NagiosXI

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=*******.

https://medium.com/@n1ghtcr4wl3r/nagios-xi-vulnerability-cve-2023-40931-sql-injection-in-banner-ace8258c5567arrow-up-right

Intentamos explotar usando sqlmap

Demostrando ser vulnerable por lo que procedemos a investigar...

CreaciΓ³n de usuario mediante api_key robada

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.

EjecuciΓ³n de Reverse Shell en NagiosXI

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.

Agregar un Comando Personalizado

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:

Crear un Servicio para Ejecutar el Comando

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.

Escuchando la conexiΓ³n de Reverse Shell

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 πŸ‘

Recuerda que puedes mejorar el UX de la shell con los siguientes tips:

Subimos y utilizamos LinEnum

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.