Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
moodle-grades-gradeitems — Moodle 5.2.3 - عالي - عن بُعد - IDOR - core_grades_get_gradeitems يسرد عناصر الدرجات المخفية | Kitploit
أدوات/GitHubGitHub/abraxas/moodle-grades-gradeitems
تحليل الثغرات الأمنيةاستغلال تطبيقات الويباختبار أمان APIجمع المعلوماتأمن الويباختبار الاختراقالتعلم والتعليممختبرات وتدريب عملي
GitHubabraxas/moodle-grades-gradeitems

moodle-grades-gradeitems

Moodle 5.2.3 - عالي - عن بُعد - IDOR - core_grades_get_gradeitems يسرد عناصر الدرجات المخفية

عرض المستودع
10منذ 3 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Abraxas Labs - moodle-grades-gradeitems

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  moodle-grades-gradeitems

moodle-grades-gradeitems

Moodle LMS 5.2.3 - Moodle

الفئة: IDOR الوصول: عن بُعد

core_grades_get_gradeitems هو ajax بالإضافة إلى خدمة الجوال الرسمية، بدون مفتاح capabilities في services.php. validate_context هو البوابة الوحيدة. ثم يقوم grade_item::fetch_all بإخراج كل عنصر في المقرر. يقوم array_filter بإسقاط GRADE_TYPE_NONE وعناصر الفئات وعنصر المقرر. المخفي ليس ضمن هذا الفلتر. الشقيق core_grades_get_grade_tree يتطلب بالفعل moodle/grade:viewall.

طالب مسجّل يرسل POST بـ {courseid} ويحصل على أسماء عناصر الدرجات المخفية التي لا يزال واجهة سجل درجات الطالب يخفيها.

المعرّفلا يوجد CVE بعد
CWECWE-862 / CWE-200
CVSSمتوسط: 4.3 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
المنتجMoodle
المتأثر5.2.3 وسم v5.2.3 (344232c15336c71b80f9aca8359ce0e0a9f3d116)
المصادقةطالب مسجّل (moodle/grade:view؛ يفتقر إلى viewall / viewhidden)
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1 فقط

ما يمكن للمهاجم فعله

الكاتب: طالب مسجّل في المقرر. يرسل POST إلى خدمة AJAX بـ {courseid}. الاستجابة هي أسماء ومعرّفات وفئات. مخطط الإرجاع لا يحتوي على درجات. ليس RCE. ليس LPE. ليس كتابة درجة.

الصلاحيةالطريقة / نقطة الوصولاستطلاع / سلامة / إتاحةمُثبت مختبريًا أو مُستنتج
قراءة اسم ومعرّف وفئة عنصر درجة مخفيPOST /lib/ajax/service.php?sesskey= core_grades_get_gradeitems {courseid}استطلاعمُثبت مختبريًا. HTTP 200، الأسماء تتضمن MOODLE-GRADES-GRADEITEMS-WITNESS
قراءة اسم ومعرّف وفئة عنصر درجة مرئينفس الاستجابةاستطلاع (مقصود للمعلمين)مُثبت مختبريًا. الأسماء تتضمن Visible Lab Assignment
نفس الكتالوج عبر خدمة الجوال الرسميةنفس الفئة، services تتضمن MOODLE_OFFICIAL_MOBILE_SERVICEاستطلاعمُستنتج من services.php. المختبر استخدم AJAX.
التنقل عبر قيم courseid المتسلسلة للمقررات التي يمكن للطالب دخولهانفس الطريقة، معرّفات مُخمّنةاستطلاعمُستنتج. المختبر استخدم معرّف المقرر المُهيّأ 2
رؤية العنصر المخفي في واجهة سجل درجات الطالبGET /grade/report/user/index.php?id=لا ينطبقمُثبت مختبريًا مغلق. hidden-in-ui=False، visible-in-ui=True
الاستدعاء بدون جلسةAJAX بمفتاح sesskey وهميلا ينطبقمُثبت مختبريًا مغلق. servicerequireslogin
الاستدعاء كمستخدم مسجّل الدخول غير مسجّل في المقررAJAX من خارجي، نفس courseidلا ينطبقمُثبت مختبريًا مغلق. requireloginerror
قراءة درجات طلاب آخرين أو كتابة الدرجاتلا ينطبقلا ينطبقمغلق. مفاتيح الإرجاع هي id، itemname، category
PHP RCE / OS LPEلا ينطبقلا ينطبقمغلق. هذه البقايا هي قراءة كتالوج

المعلم أو المدير الذي يمتلك بالفعل moodle/grade:viewall يرى الكتالوج بالفعل. الضيف / المستدعون غير المصادق عليهم لا يزالون بحاجة إلى سياق مقرر.

بقايا نفس الإصدار: Blackboard img file read، enrol_database SQLi، grades feedback IDOR.

كيف وجدته

ثبّتُ moodle/moodle v5.2.3 بعد MSA-26-0042/0043. كانت خدمات ويب الدرجات ضمن نافذة MSA تلك. get_gradeitems.php لا يزال بدون require_capability. واجهة الطالب كانت تخفي العنصر بالفعل. كتالوج AJAX لم يفعل.

المنعطفات الخاطئة المسجّلة بالفعل: اعتبار AJAX غير المصادق عليه 200 كتسريب (المحتوى هو servicerequireslogin)؛ تسمية هذا IDOR للدرجات لأن اسم الطريقة يحتوي على grade (المخطط أسماء فقط)؛ توقع أن يكون get_grade_tree نفس البقايا (فهو يتطلب بالفعل viewall). reverse shell. مسرحية.

المختبر

Moodle مباشر v5.2.3 على php:8.3-apache + MariaDB 11.4. التهيئة تسجّل labstudent، وتُبقي laboutsider خارج المقرر، وتنشئ عنصرًا يدويًا مرئيًا بالإضافة إلى عنصر مخفي اسمه هو الشاهد. run.sh ينسخ إصدارًا محليًا أو git clone --depth 1 --branch v5.2.3. شجرة Moodle ليست في هذه الحزمة.

python3 moodle-grades-gradeitems-Abraxas-Labs.py

أو

cd lab
./run.sh

الهدف فقط http://127.0.0.1:19590. مشروع Compose moodle-grades-gradeitems. يتم تفكيك الحزمة بعد التشغيل.

SUCCESS moodle-grades-gradeitems student-ajax=200 hidden-in-ajax=yes hidden-in-ui=no visible-in-ajax=yes visible-in-ui=yes outsider-error=yes unauth-error=yes MOODLE-GRADES-GRADEITEMS-WITNESS

الإصلاح

بعد validate_context، اطلب نفس الصلاحية كـ get_grade_tree: require_capability('moodle/grade:viewall', $context). كذلك أسقط العناصر المخفية ما لم يكن للمستدعي moodle/grade:viewhidden. أضف حالة Behat/PHPUnit: طالب مسجّل، عنصر يدوي مخفي، يجب أن يُسقط core_grades_get_gradeitems ذلك العنصر (أو 403). واجهة سجل درجات الطالب تخفيه بالفعل.

المراجع

  • github.com/moodle/moodle وسم v5.2.3
  • get_gradeitems.php
  • الشقيق يتطلب الصلاحية بالفعل: get_grade_tree.php
  • تسجيل الخدمة: services.php (core_grades_get_gradeitems، بدون capabilities)
  • نفس الإصدار: moodle-blackboard-img · moodle-enrol-database-sqli · moodle-grades-feedback-idor
  • CWE-862

الترخيص

GNU Affero GPL v3.0. انظر LICENSE. مختبر loopback فقط. بدون ضمان.

تنزيل الأداة