
إثبات مفهوم يوضح حقن SQL رقمي مُصادق عليه في ChurchCRM قبل الإصدار 6.7.2، مما يتيح التلاعب بالمنطق لتجاوز شروط WHERE والتأثير على سجلات متعددة. يتضمن تعليمات الاستخدام، وتفاصيل التصحيح، وتوصيات التخفيف.
المؤلف: محمد إدريس بن يامر
البلد: الأردن
الحساب: @banyamer_security
GitHub: https://github.com/mbanyamer
يحتوي هذا المستودع على إثبات مفهوم (PoC) يوضح ثغرة حقن SQL رقمية مصادق عليها في ChurchCRM في الإصدارات السابقة لـ 6.7.2.
تسمح الثغرة بـ التلاعب بمنطق استعلامات SQL عن طريق حقن حمولات غير رقمية في معاملات يُفترض أنها رقمية، مما يتيح تعديلًا غير مصرح به لسلوك الاستعلام (مثل تجاوز شروط WHERE).
توجد الثغرة في الملف التالي:
src/PaddleNumEditor.php
يتم دمج معامل POST PerID مباشرة في استعلامات SQL متعددة دون تحويل نوع مناسب أو تنقية. على الرغم من أنه يُقصد به أن يكون رقميًا، إلا أنه يمكن التلاعب به لتغيير منطق SQL.
نمط الثغرة المثال (مفاهيمي):
DELETE FROM multibuy_mb WHERE mb_per_ID = $PerID AND mb_fr_ID = $frID;
من خلال توفير حمولة مثل:
0 OR 1=1 --
يمكن تجاوز منطق جملة WHERE، مما قد يحول عملية سجل واحد إلى عملية متعددة السجلات أو على مستوى الجدول بالكامل.
هذه الثغرة ليست مصممة لاستخراج البيانات العمياء، بل لـ إساءة استخدام المنطق التي تؤثر على عمليات UPDATE أو DELETE أو INSERT.
يمكن للمهاجم المصادق عليه:
نظرًا لأن هذا الخلل يحدث في منطق رقمي فقط، فقد يتجاوز اكتشاف حقن SQL الأساسي وقواعد جدار الحماية (WAF).
يوضح إثبات المفهوم ما يلي:
طلب شرعي يستخدم PerID رقميًا يؤثر على سجل واحد فقط.
حمولة حقن SQL رقمية مصممة:
0 OR 1=1 --
تتجاوز هذه الحمولة قيود جملة WHERE، مما يؤدي إلى تأثيرات متعددة السجلات أو على مستوى الجدول بالكامل (مثل الحذف الجماعي).
يقارن إثبات المفهوم استجابات HTTP والاختلافات السلوكية لتأكيد نجاح التلاعب.
تثبيت التبعية:
pip install requests
قم بتعديل المتغيرات التالية في سكربت إثبات المفهوم:
TARGET_BASE = "http://localhost/churchcrm"
USERNAME = "admin"
PASSWORD = "yourpassword"
⚠️ استخدم فقط نسخة اختبار محلية أو مصرحًا بها
python3 churchcrm_cve-2026-24854_poc.py
لتأكيد الاستغلال:
multibuy_mb) قبل وبعديمكن ضبط دالة is_success_response() لتطابق الاستجابات العادية مقابل المتلاعب بها في نسختك.
تم إصلاح المشكلة في ChurchCRM 6.7.2 عبر commit:
748f5084
تفاصيل الإصلاح:
(int) صريح على:
PerIDNum0، مما يمنع الحقنيجب على المستخدمين الترقية فورًا.
تم اكتشاف هذه الثغرة والإفصاح عنها بمسؤولية بواسطة:
محمد إدريس بن يامر
الأردن
Instagram: @banyamer_security
GitHub: https://github.com/mbanyamer
تم توفير إثبات المفهوم هذا لأغراض تعليمية وأمنية دفاعية فقط.
لا تستخدم هذا الكود ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها.
لا يتحمل المؤلف أي مسؤولية عن سوء الاستخدام أو الأضرار الناتجة عن هذا الكود.