首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

6分钟视频看懂XXE漏洞攻击

你好,我是好刚,在上一讲,我们了解了XXE 漏洞的原理,这一讲我们来看一看XXE 漏洞的攻击流程以及这次漏洞对微信支付的影响到底出现在哪儿。

1. XXE漏洞攻击流程

首先是攻击流程,看看怎样通过XXE 漏洞读取服务器上的文件内容。

对于一次XXE 漏洞攻击,一般有3 个参入方,首先是攻击者,攻击是他发起;然后是被攻击者,一般是一台web 服务器;再就是攻击者服务器,用来接收被攻击者服务器的文件内容。

1.1 漏洞接口

第一步,假设被攻击者的web 服务器中存在一个接口: ,这个接口能够接收xml 格式的参数。

1.2 构造请求

第二步,针对这个接口,攻击者会构造xml 格式的请求数据,请求的xml 内容如下:

是攻击者服务器中的实现构造好的dtd 文件,内容如下:

1.3 解析请求

然后是第三部分,被攻击的web 服务器收到xml 参数后,会对xml 进行解析:

第一步:读取 的内容,作为 实体的值,这里 表示这个实体是参数实体,之所以使用参数实体,是因为只有参数实体才可以在DTD 中使用,另外由于参数实体只能在外部引入的DTD 文件中声明实体时使用,所以我们还需要引入一个外部DTD 文件。

第二步:这里 是攻击者服务器上的DTD 文件,通过 拿到的是恶意DTD 文件。

第三步:解析恶意DTD 文件 ,这里会请求攻击者服务器上的 ,并且将 文件的内容作为路径参数,这个请求会在攻击者服务器 中留下访问记录,这样攻击者就能根据请求日志,拿到了 文件的内容。

这个示例里,窃取的是 文件的内容,实际上只要被攻击者服务器上解析 的程序有文件读权限,攻击者可以拿到服务器中任何文件的内容,获取代码里面的秘钥,服务器登录密码等等。

这就是一个典型的XXE 漏洞攻击,我们再来看看这次漏洞对微信支付的影响到底是什么样。

2. 支付漏洞是怎么回事

要了解这个漏洞对支付的影响,首先需要了解支付流程,我们来看一个简略版的支付过程。

再一次购物支付中,一般会包含三个参入方:用户,商家和支付服务商,流程一般是这样的:

用户选择好商品后,请求商家服务器进行下单,商家计算付款金额后显示支付页面,提示用户支付。

用户会根据支付金额触发微信支付,注意,这个时候用户会进入微信支付的页面,与微信进行交互,并且完成付款。

微信会将支付完成的消息回调给商家服务器,通知商家,用户已经支付完成,商家确认订单和支付金额没有问题后会将订单状态改为已付款状态。

然后提示用户付款完成,并且跳转到购买成功的页面

这就是一次购物支付的简单流程,当然实际的支付流程比这复杂得多,感兴趣的同学可以通过下方我给出的参考资料找到相关文档。

这次产生漏洞的位置是在第3 步,用户支付完成后,微信需要请求商家服务器接口,通知商家,用户已经支付。这个接口的代码一般会使用微信提供的SDK 进行开发,而这个SDK 里面有段代码在解析XML 格式的请求数据时,出现了外部实体注入漏洞,这就是这次支付漏洞的由来。

如果用户通过这个漏洞拿到了商家的支付公秘钥,那就可以跳过第2 步支付的过程,直接往第3 步的接口发送模拟的通知请求,从而达到不花钱获取商品的目的。

在很多媒体的报道中,也都强调通过这个漏洞,攻击者不花钱就可以获得商品。其实没有这么简单,对于大型购物网站,都会有对账系统,这个系统会定时将网站的用户订单数据与微信后台的数据进行对比,一旦出现不一致时会及时报警;而且这个通知接口的地址,一般也只有内部开发人员才知道,所以这个漏洞在这方面的影响可能并没有想象的那么大。

其实除了不花钱获取商品,攻击者更可能造成的危害是:通过这个漏洞获取到服务器上的代码配置和数据,然后再根据这些信息进行下一步的攻击。

3. 漏洞的解决

最后来看下这个漏洞的解决方案,通过上一讲XXE 漏洞的原理以及这一讲攻击流程的介绍,可以看到XXE 漏洞之所以能够存在,本质上在于解析XML 外部实体的时候,可以读取外部文件,才使攻击成为可能。

那解决这个漏洞的办法也非常简单,就是禁止XML 可以解析外部实体。代码上只需要明确调用禁止解析外部实体的函数就行了。

安全无小事,XXE 漏洞原理和攻击流程就介绍到这,你听懂了吗。最后请帮忙关注和转发,让身边的同事也了解一下这个漏洞吧。我是好刚,好钢用在刀刃上,我们下期见。

参考资料

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180811A0J5RN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券