WriteUp: Facts | HTB

Todos los derechos reservados a la Hack The Box LTD.
Resumen
- Explotación del
CVE-2025-2304en elCMS Camaleon 2.9.0para escalar privilegios mediante asignación masiva de atributos - Obtención del
API KeyySecret Keya través delCMScomprometido - Acceso al
bucket S3interno medianteminio-client, hallando la clave privadaSSH - Explotación de un
Path Traversal(CVE-2024-46987) para la lectura de archivos sensibles del sistema - Escalada de privilegios mediante el binario
factercon permisossudo - Recomendaciones de seguridad para prevenir y mitigar las vulnerabilidades de esta máquina
Habilidades Empleadas
- Enumeración de puertos y servicios
- Enumeración de directorios y arquitectura web
- Explotación de vulnerabilidades en
CMS(Asignación Masiva de Atributos) - Interacción con servicios de almacenamiento de objetos (
S3) medianteminio-client - Aprovechamiento de binarios con permisos
sudo
Herramientas Utilizadas
- ping
- nmap
- minio-client
- python3
- ssh2john
- john
- curl
- ssh
- facter
Escaneo y Análisis de Vulnerabilidades
La plataforma HTB nos provee la IP objetivo, la cual es la 10.129.16.176, dirección capaz de ser alcanzada conectándonos a través de la VPN que nos asigna la plataforma.
Verificamos si es posible entablar una conexión entre la máquina víctima y la nuestra:
La ruta de la traza ICMP es exitosa. Así pues, el valor del TTL es igual a 63, lo cual podría indicar que estamos frente a un OS Linux/Unix al ser próximo a 64.
Reconocimiento de Puertos
Realizamos una enumeración de los 65535 puertos TCP del sistema a través de la herramienta Nmap, enfocándonos en los de estado abierto:
nmap -p- --min-rate 5000 -Pn -n -oN nmap-scan 10.129.16.176
<= Importante => En entornos empresariales, enviar grandes cantidades de paquetes
TCP,ICMPoUDPsuele provocar un congestionamiento de la red, provocando un ataqueDoSaccidental o ser bloqueados por sistemas de monitorización.
Enumeración de Puertos
Observamos que los puertos 22 (SSH), 80 (HTTP) y 54321 (Actualmente desconocido) se encuentran activos. A partir de este punto podemos enumerar los servicios a través de Nmap.
nmap -p22,80,54321 -sCV -oN ports-enum 10.129.16.176
Tras un análisis de la enumeración de puertos, podemos agrupar los resultados en la siguiente tabla:
| Puerto | Servicio | Versión | Notas |
|---|---|---|---|
| 22 | ssh | OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0) | Versión desactualizada y potencialmente afectado por diversas vulnerabilidades (RCE, entre otros). No es el objetivo principal |
| 80 | http | Apache httpd 2.4.52 | Servicio web seriamente desactualizado, afectado potencialmente por CVE-2022-22720y CVE-2022-22719. No es el objetivo principal |
| 54321 | http | Golang net/http server | Posible servidor web estándar o un sistema de almacenamiento de objetos en la nube |
Herramientas como
whatweb(Comando) oWappalyzer(Extensión del navegador) son de gran utilidad cuando deseamos conocer únicamente las tecnologías que hay en un servicio http.
A partir de la tabla podemos definir posibles vectores de aproximación al objetivo:
Puerto 22 (
SSH): ServicioOpenSSHseriamente desactualizado, siendo usado posiblemente en una distribuciónUbuntu 22.04 LTS(Jammy Jellyfish). Posible enumeración de usuarios a través delCVE-2016-6210y ataque de tipoDoS(CVE-2015-5600). A simple vista no son vías potenciales de acceso directo al equipo.Puerto 80 (
HTTP): Aplicación web hosteada por medio de un servicioApache httpd 2.4.52desactualizado. Por medio de una enumeración web es posible enumerar otros servicios y posibles accesos al servidor víctima.Puerto 54321 (
HTTP): Servidornet/httpescrito enGo. Debido a sus usos, puede ser una aplicación de microservicios, una API interna o inclusive una herramienta para entornos de almacenamiento en la nube, permitiendo la comunicación con servicios comoS3para manejo debuckets.
Enumeración Web
Previo a acceder a la web del objetivo Facts, se realiza un mapping de la IP objetivo a la página de manera temporal. Esto es posible modificando el archivo /etc/hosts:
sudoedit /etc/hosts
Tras acceder a facts.htb, podemos observar que es una página web de trivias.
A simple vista no observamos ninguna opción capaz de dirigirnos a un panel de administración u otra clase de servicios. Por ello, realizamos una enumeración de direcciones url a través de la herramienta gobuster y así tener una visión más amplia de la arquitectura de la página:
gobuster dir -w wordlist -u "http://facts.htb"
Los resultados nos indican la presencia de un panel de administración en la ruta http://facts.htb/admin/login. Accedemos para visualizar el tipo de servicio web.
Observamos que es un panel de administración proveído por un CMS. Así pues, la opción de registrar una cuenta está habilitada, por lo comenzamos el proceso.
Al ingresar observamos 2 elementos de interés:
CMS Camaleon 2.9.0 |
CVE-2025-2304 |
|---|---|
Camaleon es un Content Management System. Esta versión se ve afectada por el CVE-2025-2304. |
Esta vulnerabilidades se aprovecha de un endpoint llamado updated_ajax, permitiendo manipular el rol de uno o varios usuarios |
Explotación
A partir de este punto nos enfocamos en intentar acceder a través de diversos métodos al sistema del equipo Facts.
Web: CVE-2025-2304
Tras comprobar la existencia de un vector de ataque prometedor, utilizamos una herramienta como lo puede ser Caido para la captura y manipulación de peticiones web. Tras activarlo, los dirigimos al perfil de nuestro usuario en el CMS e intentamos cambiar nuestra contraseña.
Tras capturar la petición, modificamos el parámetro password, añadiendo [role]=admin.
La anterior modificación inyecta el parámetro role al cuerpo de la solicitud, escalando así los privilegios de nuestra cuenta para ser usuarios privilegiados.
Tras ello, accedemos la dirección /admin/settings/site para entrar a la configuración del sitio. Después, accedemos a la sección Filesystem Settings. Aquí podemos descubrir que el servidor posee el servicio Amazon S3 para el almacenamiento de objetos en la nube, el cual se ejecuta en el puerto 54321 (Previamente descubierto).
Para aprovecharnos del descubrimiento dentro de Filesystem Settings, obtenemos el access key y la secret key, para posteriormente entablar conexión con el servidor mediante MiNIO:
minio-client alias set facts_htb http://facts.htb:54321/
minio-client: Herramienta dedicada para administrar e interactuar con sistemas de almacenamiento de objetos conAmazon S3
Tras ejecutar el comando, recibimos la siguiente respuesta: Added facts_htb successfully
Después de haber creado un acceso directo al servidor de almacenamiento, podemos listar los buckets y objetos dentro del servidor; a través de esta capacidad podemos identificar la existencia del bucket internal, que contiene la carpeta .ssh.
Listamos el contenido en busca de posibles archivos de valor:
minio-client ls facts_htb/internal/.ssh
Observamos que dentro de la carpeta existe una clave privada (id_ed25519) para conexiones SSH. Esta, si está protegida por una passphrase muy simple, puede ser crackeada rápidamente por un ataque de diccionario, para después acceder de manera remota al servidor víctima de interés.
Para crackearla, primero debemos convertir la clave en un hash capaz de ser utilizado por herramientas como John the Ripper o Hashcat. En este caso, utilizaremos John:
python3 ssh2john.py id_ed25519 > id.hashLink de la utilidad: https://github.com/openwall/john/blob/bleeding-jumbo/run/ssh2john.py
Tras ello, proseguimos a crackearla:
john --wordlist=/usr/share/wordlist/rockyou.txt id.hash
john: Herramienta para descifrar y auditar contraseñas.--wordlist=path/to/wordlist: Diccionario de palabras o combinaciones utilizadas para el proceso de comparación con el filehash.<fileHash-to-crack>: Contraseña cifrada de forma irreversible.
Tras haber descubierto la passphrase, requerimos descubrir el usuario propietario de la clave privada SSH.
Web: CVE-2024-46987
En variantes específicas de Camaleon v2.9.0 es posible realizar un Path Traversal, de tal manera que podemos acceder a archivos remotos del servidor víctima, como lo es /etc/passwd.
Si deseamos realizar la explotación a través de la CLI, podemos ejecutar el siguiente comando:
curl --cookie "_factsapp_session=Cookie ; auth_token=Cookie" "http://facts.htb/admin/media/download_private_file?file=../../../../../../../etc/passwd" | grep "bash"
-b/--cookie: capacidad de insertar una o máscookiesde sesión
Observamos que hay 3 usuarios existentes en el equipo: root, trivia y william.
SSH
Realizando un password spraying con los 3 usuarios existentes, descubrimos que la contraseña crackeada es para el usuario trivia. Tras ello, ingresamos por SSH:
ssh -i id_ed25519 trivia@10.129.16.176 #dragonballzTras haber ingresado, listamos los comandos que podemos ejecutar con los privilegios del usuario root:
sudo -l
Observamos que tenemos la capacidad de ejecutar el comando facter (Herramienta enfocada en listar una gran cantidad de datos del equipo en uso).
Investigando en GTFOBins identificamos que a través del comando facter es posible ejecutar scripts custom escritos en Ruby.
Para aprovecharnos de ello, utilizamos la flag custom--dir para abusar de esta propiedad y escribimos el script malicioso:
echo "require 'facter'; Facter.add(:get_bash){setcode{system('/bin/bash')}}" > exploit.rb
sudo facter --custom-dir /tmp get_bash
Ahora tenemos una sesión de bash como el usuario root, tomando control total del sistema Facts.
Impacto
Un atacante con permisos de un usuario común como trivia tiene capacidades de:
- Capacidad de ejecutar
scriptsy establecer sesiones persistentes.- Capacidad de enumerar otros sistemas de la red y de realizar movimiento lateral.
El atacante con permisos de administrador obtiene las capacidades de:
- Entablar persistencia entre sesiones y controlar el tráfico del servidor.
- Exfiltración de datos confidenciales (DB o almacenamiento interno a través de
S3/MinIO).- Manipulación de
cronjobspara ejecución de tareas maliciosas.- Instalación de
backdoorsa nivel de kernel.
Resumen
La máquina Facts presentó una serie de vulnerabilidades críticas (No todas expuestas en este WriteUp) tales como realizar un Path Traversal y posteriormente un RCE, así como que se presentó un Credential Reuse y explotación de un SUID, entre otras más. Por ello, continuación se expondrán los descubrimientos, su gravedad y pautas para evitar esta clase de fallas de seguridad.
Descubrimientos
Asignación Masiva de Atributos y Escalada de Privilegios en
CMS Camaleon
| ID | Vulnerabilidad | Gravedad | Descripción |
|---|---|---|---|
| MF1 | CWE-915: Modificación Inadecuada de Atributos Determinados Dinámicamente | Crítica | El CMS no valida adecuadamente la petición POST al cambiar de contraseña, permitiendo la inyección del parámetro role para escalar a privilegios de administrador |
Medidas inmediatas
- Actualizar inmediatamente el sistema
CMS Camaleona una versión parcheada y soportada por el cliente.- Implementar medidas
Zero Trusten el lado del servidor para ignorar o rechazar parámetros no autorizados durante la actualización de perfiles de los usuarios (whitelisting).- Limitar la creación de usuarios de manera estricta si no se requiere la interacción de usuarios externos.
Almacenamiento Inseguro de Claves Criptográficas y Uso de Contraseñas Débiles
| ID | Vulnerabilidad | Gravedad | Descripción |
|---|---|---|---|
| MF2 | CWE-1391 y CWE-312: Uso de credenciales débiles y Almacenamiento de información confidencial en texto sin cifrar | alta | Exposición de la clave privada SSH id_ed25519 en el bucket S3 local, la cual a su vez protegida por una contraseña susceptible a ataques de diccionario |
Medidas inmediatas
- Implementar permisos de lectura estrictos al bucket
S3interno, limitando su acceso de manera exclusiva a servicios y direccionesIPesenciales a través de unFirewallestricto.- Revocar la clave SSH comprometida y generar un nuevo par de claves utilizando un
passphraserobusto (Mínimo 16 caracteres, utilizando símbolos y dígitos alfanuméricos).- Evitar el almacenamiento de claves criptográficas en servicios de almacenamiento de objectos compartidos.
Exposición de Archivos Sensibles mediante
Path Traversal
| ID | Vulnerabilidad | Gravedad | Descripción |
|---|---|---|---|
| MF3 | CWE-22: Limitación Inadecuada de un Nombre de Ruta a un Directorio Restringido | Alta | El endpoint de descarga de archivos privados permite el uso de secuencias de salto de directorio (../), exponiendo archivos críticos del sistema operativo como /etc/passwd. |
Medidas inmediatas
- Implementar validación y sanitización estricta del parámetro
file, restringiendo secuencias de carácteres especiales como../y%2e%2e%2f.- Verificar que la ruta absoluta insertada solicite archivos dentro de directorios permitidos antes de procesar el archivo solicitado.
Gestión Inadecuada de Privilegios Sudo
| ID | Vulnerabilidad | Gravedad | Descripción |
|---|---|---|---|
| MF4 | CWE-269: Gestión inadecuada de Privilegios | Crítica | Usuario trivia capaz de ejecutar el binario facter como root, permitiendo la inyección de código Ruby y así ejecutar comandos como administrador. |
Medidas inmediatas
- Remover el binario
facterde las directivas de permisos de ejecución sin contraseña para el usuariotriviaen el archivo/etc/sudoers.- Si la ejecución forma parte de la lógica de negocios, crear un
wrapperintermediario que limite y valide los argumentos insertados por el usuariotriviapara limitar argumentos peligrosos como--custom-dir.- Auditar periódicamente el archivo de configuración
sudoers, verificando que se cumpla el principio del mínimo privilegio.
Related Posts
2026-05-24
2026-03-25
2026-03-16