今日要闻

IKEA官网本地文件包含漏洞分析

2018-09-24 21:19 来源:laishu.com 作者:Laishu
导读: 背景通过本地文件包含(LocalFileInclusion)攻击,攻击者可以对服务器进行欺骗,使其共享不公开的文件,而不公开的文件中可能会包含网站的配置、日志和源...

背景

通过本地文件包含(Local File Inclusion)攻击,攻击者可以对服务器进行欺骗,使其共享不公开的文件,而不公开的文件中可能会包含网站的配置、日志和源代码文件。甚至有时该漏洞会导致远程代码执行。因此,LFI攻击被认为具有较高的威胁性。

大多数LFI攻击都是由动态载入图像(或其他文件)的代码引起的。如果请求的文件名或路径未经正确验证,那么服务器将会向攻击者提供所请求的私有文件。接下来,我们将对IKEA.com上发现的这一漏洞展开深入分析。

IKEA是位于福布斯TOP 50的一个知名品牌,他们不仅拥有优秀的家居产品,同时还运营著设计人性化的网站和应用程序。与此同时,IKEA开展了漏洞赏金活动,允许安全研究者对其网站和应用程序进行测试,并在遵守“负责任的漏洞披露原则”的前提下进行公开。

寻找目标

在针对一个域名进行测试时,我通常都首先遍历目标的所有子域名。为了让这一工作更为简单,我使用Aquatone工具,这一工具会在不同的公共域名数据库中进行搜索,并返回一个质量较高的活动子域名列表,同时还包含这些域名的截图。如果想要了解关于Aquatone的更多信息,建议查看Apple.com报告中的“Unrestricted File Upload”部分。

锁定目标:浴室规划师

我们找到的一个子域名是Bathroomplanner.IKEA.com,这是一个工具,可以让客户自行查找产品,并将其添加到自己的浴室产品列表中。

客户可以通过电子邮件的方式,将产品列表发到自己的邮箱,或者以PDF格式从本地下载。生成的PDF文件中包含一些文本和产品图片,可能看起来没有什么特别之处。

但是,我们有一个疑问,PDF是如何生成的?

拦截网络流量

要拦截网络流量,最好的工具就是Burp Suite了。于是,我们启动Burp Suite,开始拦截浏览器和IKEA网络服务器之间的流量。

我们打开首页,并试图将产品添加到我们的列表之中。

接下来,能够看到一些有趣的字段:

Data:包含产品和图像代码的JSON Blob,没有文件路径;

Shopping:包含产品列表的JSON Blob,没有文件路径;

Pdf:一长串字元,内容不明;

Images:一些Base64编码后的图像。

识别Base64编码字元串

如果我们发现一长串由字母和数字组成的字元,那么首先应该检查它是否为Base64编码的字元串。Base64编码通常用于文件的数据传输。在这里,有一个用于解码Base64字元则在线工具,位于:http://decodebase64.com/。

我们将该字元串粘贴到解码器中,将会报错,原因在于字元串中包含%之类的无效字元。看到%符号,我们应该立刻联想到URL编码,因此我们在进行Base64解码之前,首先尝试进行URL解码。有一个URL解码的工具,位于:https://meyerweb.com/eric/tools/dencoder/。

我们进行URL解码和Base64解码后,得到以下字元串:

这看上去很有趣。如果我们将产品添加到列表中,还会从IKEA的Web服务器中,提供一些用于生成PDF购物清单的模板。

如果我们能够将本地服务器文件放到PDF中,那么会怎样呢?例如,我们可以使其作为图像中的一部分显示。于是,我们尝试着将添加到模板中,再对其进行Base64编码和URL编码,替换掉Burp Suite拦截数据包中的pdf参数,并发送出去。

然而,这样的操作并不起作用,PDF生成器无法将这个文件识别成图像,并且也不会在输出中解析其中的内容。

再次尝试:识别PDF库,查找库中的漏洞

也许我们可以采取另一种方法,使PDF中包含文件。首先,我们需要找到用于生成PDF的工具。借助Google,我们搜索了模板中一些有特点的字元串,得到了如下搜索结果。

现在,我们有两个选择:node-html-pdf库或mPDF库。在快速阅读了这两个库的文档后,我们发现它实际上是在这个项目中使用的mPDF库。

定位mPDF中的安全问题

我们立刻制作了一个mPDF的本地副本,以便检查它是否存在安全漏洞。一个比较好的起点是CHANGELOG,开发人员通常都使用该文件来跟踪版本之间的变化。

我们发现,在2017年10月19日的一次修改中,mPDF改变了他们处理注释标签的方式。因此,我们开始仔细查看文档中的这一标签。

在这里面,没有提到文件包含。让我们再次Google搜索,看看是否有其他人发现过相关的问题。

我们阅读了h0ng10提交的漏洞报告, 发现旧版本的mPDF存在严重的安全问题,其中有一个位置,能够以注释标记的方式包含文件。

接着,我们仔细查看了这个项目的Github提交,发现了其中有一段易受攻击的mPDF代码。

因此,我们可以对PDF的模板进行更改,找到上述漏洞详情所提到的标签位置,并尝试对其进行漏洞利用。

攻击过程

我们将以下标记添加到模板中:

双击这一标记,就能够打开从服务器上获取到的文件,由此证明,我们的攻击获得了成功。

IKEA.com网站上提供了一个为用户导出PDF版本购物清单的功能,而该功能中所使用的PDF库受漏洞影响,允许攻击者通过在模板中添加特定标记,将文件嵌入到PDF中。这一功能在最新版本的该PDF库中已被禁用,但IKEA未将使用的PDF库更新到最新版本,因此我们成功利用了这一漏洞。在尝试中,我们证明了能够越权获得IKEA Web服务器上的文件,并成功得到了其生产服务器上/etc/passwd文件。

修复方案

不允许用户操纵PDF模板;

在客户端渲染包含购物清单的PDF,可以使用jsPDF;

更新到最新版本的mPDF库,禁用注释代码。

时间节点

2018年6月16日 发现此漏洞,通过Zerecopter提交漏洞详情

2018年6月17日 发现PDF生成功能已经被禁用(推测是IKEA通过IDS发现我们获取到了敏感文件)

2018年6月18日 Zerocopter无法确认漏洞是否存在(因为PDF生成功能已被禁用),但根据报告中的内容,将这一漏洞情况通知IKEA

2018年6月25日 请求Zerocopter向我们同步当前进展

2018年6月27日 Zerocopter反馈:IKEA在6月19日就开始修复这一问题

2018年8月9日 经过多次沟通,确认IKEA已修复这一漏洞

2018年8月13日 Zerocopter建议我在公开漏洞详情时,隐去IKEA的名称

2018年8月20日 经过与IKEA团队的反复沟通,要求按照“负责任的漏洞披露原则”进行漏洞详情公开

2018年9月11日 获得Zerocopter的250欧元漏洞奖励

2018年9月17日 在多次协商沟通后,IKEA终于对“负责任的漏洞披露原则”进行了正确理解,并正式授权我可以披露漏洞详情

2018年9月18日 发布漏洞详情





声明: 凡注明为其他媒体来源的信息,均为转载自其他媒体,转载并不代表本网赞同其观点,也不代表本网对其真实性负责。如系原创文章,转载请注明出处; 您若对该稿件内容有任何疑问或质疑,请即联系,本网将迅速给您回应并做处理。邮箱:mail@laishu.com

为您推荐

今日要闻

潮鞋品牌

风水知识

健康知识

母婴知识

膳食指南

星座解读

命理运势

养生保健

美食资讯

热点资讯

体育新闻

综合资讯