
CVE-2025-68400 - ChurchCRM معرضة لثغرة حقن SQL الأعمى القائم على الوقت في ملف ConfirmReportEmail.php
| الحقل | التفاصيل |
|---|---|
| معرف CVE | CVE-2025-68400 |
| الخطورة | حرجة |
| النشرة الأمنية | عرض النشرة |
| اكتُشف بواسطة | Lukasz Rybak |
توجد ثغرة حقن SQL حرجة في نقطة النهاية القديمة /Reports/ConfirmReportEmail.php في ChurchCRM 6.3.0. على الرغم من إزالة الميزة من واجهة المستخدم، يظل الملف منشورًا ويمكن الوصول إليه مباشرةً عبر URL. هذه حالة كلاسيكية من الكود الميت لكن القابل للوصول. يمكن لأي مستخدم مُصادَق - بما في ذلك من لا يملك أي صلاحيات مُمنوحة - استغلال حقن SQL عبر معامل familyId.
تقع المشكلة في:
src/Reports/ConfirmReportEmail.php
الكود المعرض للثغرة (الأسطر 82–83):
if (InputUtils::legacyFilterInput($_GET['familyId'], 'int')) {
$sSubQuery = ' and fam_id in (' . $_GET['familyId'] . ') ';
}
لماذا هذا الكود معرض للثغرة:
legacyFilterInput() تُتجاهَل تمامًا.$_GET['familyId'] الخام مباشرةً في استعلام SQL.نقطة نهاية ميتة لكن قابلة للوصول:
/Reports/ConfirmReportEmail.php?familyId=<value>
السلوك الطبيعي:
302 Redirect → /v2/family/<id>&PDFEmailed=
الحمولات الخبيثة التي تحتوي على ) أو -- تُعطّل منطق إعادة التوجيه وتنفّذ استعلام SQL المعرض للثغرة.
حتى المستخدم الذي يملك صفر صلاحيات يمكنه استغلال الثغرة.
حمولة SLEEP(5) تؤخّر الاستجابة بشكل موثوق، ما يثبت تنفيذ SQL.
يزور مستخدم مُصادَق:
http://localhost:8101/Reports/ConfirmReportEmail.php?familyId=1)%20AND%20(SELECT%201%20FROM%20(SELECT(SLEEP(5)))a)%20--%20-
النتيجة الملاحظة:
تأكيد sqlmap:
تم الإفصاح عن ثغرة CVE هذه بشكل مسؤول وفقًا لممارسات الإفصاح المنسّق عن الثغرات الأمنية. المعلومات الواردة هنا مخصصة للأغراض التعليمية والدفاعية فقط.