Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
drupal-move-block-markup — Drupal 11.4.8 – Hoch – Remote – XSS – Move Block: Geschwister-Labels überspringen die @label-Escaping | Kitploit
Tools/GitHubGitHub/abraxas/drupal-move-block-markup
Statische Code-Analyse (SAST)SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstests
GitHubabraxas/drupal-move-block-markup

drupal-move-block-markup

Drupal 11.4.8 – Hoch – Remote – XSS – Move Block: Geschwister-Labels überspringen die @label-Escaping

Repository anzeigen
vor 4 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Abraxas Labs - drupal-move-block-markup

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

drupal-move-block-markup

Klasse: Stored XSS Reichweite: Remote

Drupal core 11.4.8 (61044508) - Drupal

SA-CORE-2026-012 hat die aktuelle Move-Block-Zeile auf t('@label (current)') umgestellt, was Html::escape() verwendet. Benachbarte Zeilen in derselben Region weisen weiterhin BlockPluginTrait::label() direkt #markup in MoveBlockForm zu. Dieses Label ist configuration['label'], ein rohes Textfeld. Renderer::ensureMarkupIsSafe filtert dann einen String mit der Admin-Tag-Liste auf XSS, sodass ein <b> (und andere Admin-Tags) überlebt.

Ein Layout-Builder-Editor, der einen Blocktitel auf HTML setzen kann, erreicht einen anderen Editor oder Admin, der Move auf einem anderen Block in dieser Region öffnet. Stored XSS im Move-Dialog. Kein RCE und kein LPE.

IDnoch keine CVE
KlasseStored XSS
ReichweiteRemote (Layout Builder Block konfigurieren; Opfer öffnet 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
ProduktDrupal core
Betroffen11.4.8 (61044508071749629aaf3380aa85971e94df9e84)
AuthLayout Builder Block konfigurieren. Opfer öffnet Move Block.
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1

Was ein Angreifer tun kann

Schreiber: Benutzer, der Layout-Builder-Blöcke platzieren oder konfigurieren kann (nicht Site-Konfiguration). Opfer: ein anderer LB-Editor oder Admin, der Move auf einem anderen Block in derselben Region öffnet.

PrivilegMethode / SinkArtLab-bewiesen oder abgeleitet
Angreifer-HTML im Move-Dialog in der benachbarten Zeile ausgeben$label['#markup'] = $plugin->label(); dann ensureMarkupIsSafeIntegrität von HTMLLab-bewiesen. Benachbartes HTML ist <b class="lb-sib">DRUPAL-MOVE-BLOCK-MARKUP-WITNESS</b>
Admin-Tag-Markup beibehalten (<b> und der Rest von Xss::getAdminTagList)String #markup wird mit der Admin-Liste XSS-gefiltert, nicht escapedIntegrität von HTMLLab-bewiesen für <b>
Session / Aktionen als der Opfer-Editor im Layout-Builder-UrsprungStored XSS in diesem DialogIntegrität der Opfer-SessionAbgeleitet. Lab endet bei rohem HTML in der benachbarten Zelle
Negativ: aktuelle Zeilet('@label (current)', ...)GeschlossenLab-bewiesen. &lt;em class="lb-cur"&gt;...
Negativ: benachbart über @labelgepatchter Gadget-PfadGeschlossenLab-bewiesen. &lt;b class="lb-sib"&gt;...

Geschlossen bei diesem Überbleibsel: Installation einer Live-Drupal-Site (dieses Lab ist ein Gadget); Diebstahl der Layout-Builder-UI-Session als gemessenes HTTP-Orakel; RCE; LPE. Nicht authentifizierte Besucher können Move Block nicht öffnen.

Gleiches Pin-Überbleibsel: AttributeXss HTMX attrs.

Wie ich es gefunden habe

Ich habe Drupal 11.4.8 nach SA-CORE-2026-012 gepinnt. Der Advisory hat den aktuellen Blocktitel geschlossen. MoveBlockForm.php 210-218:

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

BlockPluginTrait::label() gibt configuration['label'] zurück, wenn gesetzt. Renderer::ensureMarkupIsSafe führt keine XSS-Filterung von MarkupInterface durch (@label ist bereits escaped). Ein roher String wird mit der Admin-Tag-Liste gefiltert.

Bereits dokumentierte Irrwege: die aktuelle Zeile als weiterhin roh zu behandeln (ist sie nicht); zu behaupten, dies sei RCE; eine Live-Drupal-Site als einziges Orakel (das Überbleibsel sind diese Funktionen); eine Reverse Shell. Theater.

Lab

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

oder

cd lab
./run.sh

Ziel nur http://127.0.0.1:19490. Getreues Gadget der 11.4.8-Funktionen (Kopie des MoveBlockForm-Überbleibsels, FormattableMarkup, ensureMarkupIsSafe, Xss::filter). Keine Live-drupal:11.4.8-Site. Letzte Zeile verwendet 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

Der Fix

Verwende @label (oder Html::escape) für jede Zeile, nicht nur für den aktuellen Block.

Referenzen

  • github.com/drupal/drupal Tag 11.4.8 (61044508071749629aaf3380aa85971e94df9e84)
  • MoveBlockForm.php · BlockPluginTrait.php
  • In der Nähe gepatcht: SA-CORE-2026-012
  • Gleicher Pin: drupal-htmx-attr
  • CWE-79

Lizenz

GNU Affero GPL v3.0. Siehe LICENSE. Nur Loopback-Lab. Keine Gewährleistung.

Tool herunterladen