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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
nextcloud-webhook-tokenneeded — Nextcloud 35.0.0 — 委任されたWebhooks管理者がwebhook更新のtokenNeeded経由で1時間有効な管理者アプリパスワードを発行可能 | Kitploit
ツール/GitHubGitHub/abraxas/nextcloud-webhook-tokenneeded
認証と認可特権昇格ID管理脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテストラボと実践

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
GitHubabraxas/nextcloud-webhook-tokenneeded

nextcloud-webhook-tokenneeded

Nextcloud 35.0.0 — 委任されたWebhooks管理者がwebhook更新のtokenNeeded経由で1時間有効な管理者アプリパスワードを発行可能

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

Abraxas Labs - nextcloud-webhook-tokenneeded

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  nextcloud-webhook-tokenneeded

nextcloud-webhook-tokenneeded

Nextcloud Server 35.0.0 - Nextcloud GmbH

WebhooksController::create() は、呼び出し元が完全なインスタンス管理者でない限り tokenNeeded を null にします。update() はそうしません。委任された Webhooks 設定管理者(admin グループに属さない)は、既存の webhook に tokenNeeded.user_ids: ["admin"] を保存でき、イベント発火時にその uid に対して1時間有効なスコープなしの PERMANENT_TOKEN アプリパスワードを受け取ります。

webhook の管理のみを信頼されていた悪意ある人物が、1時間のあいだ admin(または指定した任意のユーザー)としてログインし、2FA を回避して、その人物のファイルを読み取りまたは上書きできる。

IDCVE 未採番
CWECWE-863, CWE-269
CVSSHigh: 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
製品Nextcloud Server
影響を受けるバージョン35.0.0 (da02f41) 公式 nextcloud:35.0.0-apache
認証委任された Webhooks 設定管理者 (IDelegatedSettings)
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1 のみ

攻撃者ができること

あなたは誰かに Webhooks 設定の役割を与えました。その人物は admin グループには属していません。それでも Nextcloud は、その人物が既存の webhook を編集できるようにし、次に一致するイベントが発生したとき、サーバーはその人物が列挙した任意の uid(admin を含む)に対する1時間有効なログイン情報をメールで送信します。

そのログイン情報を使えば、以下のことが可能です:

  • その人物のすべてのファイルを開く(webhook が見るはずだったものだけではない)
  • それらのファイルをダウンロードおよび上書きする
  • Files / WebDAV をその人物として使用する
  • 2FA を回避する(これはアプリパスワードであり、パスワードプロンプトではない)

ホスト上に PHP シェルは不要です。完全なインスタンス管理者である必要もありません。アカウントを持たないインターネット上の他人はこれを実行できません。この穴は、あなたがすでに webhook を信頼して任せたスタッフが、あなたが信頼していない人々になりすますことにあります。


発見の経緯

WebhooksController は #[AuthorizedAdminSetting(settings: Admin::class)] です。Admin は IDelegatedSettings を実装しています。これが、Nextcloud が admin ではないグループに設定パネルを委任する仕組みです。

tokenNeeded は、webhook 発火時に指定された uid の認証トークンを添付するようサーバーに要求します。TokenService::createEphemeralToken は password = null で IToken::PERMANENT_TOKEN を発行します。アプリパスワードです。2FA はすでに突破されています。

PR #60543 は create をゲートしました:完全なインスタンス管理者でない限り、tokenNeeded は null にされます。委任ユーザー hooker として tokenNeeded.user_ids: ["admin"] を指定して webhook を作成しました。保存された tokenNeeded は [] でした。create はゲートされています。一瞬、これでパッチが完成したように見えます。

次に、同じボディを /webhooks/{id} に POST しました。保存された user_ids は ['admin'] でした。update() は if をコピーしていませんでした。

hooker としてファイルを PUT して NodeCreatedEvent を発火させます。Cron が WebhookCall を実行します。キャッチャーの JSON に authentication.user_ids.admin.token があります。管理者のプライベート証人ファイルに対する Bearer GET が 200、X-User-Id: admin を返しました。

これを何も学ばずに失敗させる方法:update が 403(コントローラーはすでに create と一致);create がすでにトークンを発行している(#60543 がビルドに含まれていない);キャッチャーで authentication が空(cron が発行しなかった);ExApp ヘッダーパス(ラボユーザーは委任された hooker)。


ラボ

cd lab
./run.sh

ターゲットは http://127.0.0.1:18320(Nextcloud)と :18321(キャッチャー)のみ。

SUCCESS NEXTCLOUD-WEBHOOK-TOKENNEEDED who=delegated-webhook-admin uid=admin NEXTCLOUD-WEBHOOK-TOKENNEEDED-WITNESS
  • lab/docker-compose.yml
  • lab/run.sh
  • lab/hook/Dockerfile

修正

create の isAdmin null 化を update() にコピーしてください。それがリリースされるまで、Webhooks 設定を非管理者グループに委任しないでください。


参考資料

  • github.com/nextcloud/server タグ v35.0.0 (da02f41)
  • 関連する create のみの修正:nextcloud/server#60543
  • Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null

ライセンス

GNU Affero GPL v3.0。LICENSE を参照。ループバックラボのみ。無保証。

ツールをダウンロード