正在阅读:仅仅是“0元购”?微信支付XXE漏洞竟如此可怕仅仅是“0元购”?微信支付XXE漏洞竟如此可怕

2018-07-11 00:15 出处:PConline原创 作者:卡夫卡 责任编辑:sunziyi

  【PConline 杂谈】不知各位近日是否也有所耳闻,就是在微信JAVA版本的SDK中,发现了一个XXE漏洞。要知道,我们在使用微信进行支付时,收款方需要提供通知网址来接受异步支付结果。有了这个漏洞,攻击者不仅可以0元购物,还可能倒卖用户的信息。目前,腾讯方面称已修复了该漏洞。不过,既然已经说到了XXE,本期我们不妨就与各位继续聊一聊XXE攻击这件事。

仅仅是“0元购”?微信支付XXE漏洞竟如此可怕
仅仅是“0元购”?微信支付XXE漏洞竟如此可怕

  在微信支付的JAVA_SDK中,提供了WXPayUtil工具类,从而实现xmltoMap和maptoXml两个方法,此次微信支付的XXE漏洞爆发点正是xmltoMap方法。微信SDK的xmlToMap方法接收并处理XML数据,且默认支持外部实体解析,因此只要能控制strXML就会存在XXE漏洞。

漏洞代码
漏洞代码

  实际上,如今有越来越多的WEB程序中,发现存在XXE(XML External Entity attack)漏洞。尽管XXE漏洞已存在许多年,但却从未得到过足够的重视,现在,却因为微信支付‘一炮而红’。

什么是XXE漏洞?

  XXE漏洞是一种针对使用XML交互的Web应用程序的攻击方法。目前来看,XML文件作为配置文件(Spring、Struts2等)、文档结构说明文件(PDF、RSS等)、图片格式文件(SVG header)应用比较广泛。可以说,之所以存在XXE漏洞,本质上在于在解析XML时能与外部进行通信;当XML文档可以由攻击者任意构造时,攻击便成为可能。利用XXE漏洞最常见也是最容易实现的事情,就是读取服务器的信息,包括目录结构、文件内容等。此次,微信支付爆出的漏洞这是这一种。

  什么是XML外部实体?你可以将XML理解成一个用来定义数据的东西,且两个采用不同技术的系统可通过XML进行通信与数据交换。例如上图中用来描述一个职工的XML文档样本,‘name’、‘salary’、‘address’就是XML的元素;另外,也有一些XML文档中包含system标识符定义的“实体”,这些‘实体’可以访问本地或者远程内容。

  比如上面的XML文档样例就包含了XML‘实体’。在这段代码中,XML外部实体‘entityex’被定义的值为:file://etc/passwd。因此,在解析过程中,实体‘entityex’的值会被替换为URI(file://etc/passwd)内容值,即passwd文件的内容,而关键字‘SYSTEM’会告诉XML解析器‘entityex’实体的值将从其后的URI中读取。

  由于关键字‘SYSTEM’不仅令XML解析器从URI中读取内容,还允许它在XML文档中被替换,因此,攻击者可通过实体将其自定义的值发送至应用程序。换言之,攻击者可强制XML解析器访问其指定的资源内容。那么,要如何鉴别一个XML实体攻击漏洞?

如何鉴别一个XML实体攻击漏洞

  最直接方法就是鉴别接受XML作为输入内容的端点,只是有时这些内容端点不那么明显。遇到这种情况,安全员需尝试例如修改HTTP的请求方法,修改Content-Type头部字段等不同的测试方式,来查看应用程序是否解析了所发送的内容,如果解析了则可能有XXE攻击漏洞。

  如何发动XXE攻击?在上面的图示中,我们例举了著名的‘billion laughs’(https://en.wikipedia.org/wiki/Billion_laughs)攻击。该攻击通过创建一项递归的XML定义,在内存中生成十亿个“Ha!”字符串而引发DDoS攻击。不仅如此,攻击者还能读取服务器上的敏感数据,通过端口扫描并获取后端系统的开放端口。

  我们看到,XXE漏洞的危害不仅仅是攻击者可以免费购物,其最大的威胁在于可以泄露窃取服务器上的敏感数据,以及发动DDoS攻击。需要强调的是,尽管我们是在微信支付中发现了XXE漏洞,但该漏洞并非仅存于微信支付中。要解决此类漏洞的最佳办法就是配置XML处理器,令其使用本地静态DTD(document type definition),禁用对外部实体的访问。

 
来不及淘宝了 教你3分钟做出高颜值红包封 医院内网染病毒履杀不止 真相竟然是这样的 出门找个车位真是难 未来用AI实时预判空车位? IPv6终于迎来发展元年 却挡了SDN的前路? 3D打印的磁性网格机器人长这样?可抓取小物体

为您推荐

加载更多
加载更多
加载更多
加载更多
加载更多
加载更多
加载更多
加载更多
加载更多

网络设备论坛帖子排行

最高点击 最高回复 最新
最新资讯离线随时看 聊天吐槽赢奖品