验证Joomla SP Page Builder中的CVE-2026-48908,通过未授权的图标上传导致PHP代码执行。包含auditd/PCAP证据、事件时间线和SOC检测建议,用于防御性研究。
针对 Joomla SP Page Builder 组件中 CVE-2026-48908 的实验室验证,侧重于技术证据、事件重建和防御性检测机会。
本仓库记录了一次受控测试,其中 SP Page Builder 的 asset.uploadCustomIcon 端点接受了上传的图标压缩包,导致在 Joomla 媒体目录下写入了 PHP 构件。通过 HTTP 调用上传的 PHP 文件,以 Web 服务器进程用户的身份执行了命令。由此产生的 HTTP、文件、进程、认证和网络活动,通过 Apache 容器日志、Linux auditd、tcpdump、Docker 遥测、文件变更轮询以及 Windows 主机截图进行了捕获。
[!IMPORTANT] 本仓库仅包含报告和截图。攻击性漏洞利用代码、载荷源码、原始 PCAP 文件和原始主机证据包均有意不予收录。本材料旨在用于漏洞验证、SOC 工程、检测规则开发、事件响应准备和授权研究。
两份报告均包含完整的测试方法论、证据摘录、事件时间线、文件变更证据、网络指标、缓解措施指南、审计建议和示例 SIEM 规则。
.
├── README.md
├── SHA256SUMS.txt
├── reports/
│ ├── CVE-2026-48908_SP_Page_Builder_detection_EN.pdf
│ └── CVE-2026-48908_SP_Page_Builder_detection_PL.pdf
└── screenshots/
├── 01_poc_upload_and_code_execution.png
├── 02_http_whoami_www_data.png
├── 03_tcp_callback_ncat.png
├── 04_reverse_shell_session.png
└── 05_root_access_and_su_failure_redacted.png
本仓库不包含漏洞利用源码、载荷源码、原始 PCAP、原始 Docker 证据包或 DOCX 源文件。
| 角色 | 系统 |
|---|---|
| 受害主机 | Ubuntu 24.04.4 LTS,内核 6.17.0-35-generic,Docker Engine 29.5.3 |
| 目标应用 | Joomla 5.4.7、PHP 8.3.32、Apache HTTP Server,镜像 joomla:5-php8.3-apache |
| 组件 | JoomShaper SP Page Builder |
| 容器 | joomla5-builders |
| 攻击者工作站 | Microsoft Windows 11 Home 10.0.26200 |
| Joomla 服务 | http://172.20.10.3:8080 |
| Windows 测试地址 | 172.20.10.2 |
| 容器地址 | 172.21.0.3 |
| 测试日期 | 2026 年 7 月 9 日 |
Joomla Web 根目录 /var/www/html 由 Docker 卷 joomla5-builders_joomla_data 提供支撑。这对检测很重要:docker diff 无法提供卷内文件变更的详细可见性,因此文件监控必须依赖卷感知的文件列表和主机端监控指导。
测试在隔离且经授权的实验环境中进行。验证覆盖以下流程:
asset.uploadCustomIcon 端点接受了上传的图标压缩包。/media/com_sppagebuilder/assets/iconfont/ 下创建了新的目录和文件。.PHP 扩展名 PHP 处理方式的 .htaccess 文件。/root 以及使用 su - 切换用户的尝试均失败。报告有意记录证据和检测逻辑,但不分发可复用的漏洞利用或载荷实现。
实验室测试确认了:
asset.uploadCustomIcon 端点进行未授权上传;.htaccess 构件;www-data 身份建立的交互式反向 Shell 会话;容器内的有效身份为:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
失败的提权尝试可见于:
cd root
bash: cd: root: Permission denied
su -
Password:
su: Authentication failure
公开 PoC 测试了多种扩展名变体,并确认在实验室环境中,混合大小写 PHP 扩展名与 .htaccess 的组合可能导致代码执行。

一次受控的 HTTP 请求执行了 whoami,浏览器显示了有效的进程用户。

在交互式测试之前,使用了一种更安全的单消息回调,以确认从目标环境到 Windows 主机 TCP 端口 4444 的出站连接。

交互式会话确认执行身份为 www-data,操作系统为 Linux,工作目录位于 Joomla SP Page Builder 媒体路径下。

访问 /root 和使用 su - 认证的尝试均失败。截图经过脱敏处理,以避免公开测试密码。

