
Nextcloud 35.0.0 — प्रतिनिधित्व किए गए Users एडमिन एक LDAP-प्रोमोटेड एडमिन को PUT-एडिट कर सकते हैं जिसे PATCH सही ढंग से अस्वीकार करता है
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · nextcloud-ldap-put-isadmin
राइट-अप: https://abraxaslabs.tech/research/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 API सही ढंग से मना करता है। पुराना PUT पथ नहीं करता।
| ID | अभी तक कोई CVE नहीं |
| CWE | CWE-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) लेकिन वे admin नामक स्थानीय Nextcloud समूह में नहीं हो सकते।
आपने किसी को Users सेटिंग्स की नौकरी (हेल्पडेस्क) भी दी। वे पूर्ण इंस्टेंस व्यवस्थापक नहीं हैं।
वह हेल्पडेस्क उपयोगकर्ता यह कर सकता है:
isInGroup गेट)canChangePassword() की अनुमति देता है (अक्सर false; इस पर निर्भर न रहें)वे ऐसा किसी ऐसे व्यक्ति के साथ नहीं कर सकते जो वास्तव में स्थानीय admin समूह में है। वे ऐसा किसी ऐसी साइट पर नहीं कर सकते जहाँ कोई LDAP-प्रोन्नत व्यवस्थापक न हो। सुरक्षित PATCH API पहले से ही अंतर जानता है।
प्रोविज़निंग में एक ही उपयोगकर्ता के लिए दो संपादक हैं। 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 खड़ा किया। प्रोन्नत समूह ncadmins में LDAP उपयोगकर्ता ldapadmin: 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 को लक्षित करें (compose DNS ldap:389 पर OpenLDAP)।
SUCCESS NEXTCLOUD-LDAP-PUT-ISADMIN who=delegated-users-admin target=ldapadmin put=200 patch=403 NEXTCLOUD-LDAP-PUT-ISADMIN-WITNESS
PUT/disable/delete/wipe पर isAdmin($target) का उपयोग उसी तरह करें जैसे PATCH पहले से करता है।
occ ldap:promote-group (PR #41650)GNU Affero GPL v3.0. देखें LICENSE। केवल लूपबैक लैब। कोई वारंटी नहीं।