Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
nextcloud-ldap-put-isadmin — Nextcloud 35.0.0 — 被委派的用户管理员可以通过 PUT 编辑一个由 LDAP 提升的管理员,而 PATCH 会正确拒绝 | Kitploit
工具/GitHubGitHub/abraxas/nextcloud-ldap-put-isadmin
身份验证与授权权限提升漏洞分析Web应用程序漏洞利用Web安全渗透测试实验室与实践
GitHubabraxas/nextcloud-ldap-put-isadmin

nextcloud-ldap-put-isadmin

Nextcloud 35.0.0 — 被委派的用户管理员可以通过 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,且通常不在该本地组中。

拥有类似 helpdesk 的用户管理权限的恶意行为者,可以禁用、锁定配额或删除真正的 LDAP 提升实例管理员。较新的 PATCH API 会正确拒绝。较旧的 PUT 路径则不会。

ID暂无 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(被委派的用户管理员,而非实例管理员)
产品Nextcloud Server
受影响版本35.0.0(da02f41)官方 nextcloud:35.0.0-apache 加上 user_ldap
认证被委派的用户管理员 vs LDAP 提升的管理员
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1

攻击者能做什么

在 LDAP 站点上,你将某个 LDAP 组提升为实例管理员(occ ldap:promote-group)。这些人是真正的管理员(isAdmin()===true),但他们可能不属于名为 admin 的本地 Nextcloud 组。

你还将用户设置权限(helpdesk)授予了某人。他们并非完整的实例管理员。

该 helpdesk 用户可以:

  • 更改 LDAP 提升管理员的配额(实验环境:PUT 200,PATCH 403)
  • 禁用或删除该管理员(启用/禁用/删除/擦除操作使用相同的 isInGroup 门控)
  • 重置密码,前提是 LDAP 后端允许 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 组设为实例管理员,而不会将这些 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

修复方案

在 PUT/禁用/删除/擦除操作中使用 isAdmin($target),与 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。仅限回环实验环境。不提供任何担保。

下载工具