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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
openmeetings-calendar-save-idor — Apache OpenMeetings 9.1.0 - مرتفع - عن بُعد - IDOR - حفظ تقويم تسجيل الدخول يستبدل الموعد ويغلق الغرفة العامة | Kitploit
أدوات/GitHubGitHub/abraxas/openmeetings-calendar-save-idor
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبجمع المعلوماتأمن الويباختبار الاختراقمختبرات وتدريب عملي
GitHubabraxas/openmeetings-calendar-save-idor

openmeetings-calendar-save-idor

Apache OpenMeetings 9.1.0 - مرتفع - عن بُعد - IDOR - حفظ تقويم تسجيل الدخول يستبدل الموعد ويغلق الغرفة العامة

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - openmeetings-calendar-save-idor

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  openmeetings-calendar-save-idor

openmeetings-calendar-save-idor

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

Apache OpenMeetings 9.1.0 (9773c59e) - Apache Software Foundation

يمكن لأي مستخدم LOGIN إرسال POST /services/calendar/ مع معرّف موعد (appointment) يعود لشخص آخر مع حذف owner. فحوى التحقق في عملية الحفظ (save predicate) لا يقوم بتحميل المالك المخزَّن مطلقًا. بعد ذلك يقوم CalendarMapper ثم RoomMapper بكتابة closed / ispublic / name على الغرفة المرتبطة. وبذلك يستطيع مستخدم مسجَّل أن يستبدل اجتماع شخص آخر ويغلق غرفة مؤتمرات عامة.

المعرّفلا يوجد CVE بعد
الفئةIDOR
الوصولعن بُعد (LOGIN REST موثَّق)
CWECWE-639، CWE-284
CVSSمرتفع: 7.6 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L
المنتجApache OpenMeetings
المتأثر9.1.0 (9773c59e1af327bf988018e661f456ae9997c29f)
المصادقةLOGIN (التسجيل الذاتي الافتراضي يمنح هذه الصلاحية)
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1:18150 فقط. apache/openmeetings:min-9.1.0 مع Temurin 21.

ثبَّتُ الوسم 9.1.0، وأزلتُ الطبقة 9773c59e1af327bf988018e661f456ae9997c29f (2026-07-14). أحدث إصدار GA. Java 21. ليس master.

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

سجِّل (المعالج allowFrontendRegister=true) أو احصل على أي كلمة مرور LOGIN. يُصدر POST /openmeetings/services/user/login معرّف جلسة SID. معرّفات المواعيد متسلسلة. معرّف الغرفة العامة 2 هو غرفة المؤتمرات الافتراضية.

الطريقةنقطة الوصولالصلاحية
POST /services/calendar/?sid= نموذج appointment JSON، مع حذف owner، وid الضحيةفحوى CalendarWebService.save (CalendarWebService.java:310-329)السلامة (مُثبتة مختبريًا): استبدال العنوان والأوقات والأعضاء. المختبر: أصبح العنوان OPENMEETINGS-CALENDAR-SAVE-WITNESS، والمالك 2→3.
نفس عملية الحفظ؛ room.closed=trueRoomMapper.get يكتب على الكيان المُدار (RoomMapper.java:62-92) ثم dao.updateالسلامة + التوافر (مُثبتة مختبريًا): غرفة المؤتمرات العامة أصبحت closed=true وisPublic=false بشكل دائم. أعاد SOAP GET /room/2 ذلك.
GET المهاجم للعنوان/النطاق بعد الحفظDTO الاستجابة هو الصف بعد الكتابةالاستطلاع (مُثبت مختبريًا): عنوان الشاهد. نطاق الضحية فارغ بعد سرقة الملكية.

مُثبت مختبريًا مقابل مُستنتج: استجابة الحفظ HTTP 200، والعنوان، وسرقة الملكية، وإغلاق الغرفة كلها مختبريًا. بتات السعة / الإشراف على نفس الـ mapper مُستنتجة.

يتطلب: مسار شبكي إلى /openmeetings/services. حساب LOGIN. معرّف موعد ضحية (متسلسل، أو أنشئ واحدًا وانتظر). التسجيل المفتوح الافتراضي.

السطح المجاور الذي يبقى مغلقًا

السطحالسبب
DELETE /calendar/{id}المالك أو SOAP/ADMIN. لا يستطيع LOGIN العادي حذف مواعيد الآخرين.
قراءات النطاق / التالي / العنوانمقيَّدة بالمالك. لا يحصل المهاجم على قراءة نظيفة للصف الأصلي.
تسجيل MP4قائمة تحكم وصول مختلفة (RecordingResourceReference).
القائمة حسب userid عبر SOAP فقطRight.SOAP. المستخدمون المسجَّلون افتراضيًا لا يملكونها.
الحفظ غير الموثَّقيحتاج performCall إلى SID مع LOGIN.

كيف وجدته

أغلق الإصدار 9.1.0 الثغرة CVE-2026-49488 (قراءة نظام الملفات عبر fuid في السبورة). واصلت البحث في معرّفات كائنات REST. حذف التقويم يتحقق من a.isOwner(sd.getUserId()). أما حفظ التقويم فيتحقق من مالك DTO الطلب، أو من كونه null. يقوم CalendarMapper.get بتحميل appointmentDao.get(dto.getId()) دون نطاق مالك. ثم يقوم RoomMapper بتوسيخ كيان JPA للغرفة قبل dao.update.

حساب تكامل LMS هو حساب SOAP الذي يسرد كل موعد. هذه البقايا هي LOGIN مقابل المالك.

المختبر

cd lab
./run.sh

Loopback https://127.0.0.1:18150/openmeetings. مسؤول Docker الرسمي om_admin / 1Q2w3e4r5t^y. TLS موقّع ذاتيًا. آخر سطر من الشاهد:

SUCCESS OPENMEETINGS-CALENDAR-SAVE-WITNESS

الإصلاح المقترح

حمّل الموعد المحفوظ قبل الحفظ. اشترط a.isOwner(caller) ما لم يكن SOAP/ADMIN. لا تطبّق كتابات RoomMapper على غرفة لا يستطيع المتصل إدارتها. تعامل مع المالك المحذوف على أنه "أبقِ المالك المحفوظ"، وليس "يصبح المتصل هو المالك".

جهة الاتصال

Abraxas Labs - https://abraxaslabs.tech - https://github.com/abraxas - https://x.com/abraxas_null - [email protected]

المورّد: [email protected]

تنزيل الأداة