微信支付曝严重漏洞,可0元支付获取商家商品!——关于微信支付商户端Java SDK XXE漏洞的说明

举报
吾乃攻城猫喵大人 发表于 2018/07/04 16:10:35 2018/07/04
【摘要】 0x00 漏洞介绍漏洞描述该漏洞为微信在JAVA版本的SDK中提供callback回调功能,用来帮助商家接收异步付款结果,该接口接受XML格式的数据,攻击者可以构造恶意的回调数据(XML格式)来窃取商家服务器上的任何信息,可导致商家服务器被入侵(绕过支付的效果)。一旦漏洞被黑客利用,黑客可能通过发送伪造的信息不用花钱就购买商家任意物品漏洞级别【严重】 漏洞影响在微信支付过程中,商家的服务器需...

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文件中,旧代码:

1.PNG

从代码看DocumentBuilder直接parse了外部输入的strXML。 修复后新版本的代码如下:

image.png

新版代码中DocumentBuilderFactory多设置了两个属性,其中关闭实体引用和开启安全处理特性。


0X03 XXE漏洞介绍


XXE的全称叫做XML外部实体注入攻击(XML eXternal Entity),它是利用XML允许引用外部实体的特点,将外部实体定义为敏感的文件,系统命令等高危操作,来对目标服务器进行攻击的手段。 XML外部实体的定义和使用的语法:

image.png

当然还有一种就是应用外部的DTD,外部的DTD中定义实体

image.png

常见攻击手段

窃取服务器文件

image.png

发送远程请求

image.png


0x02 华为云配套服务


华为云Web应用防火墙

华为云WAF是客户网站和访问者之间一道安全检测卫士,它能够将恶意攻击有效的拦截在客户网站之外。华为云WAF默认支持XXE漏洞攻击的防御拦截。如果有客户来不及修复代码,升级到最新版本,请及时开启WAF防护。

更多关于Web应用防火墙

漏洞扫描服务

华为漏洞扫描服务提供了该漏洞的快速一键检测功能,帮助用户检测业务是否受影响。华为云漏洞扫描服务所采用的安全测试用例都是经过精心筛选,对客户的网站和服务器都是没有攻击性。

更多关于漏洞扫描服务


0x04 参考


  1. seclists报告

  2. TSRC XXE文章

  3. 先知社区文章 Edit By MaHua


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。