微信支付曝严重漏洞,可0元支付获取商家商品!——关于微信支付商户端Java SDK XXE漏洞的说明
0x00 漏洞介绍
漏洞描述
该漏洞为微信在java版本中的SDK中提供callback回调功能,用来帮助商家接收异步付款结果,该接口接收XML格式的数据,攻击者可以构造恶意的回调数据(XML格式)来窃取商家服务器上的任何信息,可导致商家服务器被入侵(绕过支付的效果)。一旦漏洞被攻击者利用,攻击者可能通过发送伪造的信息不用花钱就购买商家任意物品。
漏洞级别
【严重】
漏洞影响
在微信支付过程中,商家的服务器需要和微信的服务器进行通讯,我们称之为回调接口。在实际中,微信官方为了简化开发门槛,提供了官方的JAVA和PHP的SDK。很不幸,JAVA SDK在近日曝出有重大安全问题。 因此使用了该SDK的服务器,都可能被黑客攻击,造成远程命令执行,敏感信息窃取等,此漏洞属于高危级别,请尽快修复。
修复方案
1、下载并使用最新的JAVA SDK。https://pay.weixin.qq.com/wiki/doc/api/download/WxPayAPI_JAVA_v3.zip
2、目前厂商已提供补丁修复该漏洞,建议受影响的租户随时关注厂商的下载页以获取最新版本,官方下载链接:https://pay.weixin.qq.com/wiki/doc/api/native_sl.php?chapter=11_1
3、临时方案:使用华为云Web应用防火墙的客户请及时开启WAF防护,开启防护后无需升级补丁即可防御。点击了解华为云Web应用防火墙
0X01漏洞分析
源码讲解
鉴于微信支付官方的github仓库(https://github.com/wxpay/WXPay-SDK-Java)已经删除了,我们就从其他方获取到旧版本的代码,进行对比。 问题出在com.github.wxpay.sdk.WXPayUtil.java文件中,旧代码:
从代码看DocumentBuilder直接parse了外部输入的strXML。 修复后新版本的代码如下:
新版代码中DocumentBuilderFactory多设置了两个属性,其中关闭实体引用和开启安全处理特性。
0X03 XXE漏洞介绍
XXE的全称叫做XML外部实体注入攻击(XML eXternal Entity),它是利用XML允许引用外部实体的特点,将外部实体定义为敏感的文件,系统命令等高危操作,来对目标服务器进行攻击的手段。 XML外部实体的定义和使用的语法:
当然还有一种就是应用外部的DTD,外部的DTD中定义实体
常见攻击手段
窃取服务器文件
发送远程请求
0x02 华为云配套服务
华为云Web应用防火墙
华为云WAF是客户网站和访问者之间一道安全检测卫士,它能够将恶意攻击有效的拦截在客户网站之外。华为云WAF默认支持XXE漏洞攻击的防御拦截。如果有客户来不及修复代码,升级到最新版本,请及时开启WAF防护。
漏洞扫描服务
华为漏洞扫描服务提供了该漏洞的快速一键检测功能,帮助用户检测业务是否受影响。华为云漏洞扫描服务所采用的安全测试用例都是经过精心筛选,对客户的网站和服务器都是没有攻击性。
0x04 参考
- 点赞
- 收藏
- 关注作者
评论(0)