Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
nextcloud-ldap-put-isadmin — Nextcloud 35.0.0 — 委任されたユーザー管理者が、PATCH では正しく拒否される LDAP 昇格管理者を PUT で編集できる | Kitploit
ツール/GitHubGitHub/abraxas/nextcloud-ldap-put-isadmin
認証と認可特権昇格脆弱性分析ウェブアプリケーション悪用ウェブセキュリティペネトレーションテストラボと実践
GitHubabraxas/nextcloud-ldap-put-isadmin

nextcloud-ldap-put-isadmin

Nextcloud 35.0.0 — 委任されたユーザー管理者が、PATCH では正しく拒否される LDAP 昇格管理者を PUT で編集できる

リポジトリを見る
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} では、委任された Users 管理者が対象ユーザーを編集できる。ただし、その対象がローカルグループ admin に属している場合を除く。同じパスへの PATCH は正しく isAdmin() を使用する。LDAP で昇格された管理者は isAdmin()===true であり、多くの場合そのローカルグループには属していない。

ヘルプデスク相当の Users 権限を持つ悪意ある人物が、実際に LDAP で昇格されたインスタンス管理者を無効化したり、クォータロックしたり、削除したりできる。新しい PATCH API は正しく拒否する。古い 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 (委任された 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) だが、ローカルの Nextcloud グループ admin には属していない可能性がある。

また、誰かに Users 設定の権限 (ヘルプデスク) を付与している。そのユーザーは完全なインスタンス管理者ではない。

そのヘルプデスクユーザーは次のことができる:

  • LDAP で昇格された管理者のクォータを変更する (ラボ: PUT 200、PATCH 403)
  • その管理者を無効化または削除する (enable/disable/delete/wipe で同じ isInGroup ゲート)
  • LDAP バックエンドが canChangePassword() を許可している場合にパスワードをリセットする (多くの場合 false。これに依存しないこと)

ローカルの admin グループに実際に属しているユーザーに対してはこれらを行えない。LDAP で昇格された管理者がいないサイトではこれらを行えない。より安全な PATCH API はすでにこの違いを認識している。


発見の経緯

プロビジョニングには同じユーザーに対する 2 つの編集経路がある。UsersController::editUser は PUT。editUserMultiField は PATCH。同じファイル内の隣接するメソッド。「この人物は管理者か」に対して 2 つの異なる答えを返す。

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 のみ (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/disable/delete/wipe で、PATCH がすでに行っているのと同じように isAdmin($target) を使用する。


参考資料

  • 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 を参照。ループバックラボのみ。無保証。

ツールをダウンロード