
Nextcloud 35.0.0 — 위임된 Users 관리자가 LDAP로 승격된 관리자를 PUT으로 편집할 수 있으며, PATCH는 이를 올바르게 거부함
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · 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 | High: 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 관리자 vs LDAP로 승격된 관리자 |
| 라이선스 | GNU Affero GPL v3.0 |
| 랩 | 127.0.0.1 전용 |
LDAP 사이트에서 LDAP 그룹을 인스턴스 관리자로 승격했습니다(occ ldap:promote-group). 그 사람들은 실제 관리자(isAdmin()===true)이지만 로컬 Nextcloud 그룹 admin에 속하지 않을 수 있습니다.
또한 누군가에게 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은 해당 uid를 로컬 admin 그룹에 넣지 않고 LDAP 그룹을 인스턴스 관리자로 만듭니다.
공식 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
PATCH가 이미 하는 것과 동일한 방식으로 PUT/disable/delete/wipe에서 isAdmin($target)을 사용하십시오.
occ ldap:promote-group (PR #41650)GNU Affero GPL v3.0. LICENSE를 참조하십시오. 루프백 랩 전용. 보증 없음.