Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
nextcloud-ldap-put-isadmin — Nextcloud 35.0.0 — делегированный администратор Users может PUT-редактировать администратора, повышенного через LDAP, тогда как PATCH корректно отклоняет это | Kitploit
Инструменты/GitHubGitHub/abraxas/nextcloud-ldap-put-isadmin
Аутентификация и авторизацияПовышение привилегийАнализ уязвимостейЭксплуатация веб-приложенийВеб-безопасностьТестирование на ПроникновениеЛаборатории и Практика
GitHub

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
abraxas/nextcloud-ldap-put-isadmin

nextcloud-ldap-put-isadmin

Nextcloud 35.0.0 — делегированный администратор Users может PUT-редактировать администратора, повышенного через LDAP, тогда как PATCH корректно отклоняет это

Репозиторий
815 дней назадЕщё не проверено

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} позволяет делегированному администратору пользователей редактировать цель, если только эта цель не входит в локальную группу admin. PATCH по тому же пути корректно использует isAdmin(). Администраторы, повышенные через LDAP, имеют isAdmin()===true и часто не входят в эту локальную группу.

Злоумышленник с ролью пользователей в стиле службы поддержки может отключить, заблокировать по квоте или удалить настоящего администратора экземпляра, повышенного через LDAP. Более новый API PATCH корректно отказывает. Старый путь PUT — нет.

IDCVE пока нет
CWECWE-863
CVSSHigh: 7.2 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H (делегированный администратор пользователей, не администратор экземпляра)
ПродуктNextcloud Server
Затронуто35.0.0 (da02f41) официальный nextcloud:35.0.0-apache плюс user_ldap
Аутентификацияделегированный администратор пользователей против администратора, повышенного через LDAP
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1

Что может сделать злоумышленник

На сайте с LDAP вы повысили LDAP-группу до администратора экземпляра (occ ldap:promote-group). Эти люди — настоящие администраторы (isAdmin()===true), но они могут не состоять в локальной группе Nextcloud с именем admin.

Вы также дали кому-то роль в настройках Пользователи (служба поддержки). Он не является полным администратором экземпляра.

Этот пользователь службы поддержки может:

  • Изменить квоту администратора, повышенного через LDAP (лаборатория: PUT 200, PATCH 403)
  • Отключить или удалить этого администратора (та же проверка isInGroup при включении/отключении/удалении/очистке)
  • Сбросить пароль, если бэкенд LDAP разрешает canChangePassword() (часто false; не полагайтесь на это)

Они не могут сделать это с тем, кто действительно входит в локальную группу admin. Они не могут сделать это на сайте без администраторов, повышенных через LDAP. Более безопасный API PATCH уже знает разницу.


Как я это нашёл

В провижининге есть два редактора для одного и того же пользователя. UsersController::editUser — это PUT. editUserMultiField — это PATCH. Один и тот же файл. Соседние методы. Два разных ответа на вопрос «является ли этот человек администратором».

PUT проверяет isInGroup($target, 'admin'). PATCH проверяет isAdmin($target). Manager::isAdmin() сначала спрашивает LDAP IIsAdmin, затем локальную группу. occ ldap:promote-group делает LDAP-группу администратором экземпляра, не помещая эти uid в локальную группу admin.

Я развернул официальный nextcloud:35.0.0-apache плюс osixia/openldap:1.5.0. LDAP-пользователь ldapadmin в повышенной группе ncadmins: isAdmin()===true, не в локальной admin. Локальный helpdesk — делегированный пользователями, не администратор экземпляра.

Сначала я отправил 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 на compose DNS 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. Без гарантий.

Скачать инструмент