IPBUF安全漏洞报告
English
CVE-2026-39390 CVSS 5.5 中危

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

披露日期: 2026-04-08

漏洞信息

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

相关标签

存储型XSSCI4MSCodeIgniterCWE-79CVSS-5.5

漏洞概述

CI4MS是基于CodeIgniter 4的CMS系统,其在0.31.4.0之前的版本中存在存储型XSS漏洞。漏洞源于Google Maps iframe设置(cMap字段)的输入过滤机制不完善。尽管系统使用了strip_tags()和正则移除事件处理器,但未过滤srcdoc属性。拥有管理员权限的攻击者可注入包含恶意代码的iframe载荷。当前台未认证访客访问渲染该配置的页面时,载荷将在父页面上下文中执行,导致XSS攻击。

技术细节

该漏洞的核心在于CI4MS对用户输入的HTML过滤逻辑存在盲区。在compInfosPost()方法中,开发者通过strip_tags()函数保留了<iframe>标签,并利用正则表达式on\w+试图移除所有以on开头的JavaScript事件处理器(如onclick, onload)。然而,HTML5的srcdoc属性允许直接在iframe内部指定HTML内容,它并不属于事件处理器,因此成功绕过了正则匹配。攻击者利用管理员权限进入后台,在cMap字段构造<iframe srcdoc="&lt;script&gt;...&lt;/script&gt;">形式的Payload。由于strip_tags()允许iframe标签,且正则不拦截srcdoc,恶意载荷被存入数据库。当前端用户访问包含该配置的页面时,浏览器解析iframe,将srcdoc中的实体编码还原为HTML标签并执行其中的JavaScript,从而在父页面上下文中触发攻击。

攻击链分析

STEP 1
步骤1
攻击者获取CI4MS系统的管理员权限,并登录后台管理面板。
STEP 2
步骤2
攻击者导航到系统设置中的Google Maps配置部分,定位到cMap字段。
STEP 3
步骤3
攻击者输入包含srcdoc属性的恶意iframe Payload。由于过滤机制未拦截srcdoc,Payload被成功保存。
STEP 4
步骤4
系统将未经过滤的恶意代码存储在数据库中,并在前端页面渲染该配置。
STEP 5
步骤5
未授权的前端访客访问受影响的页面,浏览器执行srcdoc中的恶意脚本。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- PoC: Inject this payload into the Google Maps iframe setting (cMap field) --> <iframe srcdoc="&lt;script&gt;alert('XSS by CVE-2026-39390');&lt;/script&gt;"></iframe> <!-- Alternative PoC using img tag for execution --> <iframe srcdoc="&lt;img src=x onerror=alert(1)&gt;"></iframe>

影响范围

CI4MS < 0.31.4.0

防御指南

临时缓解措施
建议立即将系统升级至修复版本0.31.4.0。在无法立即升级的情况下,应严格限制管理员账户的权限范围,避免非授权人员访问系统设置,并考虑暂时禁用Google Maps iframe功能以防止漏洞被利用。

参考链接

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