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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
drupal-move-block-markup — Drupal 11.4.8 - 高 - リモート - XSS - Move Block の兄弟ラベルが @label エスケープをスキップする | Kitploit
ツール/GitHubGitHub/abraxas/drupal-move-block-markup
静的コード分析 (SAST)脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテスト
GitHubabraxas/drupal-move-block-markup

drupal-move-block-markup

Drupal 11.4.8 - 高 - リモート - XSS - Move Block の兄弟ラベルが @label エスケープをスキップする

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - drupal-move-block-markup

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  drupal-move-block-markup

解説記事: https://abraxaslabs.tech/research/drupal-move-block-markup

drupal-move-block-markup

分類: 蓄積型XSS 到達範囲: リモート

Drupal core 11.4.8 (61044508) - Drupal

SA-CORE-2026-012 により、現在の Move Block 行は t('@label (current)') に切り替えられ、これは Html::escape() されます。同じリージョン内の兄弟行は依然として BlockPluginTrait::label() を MoveBlockForm 内の #markup に直接代入しています。そのラベルは configuration['label']、すなわち生のテキストフィールドです。その後 Renderer::ensureMarkupIsSafe が管理者タグリストで文字列をXSSフィルタリングするため、<b>(およびその他の管理者タグ)が生き残ります。

ブロックタイトルをHTMLに設定できる Layout Builder 編集者が、そのリージョン内の別のブロックで Move を開く別の編集者または管理者に到達します。Move ダイアログにおける蓄積型XSSです。RCE でも LPE でもありません。

IDCVE 未割当
分類蓄積型XSS
到達範囲リモート(Layout Builder のブロック設定。被害者が Move Block を開く)
CWECWE-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)
認証Layout Builder のブロック設定。被害者が Move Block を開く。
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1 のみ

攻撃者ができること

書き込み側: Layout Builder のブロックを配置または設定できるユーザー(サイト設定権限ではない)。被害者: 同じリージョン内の別のブロックで Move を開く、別の LB 編集者または管理者。

権限メソッド / シンク種類ラボ実証または推測
Move ダイアログの兄弟行に攻撃者のHTMLを出力する$label['#markup'] = $plugin->label(); の後に ensureMarkupIsSafeHTMLの完全性ラボ実証済み。兄弟HTMLは <b class="lb-sib">DRUPAL-MOVE-BLOCK-MARKUP-WITNESS</b>
管理者タグのマークアップ(<b> および Xss::getAdminTagList の残り)を保持する文字列 #markup はエスケープされず、管理者リストでXSSフィルタリングされるHTMLの完全性<b> についてラボ実証済み
Layout Builder オリジンにおける被害者編集者としてのセッション / 操作そのダイアログにおける蓄積型XSS被害者セッションの完全性推測。ラボは兄弟セル内の生HTMLで止まる
否定: 現在の行t('@label (current)', ...)クローズ済みラボ実証済み。&lt;em class="lb-cur"&gt;...
否定: @label 経由の兄弟パッチ済みガジェット経路クローズ済みラボ実証済み。&lt;b class="lb-sib"&gt;...

この残存項目についてクローズ済み: 稼働中の Drupal サイトインストール(このラボはガジェット);計測されたHTTPオラクルとしての Layout Builder UI セッション窃取;RCE;LPE。未認証の訪問者は Move Block を開けません。

同じピンにおける残存項目: AttributeXss HTMX attrs。

発見の経緯

SA-CORE-2026-012 の後、Drupal 11.4.8 をピン留めしました。アドバイザリは現在のブロックタイトルをクローズしました。MoveBlockForm.php 210-218:

if ($is_current_block) {
  $label['#markup'] = $this->t('@label (current)', ['@label' => $plugin->label()]);
  // ...
}
else {
  $label['#markup'] = $plugin->label();
}

BlockPluginTrait::label() は設定されている場合 configuration['label'] を返します。Renderer::ensureMarkupIsSafe は MarkupInterface を XSS フィルタリングしません(@label はすでにエスケープ済み)。生の文字列は管理者タグリストでフィルタリングされます。

すでに記録済みの誤った方向性:現在の行をまだ生であると扱うこと(そうではない);これを RCE だと主張すること;ライブの Drupal サイトを唯一のオラクルとすること(残っているのはこれらの関数である);リバースシェル。茶番。

ラボ

python3 drupal-move-block-markup-Abraxas-Labs.py

または

cd lab
./run.sh

必ず http://127.0.0.1:19490 のみを対象とすること。11.4.8 の関数群(MoveBlockForm の残骸のコピー、FormattableMarkup、ensureMarkupIsSafe、Xss::filter)を忠実に再現したガジェットである。実際に稼働している drupal:11.4.8 サイトではない。最終行では how=gadget を使用する。

SUCCESS drupal-move-block-markup how=gadget sibling-raw-tag=yes current-escaped=yes patched-sibling-escaped=yes DRUPAL-MOVE-BLOCK-MARKUP-WITNESS

修正

現在のブロックだけでなく、すべての行に @label(または Html::escape)を使用してください。

参考資料

  • github.com/drupal/drupal タグ 11.4.8 (61044508071749629aaf3380aa85971e94df9e84)
  • MoveBlockForm.php · BlockPluginTrait.php
  • 関連する修正済み: SA-CORE-2026-012
  • 同じピン: drupal-htmx-attr
  • CWE-79

ライセンス

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

ツールをダウンロード