Jenderal92/CVE-2026-48908
GitHub: Jenderal92/CVE-2026-48908
针对 Joomla SP Page Builder 未授权文件上传导致的 RCE 漏洞(CVE-2026-48908)的多线程自动化漏洞验证与利用工具。
Stars: 2 | Forks: 0
# CVE-2026-48908 — SP Page Builder (Joomla) 未授权 RCE 漏洞利用
## 📋 漏洞概述
| 属性 | 值 |
|--------------------|-----------------------------------------------------------------|
| **CVE ID** | CVE-2026-48908 |
| **严重程度** | 严重 |
| **CVSS v4 Score** | 10.0 |
| **弱点** | CWE-284 (不当访问控制) → 未授权文件上传 |
| **组件** | 用于 Joomla 的 SP Page Builder (`com_sppagebuilder`) |
| **受影响版本** | 1.0.0 – 6.6.1 |
| **修复版本** | 6.6.2 |
| **所需权限** | 无(身份验证前) |
| **用户交互** | 无 |
| **攻击向量** | 网络 |
| **影响** | 完全控制系统 (RCE) |
## 🔍 描述
SP Page Builder 暴露了控制器任务 **`asset.uploadCustomIcon`** 来处理自定义图标字体包的上传:
```
index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon
```
在受影响的版本中,可以在**无需身份验证**和**无需有效 CSRF token** 的情况下访问此任务。它接受一个 ZIP 压缩包(multipart 字段 `custom_icon`),并将其内容**解压**到 web 根目录下可公开访问的目录中:
```
/media/com_sppagebuilder/assets/iconfont//
```
由于该 endpoint 可在身份验证前访问,且解压后的文件位于可浏览的位置,攻击者可以上传任意文件,并通过 HTTP 请求它们来执行 PHP 代码。
### 代码执行技术
此漏洞利用通过以下方式绕过了常见的服务器端文件名过滤:
1. **区分大小写的黑名单绕过** – 过滤器会拒绝小写的 `.php`、`.phtml`、`.phar` 等,但**不会统一大小写**,因此 `.PHP` 和其他混合大小写变体会被接受。
2. **有效的图标字体结构** – 漏洞利用程序打包了有效的 `selection.json`、`style.css` 和 `fonts/.ttf`,从而确保上传被接受。
3. **Webshell 部署** – 在解压后的压缩包中,一个 PHP web shell 会被写入 `fonts/shxt.{ext}`。
## 📦 特性
- **多线程**扫描和漏洞利用(可配置线程数)
- **自动 URL 修复** – 自动追加所需的 endpoint 路径
- **双扩展名支持** – 尝试 `.php` 和 `.PHP` 变体
- **Webshell 验证** – 检查上传的 webshell 是否可访问且功能正常
- **结果记录** – 将成功的 webshell URL 保存到 `result.txt`
- **进度跟踪** – 显示实时状态和统计信息
## 🚀 用法
### 前置条件
- Python **2.7**
- `requests` 库
### 安装说明
```
git clone https://github.com/Jenderal92/CVE-2026-48908
cd CVE-2026-48908
pip install requests
```
基本用法
```
python2 CVE-2026-48908.py list.txt
```
自定义线程数
```
python2 CVE-2026-48908.py list.txt 20
```
输入文件格式
list.txt 应每行包含一个目标 URL:
```
https://example.com
http://target-site.com/joomla
https://192.168.1.100/joomla
```
输出
· 成功的 webshell URL 将被追加到 result.txt
· 每一行包含上传的 PHP webshell 的完整 URL
⚙️ 工作原理
1. URL 修复 – 如果尚未存在,则自动追加 index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon。
2. ZIP 构建 – 创建一个有效的图标字体 ZIP 压缩包,其中包含位于 fonts/shxt.{ext} 的 PHP webshell。
3. 上传 – 通过 multipart POST 将 ZIP 发送到受影响的 endpoint。
4. 验证 – 检查 webshell 是否可访问并返回预期输出(存在 "Upload")。
5. 日志记录 – 将成功的 webshell URL 保存到 result.txt。
Shell Payload
内置的 shell 提供:
· 服务器环境信息 (php_uname())
· 文件上传接口,用于上传其他文件
· 成功/失败反馈
🛡️ 缓解措施
· 将 SP Page Builder 升级到 6.6.2 或更高版本。
· 审计上传目录中是否存在未经授权的文件:
· /media/com_sppagebuilder/assets/iconfont/
· 删除在这些目录中发现的任何意外 PHP 文件。
· 检查服务器日志中是否有发往 asset.uploadCustomIcon 的可疑 POST 请求。
· 部署 Web Application Firewall (WAF) 来阻止此类请求。
⚠️ 免责声明
此工具仅供教育和授权的安全测试目的使用。
未经授权访问计算机系统是违法行为。作者对任何滥用此工具或由此造成的损害不承担任何责任。请仅在被您拥有或获得明确书面测试许可的系统上使用此工具。
📚 参考
· [Censys 安全公告](https://censys.com/advisory/cve-2026-48908/)
· [NVD 条目](https://nvd.nist.gov/vuln/detail/CVE-2026-48908)
· [JoomShaper 安全公告](https://www.joomshaper.com/)
📄 许可证
本项目仅供教育和研究目的使用。风险自负。
标签:CISA项目, Joomla, 编程工具, 远程代码执行, 逆向工具