今天相信很多的朋友,都看到了互联网关于 WxPay SDK的 XXE 漏洞的消息。比如这篇文章:http://seclists.org/fulldisclosure/2018/Jul/3
从上面的文章来看,是利用了 DocumentBuilderFactory 解析xml的时候,未禁用外部实体引起的。关于XXE的利用可以参考这篇文章:https://www.cnblogs.com/miyeah/p/4526088.html
关于漏洞的如何利用:
- 首先需要得知服务提供商每次交易的回调地址
- 构造带有外部实体的xml文件,请求回调地址
- 如果恰好有这个漏洞,那么可能你会得到你想要的东西
关于网上说的,可以0元购买产品,思路可能是需要经过一系列的渗透,拿到服务提供商与微信交易的key(md5key)等信息。自己通过服务提供商下单,然后不支付。再通过伪造微信的异步通知,请求回调地址,使得这笔交易处于支付成功的状态。然后,就可以实现0元购买物品。
从今晚我下载的JavaAPI_SDK看,微信已经修复了这个漏洞。但是,可能很多的商家没有去下载最新的包更新代码,或者没了解到这个消息。可能一些商户在未来的一段时间内,依然存在这个漏洞。按照网上的包来看,感觉有漏洞的版本已经存在已久,一个不太好的想法就是,这个漏洞已经被很多人拿来做了渗透。
0
微信修补的信息:
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=23_5
https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet#C.2FC.2B.2B
上午的时候,微信的漏洞修补方案里还有这一句,但下午就没了:
factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
其实他的作用是,为了防止拒绝服务攻击。