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 で編集できる

リポジトリを見る
248日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Abraxas Labs - nextcloud-ldap-put-isadmin

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  nextcloud-ldap-put-isadmin

解説記事: https://abraxaslabs.tech/research/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 のみです(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
  • lab/docker-compose.yml
  • lab/Dockerfile
  • lab/run.sh
  • lab/ldap/50-seed.ldif
  • lab/fixture.php

修正内容

PATCH がすでに行っているのと同じ方法で、PUT/disable/delete/wipe に対して isAdmin($target) を使用してください。


参考資料

  • github.com/nextcloud/server タグ v35.0.0
  • LDAP promote: occ ldap:promote-group (PR #41650)
  • Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null

ライセンス

GNU Affero GPL v3.0。LICENSE を参照してください。ループバックラボ専用です。保証はありません。

ツールをダウンロード