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 ذلك بشكل صحيح

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

Abraxas Labs - nextcloud-ldap-put-isadmin

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  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 الأقدم فلا يفعل.

IDلا يوجد CVE بعد
CWECWE-863
CVSSHigh: 7.2 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H (مسؤول Users مفوَّض، وليس مسؤول النسخة)
ProductNextcloud Server
Affected35.0.0 (da02f41) النسخة الرسمية nextcloud:35.0.0-apache مع user_ldap
Authمسؤول Users مفوَّض مقابل مسؤول مرقّى عبر LDAP
LicenseGNU Affero GPL v3.0
Lab127.0.0.1 فقط

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

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

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

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

  • يغيّر الحصة الخاصة بالمسؤول المرقّى عبر LDAP (في المختبر: PUT 200، PATCH 403)
  • يعطّل أو يحذف ذلك المسؤول (نفس بوابة isInGroup على enable/disable/delete/wipe)
  • يعيد تعيين كلمة المرور إذا كان خلفية 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 مسؤولة النسخة دون وضع تلك المعرّفات في المجموعة المحلية 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 فقط. دون أي ضمان.

تنزيل الأداة