Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

宜家PDF下载过程本地文件包含漏洞披露

$
0
0

宜家PDF下载过程本地文件包含漏洞披露
背景:

通过本地文件包含攻击,可以获得服务器上禁止访问的例如配置、日志和源代码等私密文件。有时候它还可以导致远程代码执行漏洞,所以说本地文件包含攻击的危害是比较大的。

大多数的本地文件攻击都是由动态加载图片或其他文件的代码造成的。如果没有对请求的文件名或路径做校验,那么服务器就会返回所请求的私密文件。


宜家PDF下载过程本地文件包含漏洞披露

复现动画

寻找目标

大多数时候我都是扫描所有目标网站下的子域名, Aquatone 是个挺好用的工具,它可以在不同的公共域名数据库中查找相关域名并返回可用的子域名。工具效果如图所示:


宜家PDF下载过程本地文件包含漏洞披露

Aquatone 发现了 418 个可用的子域名。

测试目标

找到的一个攻击目标是 Bathroomplanner.IKEA.com ,其中有一个工具可以帮助查找产品并将产品添加到自己的浴室购物车中。你可以将购物车用邮件或者直接 PDF 文件下载的方式保存到本地,这里生成的 PDF 文件包含了一些文本信息和产品图片,没多少值得看的了。


宜家PDF下载过程本地文件包含漏洞披露
宜家PDF下载过程本地文件包含漏洞披露

购物车列表图

但 PDF 文件是如何生成的呢?

对流量进行抓包分析

一提到抓包,你就会想到…… Burp Suite !我们先使用 Burp Suite 的流量抓取功能试试看。

打开首页后尝试添加一个产品到购物车中。


宜家PDF下载过程本地文件包含漏洞披露

在添加购物车时抓到的流量包。

可以看到其中几个有趣的数值:

1) data: 一个 blob 类型的 JSON 数据,包含了产品和图片编码,没有文件路径。

2) shopping: 一个 blob 类型的 JSON 数据,包含了购物车的商品,没有文件路径。

3) pdf: 一个内容不明的超长字符串。

4) images: 一些经过 BASE64 编码的图片。

了解编码字符串

如果你之前看到一大串字母数字组成的超长字符串,那么就考虑看看它是不是一个 BASE64 编码后的字符串。 BASE64 编码常用于文件的数据传输,常用的解码工具是 http://decodebase64.com/


宜家PDF下载过程本地文件包含漏洞披露

解码 BASE64

如果我们尝试直接把字符串黏贴到解码网站里会发现报错,这是因为它包含了像 % 之类的非法字符。不过这也说明它可能还经过 URL 编码,所以先进行 URL 解码试试看。这里我用了

https://meyerweb.com/eric/tools/dencoder/ 来进行 URL 编码和解码。


宜家PDF下载过程本地文件包含漏洞披露

URL 解码和编码工具

如果我们先进行 URL 解码,再进行 BASE64 解码,就会获得下面的字符串:


宜家PDF下载过程本地文件包含漏洞披露

这里发现个有趣的地方,如果我们将商品添加到购物车中,那么它也会向服务器发送一个用于生成购物车 PDF 文件的模板数据。

那么如果我们尝试在 PDF 中进行本地文件包含呢?比如说尝试一个图片?先尝试在模板数据里添加一个 <img src=”/etc/passwd”> ,通过 BASE64 和 URL 编码后,再 Burp Suite 中替换 PDF 参数然后前进。

Emmm 没有什么效果, PDF 无法将文件识别为图片也没有返回任何输出。

第二次尝试:找到PDF库,查找库的漏洞

那么试试看其他办法在 PDF 中包含文件呢?先在谷歌中查找一些模板中的字符串,就能找到用于生成 PDF 文件的工具。


宜家PDF下载过程本地文件包含漏洞披露

Node-html-pdf 和 mPDF

所以我们有了两个思路: node-html-pdf 库或者是 mPDF 库,在阅读了两个工具的文档以后我们发现宜家用的是 mPDF 库。

找到mPDF的安全漏洞

先下载一个 mPDF 到本地进行审计,从更新日志中可以看到不同版本的更新变化。


宜家PDF下载过程本地文件包含漏洞披露

查找更新日志中的安全更新,可以节约很多时间。

就像我们在图里看到的一样, mPDF 在 2017 年 10 月 19 日更改了注释标签的处理方式,然后我们来看看文档中对注释标签的说明。


宜家PDF下载过程本地文件包含漏洞披露

文档中没有提到涉及文件包含的问题。

没有找到和文件包含有关的信息,那么谷歌看看其他人有没有写过相关问题。


宜家PDF下载过程本地文件包含漏洞披露

看这里被提交的一个 issue 。

h0ng10 在旧版本的 mPDF 中找到了一个严重的安全漏洞,这个漏洞可以通过注释标签来实现文件包含。

如果我们仔细翻阅 Github 上这个项目的提交记录,就能找到这里危险的 mPDF 代码位置。

所以我们可以尝试更改 PDF 的模板数据,利用注释标签来尝试文件包含攻击。那么来看看宜家是否用了新版本的 mPDF 库。

攻击

将下列标签添加到模板数据中:

<annotation file=”/etc/passwd” content=”/etc/passwd” icon=”Graph” title=”Attached File: /etc/passwd” pos-x=”195” />

用 Burp Suite 的 Repeater 功能发送新的模板数据,然后下载 PDF 文件。用 Foxit Reader 打开文件查看黄色的注释信息。


宜家PDF下载过程本地文件包含漏洞披露

双击这里的标注就能看到读取的服务器文件了。也就是说――攻击成功!


宜家PDF下载过程本地文件包含漏洞披露

读取到的 /etc/password 文件内容

修复方案

禁止用户修改生成 PDF 用的模板数据

用 jsPDF 之类的工具在客户端生成包含购物车信息的 PDF 文件

更新最新版本的 mPDF 库,禁止注释标签功能。


Viewing all articles
Browse latest Browse all 12749

Trending Articles