CVE-2025-60500 — ثغرة رفع ملفات غير آمنة / خلل منطقي في QDocs Smart School (Smart School 7.1)
تاريخ النشر: 2025-10-17
المؤلف / المكتشف: Lebas Vivien
الحالة: محجوز
CVE: CVE-2025-60500 (محجوز)
ملخص
ثغرة رفع ملفات غير آمنة / خلل منطقي في QDocs Smart School — School Management System 7.1 تسمح للمستخدمين المصادق عليهم بأدوار مثل accountant أو admin أو superadmin بتجاوز قيود أنواع الملفات في ميزة رفع الوسائط من خلال إساءة استخدام خيار YouTube URL البديل. تسمح هذه الثغرة للمهاجم بالتسبب في تخزين ملفات PHP عشوائية في دليل يمكن الوصول إليه عبر الويب، مما يتيح تنفيذ التعليمات البرمجية عن بُعد عند الوصول إلى الملف المرفوع.
المنتج المتأثر: Smart School : School Management System 7.1 (QDocs)
تأكيد البائع: نعم
التأثير
- تنفيذ التعليمات البرمجية عن بُعد (RCE) عبر ملفات PHP المرفوعة الموضوعة في دليل يمكن الوصول إليه عبر الويب.
- يمكن للمستخدم المصادق عليه بالأدوار المحددة رفع ملف PHP عشوائي سيتم تخزينه تحت مسار يمكن التنبؤ به ويمكن الوصول إليه عبر الويب.
- يمكن للمهاجمين تنفيذ أوامر النظام أو التحرك بشكل أعمق داخل البيئة عن طريق استدعاء الملف المرفوع.
المكوّن المتأثر
- ميزة رفع الملفات — Download Center > Upload Share Content (تدفق رفع الوسائط / مشاركة المحتوى)
نوع الهجوم / ناقل الهجوم
- نوع الهجوم: عن بُعد (يتطلب حسابًا مصادقًا عليه بدور: accountant/admin/superadmin)
- نواقل الهجوم: تدفق الرفع مقترنًا بخيار YouTube URL البديل؛ من خلال إرسال كل من ملف مرفوع وحقل رابط YouTube معًا، يقوم الخادم بتخزين الملف المرفوع بامتداد
.php في دليل يمكن الوصول إليه عبر الويب.
إعادة الإنتاج (PoC مفاهيمي — لا يتضمن حمولة قابلة للتنفيذ)
- سجّل الدخول إلى Smart School كمستخدم بدور
accountant أو admin أو superadmin.
- انتقل إلى Download Center → Upload Share Content.
- اعترض طلب HTTP (على سبيل المثال، باستخدام وكيل مثل Burp) أثناء تدفق الرفع/المشاركة.
- ارفع ملفًا ينتهي اسمه بـ
.php (تحاول الفحوصات/عوامل التصفية من جانب الخادم حظر رفع PHP من خلال التحقق العادي من نوع الملف).
- في نفس طلب الرفع/الإرسال، قم أيضًا بملء حقل YouTube URL البديل (مسار المنطق الذي يتعامل مع خيار YouTube يسمح بشكل غير صحيح بقبول الملف المرفوع وتخزينه).
- أكمل تدفق المشاركة/الرفع؛ لاحظ استجابة الخادم أو راقب مسار الملف المخزن المُعاد (يكشف التطبيق عن مسار التخزين). مثال على نمط مسار التخزين الملاحظ: /uploads/school_content/material/media/!file.php
- قم بالوصول إلى ملف
.php المخزن عبر عنوان URL المُعاد لتشغيل تنفيذ التعليمات البرمجية (إذا كان الملف يحتوي على كود PHP قابل للتنفيذ).
إثبات المفهوم (عالي المستوى)
- يتم كتابة ملف PHP مرفوع عبر التدفق الضعيف إلى دليل يمكن الوصول إليه عبر الويب ويمكن استدعاؤه مباشرة عبر HTTP.
- الثغرة هي تجاوز منطقي/تحقق (يفشل مسار كود YouTube URL البديل في فرض نفس القيود الصارمة على أنواع الملفات مثل تدفق الرفع العادي).
التخفيف / الإصلاحات الموصى بها
إصلاحات من جانب البائع (موصى بها):
- إصلاح الخلل المنطقي بحيث يفرض مسار YouTube URL البديل وأي مسارات رفع خاصة أخرى نفس التحقق من نوع الملف والتصفية مثل تدفق الرفع العادي. تحقق أيضًا مما إذا كان رابط YouTube صالحًا/موجودًا.
- منع تنفيذ الملفات المرفوعة عن طريق تخزين المحتوى المرفوع خارج جذر الويب أو ضمان تقديم الملفات المرفوعة من خلال معالج آمن لا ينفذ أبدًا التعليمات البرمجية من جانب الخادم.
- فرض فحوصات MIME وامتداد الملف من جانب الخادم، والتحقق من قائمة بيضاء لأنواع الملفات المسموح بها بدلاً من قائمة سوداء.
- إعادة تسمية الملفات المخزنة إلى امتدادات آمنة و/أو عشوائية الأسماء دون الحفاظ على الامتداد الأصلي.
- تعيين أذونات الخادم الصحيحة بحيث لا تكون الملفات المرفوعة قابلة للتنفيذ (على سبيل المثال،
chmod لإزالة إذن التنفيذ؛ تكوين خادم الويب لعدم تنفيذ PHP من أدلة الرفع).
- إضافة تسجيل ومراقبة للرفع المشبوه ومحاولات الوصول إلى الملفات المرفوعة.
- تطبيق قيود قائمة على الأدوار — تشديد الأدوار المسموح لها برفع المحتوى، والمطالبة بتحقق إضافي للأدوار المميزة.
حلول بديلة للمسؤولين:
- تعطيل ميزة الرفع/المشاركة الإشكالية مؤقتًا إذا كان ذلك ممكنًا.
- تقييد وصول الرفع إلى عدد أقل من الحسابات الموثوقة.
- تكوين خادم الويب لمنع تنفيذ
.php في دليل /uploads/....
المراجع
- المثيل التجريبي المُبلَّغ عنه:
https://smart-school.in/demo
- معرف CVE المحجوز لدى MITRE: CVE-2025-60500