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
11vor 7 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

Write-up: https://abraxaslabs.tech/research/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() ausführt. Benachbarte Zeilen in derselben Region weisen BlockPluginTrait::label() weiterhin 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
CVSSMittel: 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

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

Geschlossen bei diesem Rest: Installation auf 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.

Gleicher Pin-Rest: 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 filtert MarkupInterface nicht auf XSS (@label ist bereits escaped). Ein roher String wird mit der Admin-Tag-Liste gefiltert.

Bereits festgehaltene Fehlannahmen: die aktuelle Zeile als noch roh zu behandeln (sie ist es nicht); zu behaupten, dies sei RCE; eine Live-Drupal-Site als einziges Orakel zu nutzen (das Übriggebliebene sind diese Funktionen); eine Reverse Shell. Theater.

Lab

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

oder

cd lab
./run.sh

Ziel ist ausschließlich http://127.0.0.1:19490. Getreues Gadget der 11.4.8-Funktionen (Kopie des MoveBlockForm-Überbleibsels, FormattableMarkup, ensureMarkupIsSafe, Xss::filter). Keine echte drupal:11.4.8-Seite. Die 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

Die Behebung

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