
إثبات المفهوم لاستغلال الثغرة الأمنية الموصوفة في CVE-2025-11554، والتي تتعلق بإمكانية تصعيد الامتيازات عبر طلبات عشوائية إلى نقطة نهاية تغيير أنواع المستخدمين في برنامج i-Educar.
إثبات المفهوم لاستغلال الثغرة الموضحة في CVE-2025-11554، والتي تتعلق بإمكانية تصعيد الامتيازات أثناء الطلبات التعسفية إلى نقاط نهاية أنواع المستخدمين في برنامج i-Educar.
يمكن للمستخدمين الذين لا يمتلكون الامتيازات اللازمة لتغيير أنواع المستخدمين تعديل صلاحيات أنواع المستخدمين المسجلة من خلال طلب تعسفي إلى نقطة النهاية المسؤولة عن هذا الإجراء. وهذا يسمح للمستخدمين ذوي الامتيازات المنخفضة بتصعيد امتيازاتهم من خلال منح أقصى الصلاحيات لنوع المستخدم المرتبط بهم، مما يعرض جميع أقسام التطبيق للخطر.
لإثبات الثغرة، سنحاكي مسار هجوم يمكن استخدامه في سيناريو استغلال حقيقي. أولاً، لدينا المستخدم Usuário sem Privilégios، المرتبط بنوع المستخدم Baixíssimo.

لا يمتلك نوع المستخدم Baixíssimo أي صلاحيات مرتبطة به ويتم تعيينه لأدنى مستوى وصول، وهو Biblioteca، بمستوى 8.

لأغراض هذا العرض التوضيحي، يمكننا ملاحظة أن صلاحيات تعديل أنواع المستخدمين معطلة لهذا الدور، مما يعني أن المستخدمين المرتبطين به لا ينبغي أن يكونوا قادرين على عرض أو إنشاء/تعديل أو حذف أنواع المستخدمين.

عند تسجيل الدخول باسم Usuário sem Privilégios، يمكننا التأكد من عدم تعيين أي صلاحيات، حيث لا تتوفر له أي أقسام.

الخطوة الأولى في عملية تصعيد الامتيازات هي تحديد نوع المستخدم المعين للمستخدم. في الاستجابات المختلفة للطلبات التي تُرجع مستندات HTML معروضة من التطبيق، يمكن العثور على هذه المعلومات في متغير dataLayer، الموجود داخل عنصر script الأول في المستند. يمكننا التحقق من هذه المعلومات من خلال الوصول إلى الصفحة الرئيسية للتطبيق، على سبيل المثال. في هذا العرض التوضيحي، سيتم استخدام Burp Suite لتحليل الطلبات ومعالجتها.

بعد تحديد نوع المستخدم المرتبط بالمستخدم الحالي، الخطوة التالية هي تحديد معرّفه المخزن في قاعدة البيانات. لتحقيق ذلك، يجب استخدام نقطة النهاية /usuarios/tipos/<cod_tipo_usuario>. نظرًا لأن معرّفات أنواع المستخدمين رقمية ومتسلسلة، فمن الممكن تعداد جميع أنواع المستخدمين المخزنة حتى يتم العثور على النوع المرتبط بالمستخدم الحالي.
نوع المستخدم المحدد بالرقم 1، على سبيل المثال، هو نوع المستخدم الإداري، Administrador، افتراضيًا.

في استجابة التطبيق، يمكننا رؤية الصلاحيات المرتبطة بنوع المستخدم في كائن processes. يتم تحديد كل قسم محدد بمعرّف رقمي فريد، ويتم تحديد مستوى وصول نوع المستخدم إلى ذلك القسم بالأرقام 0، 1، 2، أو 3:
يمكننا ملاحظة أن نوع المستخدم الإداري لديه مستوى وصول 3 لجميع الأقسام.

عند طلب نوع المستخدم بالمعرّف 2، نرى أنه يتوافق مع نوع المستخدم المرتبط بالمستخدم الحالي. هذا النوع من المستخدمين لديه مستوى وصول 0 لجميع الأقسام.


مع أخذ كل هذا في الاعتبار، يمكننا المتابعة مع تصعيد الامتيازات. للقيام بذلك، يجب إرسال طلب POST إلى نفس نقطة النهاية، يحتوي على معرّف نوع المستخدم المطابق لمعرّف نوع المستخدم المرتبط بالمستخدم الحالي. يجب أن يتضمن نص الطلب المعاملات _method, name, level, description, و processes. ليست جميع القيم المطلوبة مفهومة فورًا، ولكن نظرًا لأن هذا مشروع مفتوح المصدر، يمكن اكتشاف البنية الصحيحة للطلب بسهولة من خلال مراجعة الكود أو الاختبار اليدوي على نسخة محلية.
في الطلب أدناه، نقوم بتعديل مستوى الوصول لجميع الأقسام إلى أقصى وصول (3) وتغيير نوع المستخدم من Biblioteca إلى Poli-institucional (معامل level مضبوط على القيمة 1). وهذا يعني أن المستخدم سيحصل على حق الوصول إلى جميع المؤسسات المسجلة، وليس فقط المؤسسة المرتبطة به أثناء إنشائه.

بعد ذلك، عند إعادة تحميل الصفحة الرئيسية، يمكننا التأكد من أن المستخدم الذي كان بدون صلاحيات سابقًا لديه الآن جميع الامتيازات المتاحة في سياق التطبيق، الممنوحة بشكل تعسفي.

يمكن العثور على مسارات نقاط النهاية القابلة للاستغلال في ملف routes/web.php.

يمكن العثور على الطرق القابلة للاستغلال المستخدمة بواسطة هذه المسارات في ملف app/Http/Controllers/AccessLevelController.php. لا تقوم هذه الطرق بإجراء فحص للصلاحيات على المستخدم الطالب قبل تنفيذ الإجراءات المطلوبة على أنواع المستخدمين.


يُستخدم هذا البرنامج كحل لإدارة المدارس في مختلف المؤسسات العامة. تحتوي كل نسخة على أنواع مختلفة من المعلومات الحساسة حول المستخدمين والطلاب المسجلين، مثل وثائق الهوية والسجلات الطبية (الحالات الطبية). في سيناريو حيث يستغل مستخدم ضار منخفض الامتيازات أو حساب يتحكم فيه المهاجم هذه الثغرة، ستكون سرية وسلامة وتوافر هذه السجلات في خطر. سيكشف التقييم الأمني السريع للمشروع عن هذا الضعف.