🎯 CVE-2026-56290 深度技术分析:漏洞根因 · PoC/EXP · 检测指纹
CVE-2026-56290 深度技术分析
摘要:CVE-2026-56290 是影响 Joomla 扩展 Page Builder CK(组件标识 com_pagebuilderck)的严重漏洞,CVSS 评分为 9.8(CRITICAL)。该漏洞源于 fonts.save 任务存在不当访问控制(Improper Access Control),允许未authenticated攻击者通过任意文件上传功能将可执行文件写入服务器,最终实现远程代码执行(RCE)。该漏洞已被 CISA KEV 收录,表明已出现实际利用行为。
📌 漏洞概述
- CVE 编号:CVE-2026-56290
- CVSS 评分:9.8(Critical)
- 组件:Joomla 扩展 Page Builder CK(
com_pagebuilderck) - 受影响版本:低于 3.6.0 的所有版本
- 漏洞类型:不当访问控制(CWE-284)导致的任意文件上传(CWE-434)
- 利用位置:前端
fonts.save任务
该漏洞允许未认证的远程攻击者绕过权限检查,向服务器上传任意文件(包括 PHP Web Shell),从而在目标主机上执行任意命令。由于无需任何认证,攻击门槛极低,配合公开的 PoC 扫描工具,可在互联网上大规模批量利用。
🔬 漏洞根因分析
Page Builder CK 是 Joomla 上流行的页面构建组件,其后台功能中包含字体管理模块。该模块通过 AJAX 处理字体上传请求,核心漏洞存在于 fonts.save 任务的访问控制缺失。在组件设计时,开发者可能错误地认为该任务仅能由已登录后台的管理员调用,但实际实现中并没有对请求进行有效的身份验证或权限校验(例如调用 JSession::checkToken() 或 $user->authorise())。这导致任何未认证的 HTTP 请求都可以直接触发该任务。
进一步分析 PoC 代码可知,攻击者构造特殊请求,调用 fonts.save 并从远程 URL 拉取恶意负载,最终将文件写入 media/com_pagebuilderck/gfonts/fbi.php。这一行为揭示了第二个根因:组件在保存字体文件时,既没有对文件扩展名进行白名单校验,也没有重命名文件为安全的随机名称,而是直接将攻击者控制的文件内容写入可公开访问的 media 目录下。由于 media 目录中的 PHP 文件可被 Web 服务器直接解析,攻击者上传的 .php 文件即可被远程执行。
从攻击链来看,该漏洞属于“不当访问控制 + 任意文件上传”的组合漏洞:缺少访问控制是前提,文件上传校验缺失是关键。攻击者首先利用可匿名访问的 fonts.save 接口,其次通过该接口的下载/保存逻辑,将远程服务器上的恶意文件内容写入目标路径。PoC 中检测的 Fbi Shell 即为上传后 PHP 成功解析的指纹,证明漏洞可被稳定利用。
💥 影响与危害
- 远程代码执行(RCE):攻击者上传包含恶意 PHP 代码的 Web Shell,并在服务器上执行任意系统命令,完全控制 Web 服务器。
- 未授权访问:因利用过程无需任何用户会话或凭据,任何能访问目标站点的外部攻击者都可发起攻击。
- 批量扫描风险:公开的 PoC 支持单目标和多线程批量扫描,攻击者可扫描全网暴露的 Joomla 站点,自动上传 Shell 并收集“命中”列表,导致大规模站点被入侵。
- 数据泄露与勒索:一旦获得服务器权限,攻击者可窃取数据库、用户凭证、商业敏感数据,甚至植入勒索软件。
- 供应链与横向移动:受损的 Joomla 服务器可能被用作跳板,进一步攻击内网其他系统。
- CISA KEV 收录:该漏洞已被证实存在在野利用,属于高优先级修复对象。
🛡️ 修复与缓解
补丁版本:Page Builder CK 3.6.0 已修复此漏洞。所有使用低于 3.6.0 版本的站点必须立即升级到 3.6.0 或更高版本。
- 立即升级:通过 Joomla 后台扩展管理器或官方渠道更新 Page Builder CK 至最新版本,并确认版本号 ≥ 3.6.0。
- 临时缓解:在补丁安装前,可使用 Web 应用防火墙(WAF)规则拦截包含
fonts.save且无合法会话的请求;或通过服务器配置禁止media/com_pagebuilderck/gfonts/目录执行 PHP(例如设置php_admin_flag engine off或 Nginxlocation ~ \.php$ { deny all; })。 - 网站体检:立即检查
media/com_pagebuilderck/gfonts/下是否有可疑 PHP 文件(如fbi.php、shell.php等),同时审计 Web 服务器访问日志中是否存在异常fonts.save请求。 - 应急处置:若发现被上传恶意文件,应备份证据、隔离受影响服务器,清除恶意文件并排查攻击者可能留下的其他后门(如新增用户、cron 后门等)。
- 遵循 CISA 指导:按照 CISA BOD 26-04 要求,优先修补暴露在互联网的资产,并在修复后持续监控新出现的利用活动。
🧪 PoC 复现
从 GitHub 公开仓库抓取的实际 PoC 代码(仓库)。
📋 代码元数据语言md来源sagsooz/PageBuilderCK-CVE-2026-56290-Exploit针对性✅ 已验证与漏洞相关(代码含 CVE 引用)依赖见代码注释/README用法详见代码注释中的使用说明
# Page Builder CK — fonts.save RCE Probe CVE-2026-56290
**BlackHat Team** proof-of-concept scanner for the Joomla **Page Builder CK** `fonts.save` vulnerability.
**POC CVE-2026-56290**
>**Author:** [@mrzblackhat](https://t.me/mrzblackhat)
>**Team:** BlackHat Team
>
**Credits:** Peyman Siyahi · MR.PERSIA
---
## Overview
This tool probes Joomla sites running the vulnerable **com_pagebuilderck** component. It abuses the `fonts.save` task to pull a remote payload and writes a web shell under:
```
media/com_pagebuilderck/gfonts/fbi.php
```
RCE is confirmed when the uploaded shell responds with an HTML `<title>` containing **`Fbi Shell`**.
Supports **single-target** and **mass** scanning with threaded workers and instant hit saving.
---
## Requirements
- Python **3.10+**
- `requests`
- `urllib3`
```bash
pip install requests urllib3
```
---
## Usage
### Single target
```bash
python3 poc.py --url https://example.com --insecure
```
### Mass scan
```bash
python3 poc.py --mass targets.txt --insecure --threads 20 --timeout 12
```
`targets.txt` — one URL per line. Lines after `#` are ignored.
### Options
|
Flag |Description ||------|-------------||`--url URL` |Scan a single target ||`--mass FILE` |Scan targets from a file ||`--insecure` |Skip TLS certificate verification ||`--threads N` |Worker threads for mass mode (default: `20`) ||`--timeout N` |HTTP timeout in seconds (default: `12`) ||`--output FILE` |Save confirmed shell URLs (default: `hits.txt`) |
---
## Output
- **HIT** — shell uploaded and PHP executed;title contains `Fbi Shell`
- **PART** — file written but PHP not executed
- **MISS** — exploit not confirmed
Confirmed shell URLs are appended to the output file immediately.
---
## Project files
|File |Description ||------|-------------||`poc.py` |Obfuscated release build (run this) ||`hits.txt` |Default output for confirmed shells |
### Rebuild after editing source
```bash
python3 _build_obf.py
```
---
## How it works
1. Fetch homepage and extract Joomla CSRF token
2. `POST` to `index.php` with `option=com_pagebuilderck&task=fonts.save`
3. Remote `font.css` callback triggers shell write to `gfonts/fbi.php`
4. `GET` the shell path and verify `<title>` contains `Fbi Shell`
---
## Disclaimer
This tool is provided for **authorized security research and penetration testing only**.
Unauthorized access to computer systems is illegal. The authors and **BlackHat Team** are not responsible for misuse. Only test systems you own or have explicit written permission to assess.
---
## Contact
- **Telegram:** [https://t.me/mrzblackhat](https://t.me/mrzblackhat)
- **Handle:** `@mrzblackhat`
**BlackHat Team** — Peyman Siyahi · MR.PERSIA
---
*Original research and tooling by [@mrzblackhat](https://t.me/mrzblackhat). Do not redistribute modified copies without attribution.*⚔️ EXP 利用代码
截至分析时,Exploit-DB 未收录该 CVE 的公开利用代码。可利用上述 PoC 进行验证,或关注 Exploit-DB 更新。
🕵️ 检测指纹
当前规则库未收录针对该 CVE 的专用检测规则。建议:
- 根据漏洞根因编写 Nuclei 检测模板
- 在 WAF/IDS 中配置针对漏洞特征的规则
- 关注漏洞指纹库更新
🤖 本文由漏洞情报系统自动聚合生成 · 2026-08-11 05:06 · 数据源: NVD/GitHub-Advisory/OSV/CISA-KEV/Exploit-DB/PoC-in-GitHub + 检测规则库