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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
nextcloud-ldap-put-isadmin — Nextcloud 35.0.0 — يمكن لمسؤول Users المفوَّض تعديل مسؤول مُرقّى من LDAP عبر PUT بينما يرفض PATCH ذلك بشكل صحيح | Kitploit
أدوات/GitHubGitHub/abraxas/nextcloud-ldap-put-isadmin
المصادقة والترخيصتصعيد الامتيازاتتحليل الثغرات الأمنيةاستغلال تطبيقات الويبأمن الويباختبار الاختراقمختبرات وتدريب عملي
GitHub

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
abraxas/nextcloud-ldap-put-isadmin

nextcloud-ldap-put-isadmin

Nextcloud 35.0.0 — يمكن لمسؤول Users المفوَّض تعديل مسؤول مُرقّى من LDAP عبر PUT بينما يرفض PATCH ذلك بشكل صحيح

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

Abraxas Labs - nextcloud-ldap-put-isadmin

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  nextcloud-ldap-put-isadmin

التحليل المكتوب: https://abraxaslabs.tech/research/nextcloud-ldap-put-isadmin

nextcloud-ldap-put-isadmin

Nextcloud Server 35.0.0 - Nextcloud GmbH

يسمح PUT /cloud/users/{id} لمسؤول Users المفوَّض بتحرير هدف ما، إلا إذا كان ذلك الهدف ضمن المجموعة المحلية admin. أما PATCH على المسار نفسه فيستخدم isAdmin() بشكل صحيح. المسؤولون المرفَّعون عبر LDAP يكون لديهم isAdmin()===true وغالبًا لا يكونون ضمن تلك المجموعة المحلية.

يمكن لجهة فاعلة خبيثة تملك وظيفة Users على نمط مكتب المساعدة أن تعطّل أو تقيّد الحصة أو تحذف مسؤولًا حقيقيًا مرفَّعًا عبر LDAP. واجهة PATCH الأحدث ترفض ذلك بشكل صحيح. أما مسار PUT الأقدم فلا يفعل.

المعرّفلا يوجد CVE بعد
CWECWE-863
CVSSمرتفع: 7.2 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H (مسؤول Users مفوَّض، وليس مسؤول النسخة)
المنتجNextcloud Server
المتأثر35.0.0 (da02f41) صورة nextcloud:35.0.0-apache الرسمية مع user_ldap
المصادقةمسؤول Users مفوَّض مقابل مسؤول مرفَّع عبر LDAP
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1 فقط

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

في موقع يعتمد على LDAP، قمت بترقية مجموعة LDAP إلى مسؤول نسخة (occ ldap:promote-group). هؤلاء الأشخاص مسؤولون حقيقيون (isAdmin()===true) لكنهم قد لا يكونون ضمن مجموعة Nextcloud المحلية المسماة admin.

كما منحت شخصًا ما وظيفة إعدادات Users (مكتب المساعدة). وهو ليس مسؤول نسخة كاملًا.

يمكن لمستخدم مكتب المساعدة هذا أن:

  • يغيّر الحصة لمسؤول مرفَّع عبر LDAP (في المختبر: PUT 200، PATCH 403)
  • يعطّل أو يحذف ذلك المسؤول (نفس بوابة isInGroup في التفعيل/التعطيل/الحذف/المحو)
  • يعيد تعيين كلمة المرور إذا كان خادم LDAP الخلفي يسمح بـ canChangePassword() (غالبًا false؛ لا تعتمد عليه)

لا يمكنهم فعل ذلك بشخص موجود فعليًا في المجموعة المحلية admin. ولا يمكنهم فعل ذلك في موقع لا يحتوي على مسؤولين مرفَّعين عبر LDAP. واجهة PATCH الأكثر أمانًا تعرف الفرق بالفعل.


كيف وجدته

في عملية التزويد يوجد محرران للمستخدم نفسه. UsersController::editUser هو PUT. وeditUserMultiField هو PATCH. الملف نفسه. الدالتان متجاورتان. إجابتان مختلفتان عن سؤال "هل هذا الشخص مسؤول."

يتحقق PUT من isInGroup($target, 'admin'). ويتحقق PATCH من isAdmin($target). تسأل Manager::isAdmin() واجهة LDAP IIsAdmin ثم المجموعة المحلية. ويجعل occ ldap:promote-group مجموعة LDAP مسؤولة نسخة دون وضع تلك المعرّفات (uids) في المجموعة المحلية admin.

قمت بتشغيل صورة nextcloud:35.0.0-apache الرسمية مع osixia/openldap:1.5.0. مستخدم LDAP ldapadmin في المجموعة المرفَّعة ncadmins: isAdmin()===true، وليس في المجموعة المحلية admin. أما helpdesk المحلي فهو Users مفوَّض، وليس مسؤول نسخة.

أرسلت PATCH أولًا. فهو المسار الأحدث. توقعت أن يطابقه PUT. أعاد PATCH {"quota":"1 GB"} الرمز 403. وأعاد PUT key=quota&value=1 GB الرمز 200. ثم أظهر GET الحصة 1073741824.


المختبر

cd lab
./run.sh

استهدف فقط http://127.0.0.1:18342 (OpenLDAP على DNS الخاص بـ compose ldap:389).

SUCCESS NEXTCLOUD-LDAP-PUT-ISADMIN who=delegated-users-admin target=ldapadmin put=200 patch=403 NEXTCLOUD-LDAP-PUT-ISADMIN-WITNESS
  • lab/docker-compose.yml
  • lab/Dockerfile
  • lab/run.sh
  • lab/ldap/50-seed.ldif
  • lab/fixture.php

الإصلاح

استخدم isAdmin($target) في PUT/disable/delete/wipe بالطريقة نفسها التي يستخدمها PATCH بالفعل.


المراجع

  • github.com/nextcloud/server وسم v35.0.0
  • ترقية LDAP: occ ldap:promote-group (PR #41650)
  • Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null

الترخيص

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

تنزيل الأداة