看我如何在Jive-n中发现了一个XXE漏洞

写在前面的话

Rhino安全实验室的研究人员近期在企业员工内网通信软件Jive-n中发现了一个XML外部实体注入(XXE)漏洞,该漏洞存在于应用程序的文件上传功能中,通过上传一个嵌入了XXE Payload的微软Word文档,攻击者将能够读取目标操作系统中的任何文件和文件夹内容。

这种攻击的影响非常严重,因为Jive-n其中的一个重要功能就是帮助用户跟网络中其他用户上传/共享文件,如果你不了解XXE漏洞的话,可以参考我们之前的文章【传送门】或OWASP给出的定义【传送门_Processing)】。

背景:Jive-n和Jive Software

Jive-n是Jive Software旗下的一款产品,这款内网社交通信软件可以帮助企业员工之间通过内网进行交互。它既可以作为SaaS产品使用,也可以作为内部/自托管应用程序来使用。在我们的研究过程中,我们在Jive-n中发现了一个已激活的实例,但这个实例并没有激活使用。我们在一次钓鱼活动中获取到了登录凭证(密码复用),所以我们可以直接登录到这款App。

识别潜在的安全问题

Jive-n其中的一个功能就是上传文件并与内网中其他员工共享。在公开已上传文件之前,应用程序会尝试在页面中通过一个Flash对象来显示文件内容。在使用普通的微软office文档进行了初始测试之后,我们认为这里可能存在XXE漏洞。

XXE服务器配置

Payload首先使用了目标系统中一份本地文件路径定义了一个XML实体,然后使用一个外部实体来向我们的外部服务器发送一个HTTP请求。我们的服务器将会以文档类型定义(DTD)响应,然后命令应用程序服务器使用FTP协议向我们的外部服务器发送之前定义的XML实体(指向本地文件)。我们可以使用这个名叫“oxml_xxe”的软件【下载地址】完成这部分操作,我们的目标文件为:file:///etc/passwd。

在我们的XXE服务器(由Rhino安全研究人员开发-【传送门】)上,我们设置了一个HTTP监听器(端口80)和一个FTP监听器(端口8080),并准备正确处理传入的请求。我们所使用的DTD如下:

成功利用XXE漏洞

我们的目标应用近期好像没有进行过多的操作,所以我们准备上传一个“隐藏”文件,这份Word文件不会暴露给应用程序的所有用户。Jive-n其中的一个功能就是允许用户在发布该文件之前浏览已上传文件的内容,它使用了Flash来尝试在浏览器中呈现已上传的微软Office文档内容,包括Word、Excel和PowerPoint。

一开始我们上传了恶意文档,并使用“保存草稿”功能来尝试让Jive-n呈现文档内容。虽然没有成功,但是Jive-n显示了一条错误信息以及一个“查看”或“下载”文件的选项。

上图中主要发生了三件事情:

蓝色框中的内容是初始HTTP请求,由应用程序服务器发送到我们的服务器上。

绿色框中的内容是我们服务器针对该请求的响应数据。

橙红色框中的是通过FTP连接发送给我们的一小部分数据。

我们还发现,通过请求路径file:///etc/,我们可以获取到etc目录中的目录列表。

潜在的缓解方案

Jive-n的管理员可以使用反病毒软件来对用户上传的文件进行扫描,但是这种方法还不能保证是否能够检测到某些专门制作的Payload(未测试)。不过,反病毒产品可以检测到带外连接、操作系统文件被读取、或者FTP协议被使用等情况。在使用反病毒产品以及禁用XML外部实体的情况下,这种攻击的影响是可以缓解的。

厂商修复CVE-2018-5758

根据厂商提供的信息,最新版本软件即服务形式的Jive-n已经修复了这个XXE注入漏洞,并禁用了远程DTD的访问,现在程序的XML解释器已经不会再处理外部实体了,因此SaaS版本的Jive-n用户将不会再受到该漏洞的影响。

* 参考来源:rhinosecuritylabs,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

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

扫码关注云+社区

领取腾讯云代金券