完整时间线见两份 PDF 报告。最重要的事件如下:
| UTC | 事件 |
|---|---|
| 19:33:56 | Linux audit、tcpdump、Docker 事件和文件变更轮询启动 |
| 19:34:23 | 连续 POST 请求发送至 /index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon |
| 19:34:23.291 | 携带受控算术命令的 GET 请求访问上传的 .PHP 文件 |
| 19:34:23.329 | 携带受控算术命令的 GET 请求访问上传的 .pHp 文件 |
| 19:34:23.361 | 携带受控算术命令的 GET 请求访问上传的 .Php 文件 |
| 19:34:23.398 | 携带受控算术命令的 GET 请求访问最终的 .PHP 构件 |
| 19:34:23.411 | 公开 PoC 通过上传的 PHP 构件执行 id 并收到 HTTP 200 |
| 19:35:05 | 手动 whoami 请求返回 www-data |
| 19:35:27 | 到 172.20.10.2:4444 的一次性 TCP 回调成功 |
| 19:35:59 | HTTP 请求发起到 172.20.10.2:4444 的反向 TCP 连接 |
| 19:36:22-19:36:31 | whoami、uname、id 和 pwd 确认了执行上下文 |
| 19:37:13 | cd root 返回 Permission denied |
| 19:37:21-19:37:28 | su - 尝试失败,提示 Authentication failure |
| 19:39:25 | 停止审计收集并打包构件 |
受害主机收集了:
auditd 记录的 execve 事件;tcpdump 进行的数据包捕获;测试还发现了一个监控局限性:由于 /var/www/html 由 Docker 卷支撑,docker diff 无法显示 /var/www/html/media/com_sppagebuilder/assets/iconfont/ 下的详细文件创建情况。因此,文件完整性监控应覆盖支撑该卷的真实主机路径。
Windows 主机证据有意仅限于与报告相关的截图:
whoami 的浏览器输出;/root 和 su - 尝试(密码已脱敏)。监控 HTTP、反向代理、WAF 或网络遥测中的以下组合:
POST /index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon
User-Agent contains: sppb-rce-poc
Status: 200, 201, or 204
在生产环境中,不要仅依赖公开 PoC 的 User-Agent。端点和异常上传模式是比 User-Agent 值更稳定的指标。
.htaccess监控匹配以下条件的新增或修改文件遥测:
/media/com_sppagebuilder/assets/iconfont/*/fonts/*.php
/media/com_sppagebuilder/assets/iconfont/*/fonts/*.PHP
/media/com_sppagebuilder/assets/iconfont/*/fonts/*.pHp
/media/com_sppagebuilder/assets/iconfont/*/fonts/*.Php
/media/com_sppagebuilder/assets/iconfont/*/fonts/.htaccess
在媒体上传目录中出现包含 AddType application/x-httpd-php .PHP 的 .htaccess 是高价值指标。
将上传活动与随后对类似路径的 HTTP 请求进行关联:
/media/com_sppagebuilder/assets/iconfont/*/fonts/*
当请求针对类 PHP 扩展名且包含 t= 和 c= 等参数时,置信度更高。
高价值进程指标包括:
user: www-data, apache, or nginx
process: bash, sh, dash, or php
command line contains: /dev/tcp, bash -i, redirection operators, or unusual interpreter execution
当 Web 服务器进程启动的 Shell 或解释器向工作站或异常目标端口发起出站连接时发出告警。实验室事件使用 TCP 端口 4444,但生产环境的检测不应依赖单一端口。
测试产生了失败的 su - 尝试。监控 unix_chkpwd 等认证辅助程序、对 /var/log/btmp 的写入,以及 Web 服务账户被入侵后的交互式命令。
当检测到 HTTP 上传指标时,SOC 应立即将其与以下信息关联:
/media/com_sppagebuilder/assets/iconfont/ 下的新目录;.htaccess 文件;t= 和 c= 等命令类查询参数;whoami、id、uname、hostname、pwd、ip、ifconfig、netstat 或 ss 等信息收集命令;单个上传事件本身并不总是充分条件。最强的告警是在同一短时间窗口内组合了上传、文件创建、文件访问、进程执行和出站网络遥测。
/media/com_sppagebuilder/assets/iconfont/ 以及更广泛的 Joomla 媒体目录中是否存在 PHP 类文件和 .htaccess 构件。.htaccess、.phtml、.phar、压缩包或可执行构件。asset.uploadCustomIcon 端点的访问。docker diff 进行 Web 根目录监控。www-data 身份执行代码;未确认可提权至 root。本材料仅供防御性安全研究、漏洞管理、检测工程、事件响应准备和授权测试使用。未经明确许可,请勿将其用于任何系统。