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 エスケープをスキップする

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - drupal-move-block-markup

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  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 を参照。ループバックラボのみ。保証なし。

ツールをダウンロード