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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
drupal-ckeditor-fileisimage — Drupal 11.4.8 - 高 - リモート - アップロード - CKEditor 5 の画像アップロードが依然として FileIsImage をスキップする | Kitploit
ツール/GitHubGitHub/abraxas/drupal-ckeditor-fileisimage
脆弱性分析エクスプロイトウェブアプリケーション悪用セキュリティ仮想化ウェブセキュリティペネトレーションテストラボと実践
GitHubabraxas/drupal-ckeditor-fileisimage

drupal-ckeditor-fileisimage

Drupal 11.4.8 - 高 - リモート - アップロード - CKEditor 5 の画像アップロードが依然として FileIsImage をスキップする

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - drupal-ckeditor-fileisimage

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  drupal-ckeditor-fileisimage

drupal-ckeditor-fileisimage

クラス: 無制限アップロード / 格納型 XSS 到達性: リモート

Drupal core 11.4.8 (61044508) - Drupal

SA-CORE-2026-009 は JSON:API および REST の画像フィールドに FileIsImage を追加した。CKEditor5ImageController::getImageUploadValidators は依然として FileExtension、FileSizeLimit、FileImageDimensions のみを返す。FileImageDimensions はファイルが有効な画像でない場合、違反なしで返る。残るチェックはファイル名拡張子だけである。

CKEditor 5 の画像アップロードが有効なテキストフォーマットのユーザーは、x.png という名前の非画像バイト列を /ckeditor5/upload-image/{editor} に POST し、201 と公開ファイル URL を得ることができる。

IDCVE 未採番
クラス無制限アップロード / スニッフィングされた場合の格納型 XSS
到達性リモート (認証済みフォーマットユーザー)
CWECWE-434, CWE-79
CVSSMedium: 5.4 CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
製品Drupal core
影響を受けるバージョン11.4.8 (61044508071749629aaf3380aa85971e94df9e84)
認証CKEditor 5 の画像アップロードが有効なテキストフォーマットの認証済みユーザー (Standard では basic_html / full_html)
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1 のみ

攻撃者ができること

エディタで image_upload.status が true のフォーマットを使用できるアカウントが必要である。Standard では basic_html と full_html が該当する。アカウントを持たない完全な部外者はこのルートに到達できない (_entity_access: editor.use と CSRF)。

権限メソッド / シンク種別ラボ実証または推測
非画像バイト列を sites/default/files/inline-images/ 配下の公開 .png に書き込むPOST /ckeditor5/upload-image/{editor} multipart upload完全性ラボ実証済み。x.png は 201 と url=/sites/default/files/inline-images/x.png を返した
公開ファイル URL でそのバイト列を読み戻すJSON の url に対する GET偵察ラボ実証済み。200、49 バイト、ボディに DRUPAL-CKEDITOR-FILEISIMAGE-WITNESS を含む
Web サーバーまたはブラウザがファイルを HTML/JS としてスニッフィングした場合、訪問者に格納型 XSS同じ公開 URL、Content-Type は image ではない完全性 (訪問者のオリジン)推測。このラボでは Apache MIME を変更していない。Drupal はバイト列を保存した。
同じルートで本物の画像をアップロードするコントロール control.png 1x1 PNG意図された動作ラボ実証済み。201

この残存部分でクローズ済み: .php 経由の PHP/RCE (ラボ実証済み 422 FileExtension)、未認証アップロード、JSON:API/REST ImageItem (これらのパスは既に FileIsImage を追加している)、LPE、デフォルトの画像拡張子許可リスト上のシェル。

発見の経緯

2026 年の SA-CORE の波の後、Drupal 11.4.8 にピン留めした。JSON:API は既に欠落している制約を追加している:

if (\is_a($field_definition->getItemDefinition()->getClass(), ImageItem::class, TRUE) && !array_key_exists('FileIsImage', $validators)) {
  $validators['FileIsImage'] = [];
}

REST の FileUploadResource.php も同様である。CKEditor 5 はファイル名 + サイズ + 寸法のまま残された:

return [
  'FileExtension' => [
    'extensions' => implode(' ', $allowed_extensions),
  ],
  'FileSizeLimit' => [
    'fileLimit' => $max_filesize,
  ],
  'FileImageDimensions' => [
    'maxDimensions' => $max_dimensions,
  ],
];

FileImageDimensionsConstraintValidator はファイルが有効な画像でない場合、違反なしで返る。ハブの drupal:11.4 は 11.4.9 にフロートした。このピンは composer で正確に drupal/recommended-project:11.4.8 である。11.4.0 で Standard から Article が削除されたため、このイメージはインストール後に core/recipes/article_content_type を適用し、/node/add/article が CKEditor 5 をロードするようにしている。

既に記録済みの誤った道: FileImageDimensions を MIME チェックとして扱うこと (これは有効な画像に対する寸法であり、それ以外ではノーオペレーションである)、デフォルトの許可リスト上で PHP シェルを主張すること (.php は 422)、フローティングのハブタグを使用して 11.4.9 が立ち上がるのを見ること。茶番: リバースシェル。オラクルは偽の x.png に対する 201 と、同じバイト列を x.php と名付けた場合の 422 である。

同じピンの残存部分: oEmbed second-hop SSRF。

ラボ

python3 drupal-ckeditor-fileisimage-Abraxas-Labs.py

または

cd lab
./run.sh

ターゲットは http://127.0.0.1:19500 のみ。php:8.4-apache-trixie 上のライブ Drupal 11.4.8 Standard、SQLite。

SUCCESS drupal-ckeditor-fileisimage png-http=201 php-http=422 control-png-http=201 editor=basic_html stored-http=200 stored-has-witness=yes url=/sites/default/files/inline-images/x.png DRUPAL-CKEDITOR-FILEISIMAGE-WITNESS

修正

CKEditor5ImageController::getImageUploadValidators に 'FileIsImage' => [] を追加する。.php が 422 のままになるよう FileExtension は維持する。Media Library の画像メディアタイプは、同じ制約を継承するよう、汎用の FileItem ではなく ImageItem を使用すべきである。

参考資料

  • github.com/drupal/drupal タグ 11.4.8 (61044508071749629aaf3380aa85971e94df9e84)
  • CKEditor5ImageController.php
  • 近傍のパッチ済み (このアップロードではない): SA-CORE-2026-009
  • 同じタグ: drupal-oembed-ssrf
  • CWE-434 · CWE-79

ライセンス

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

ツールをダウンロード