Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
drupal-move-block-markup — Drupal 11.4.8 - 高危 - 远程 - XSS - 移动区块同级标签跳过 @label 转义 | Kitploit
工具/GitHubGitHub/abraxas/drupal-move-block-markup
静态代码分析 (SAST)漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试
GitHubabraxas/drupal-move-block-markup

drupal-move-block-markup

Drupal 11.4.8 - 高危 - 远程 - XSS - 移动区块同级标签跳过 @label 转义

查看仓库
4天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

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 核心 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。

ID暂无 CVE
类别存储型 XSS
可达性远程(Layout Builder 区块配置;受害者打开 Move Block)
CWECWE-79
CVSS中危:5.4 CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
产品Drupal 核心
受影响版本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 的同级已修补的 gadget 路径已关闭实验验证。&lt;b class="lb-sib"&gt;...

在此遗留问题上已关闭:实时 Drupal 站点安装(本实验为 gadget);作为可测量 HTTP oracle 的 Layout Builder UI 会话窃取;RCE;LPE。未认证访客无法打开 Move Block。

相同 pin 遗留问题: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 站点作为唯一 oracle(遗留问题就是这些函数);反向 shell。作秀。

实验环境

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

或

cd lab
./run.sh

目标仅为 http://127.0.0.1:19490。11.4.8 函数的忠实 gadget(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
  • 相同 pin:drupal-htmx-attr
  • CWE-79

许可证

GNU Affero GPL v3.0。参见 LICENSE。仅限回环实验环境。无担保。

下载工具