Bugbounty: 在Bol.com上的XXE漏洞

原文链接:https://medium.com/@jonathanbouman/xxe-at-bol-com-7d331186de54

这个漏洞的赏金不算太高,但是相比于其他人XXE漏洞,更具有代表性,漏洞猎人上传带有XXE代码的excel进行攻击。

背景

在前面的报告中,我们学到了一些关于访问者在的浏览器中进行代码执行的知识,反射型XSS,存储型XSS,服务器的错误配置和重定向等漏洞。
今天我们将仔细研究从服务器窃取私有文件。

挑选目标

一如既往,我们需要有一个好的目标。

Bol.com是荷兰最大的电子商务网站之一。他们处理我的重定向漏洞报告的方式非常好; 快速回复,正确修复并始终向我发送更新。

在开始之前,我们首先需要了解有关XXE,LFI和RCE的更多信息。在那之后我们准备好了!

XXE,LFI,RCE; 这些是什么意思?

本地文件包含(LFI)是在服务器响应中显示内部服务器文件的过程。远程执行代码(RCE)是在服务器上执行我们自己的代码的过程。

通常LFI错误会导致RCE; 有很多技巧可以用来将LFI升级到RCE;

RCE错误影响很大,因为它可能导致完整的服务器接管。尽管大多数服务器在访问受限的帐户下执行来自Web服务器的代码,但在操作系统本身中

仍然存在时不时的缺陷。允许一个人绕过此特定访问限制的缺陷,你过去可能使用过存在这种漏洞的应用,iPhone或者安卓。

这两个完美的例子都是通过利用这种漏洞来接管操作系统。我们将此类攻击特权称为升级。

XML外部实体(XXE)攻击基于扩展XML文件,以便加载本地文件和外部URL。它可能导致LFI和RCE,因此它具有很高的影响力。

虽然在 2002年被发现,但它仍然是你现在在很多网站上都会发现的一个错误。高影响力和高发生率,让我们了解更多!

可扩展标记语言(XML)

在我们继续之前,我们需要更多地了解XML。

XML是一种标记语言,允许用户创建易于被计算机和人类阅读的文档。虽然有人说它是过去的语言,但它现在仍在很多地方使用。

XML文件的示例

如果我们仔细查看该示例,我们会注意到内容将出现在标签之间,例如<body>contents</body>。因此,我们应该转义标签内的特定字符。

否则,一个人能够注入一个标签并操纵整个XML文件,没人会想要。默认情况下,XML转义<>&'"字符到实体一样&lt;&gt;&amp;&apos;&quot;

因此,我们仍然可以在不破坏XML文件的情况下使用字符。

XML有一个很好的功能,它允许我们通过在XML文档中包含Document类型定义(DTD)来定义我们自己的实体。查看示例图像。

自定义实体的示例

示例DTD

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE r [
<!ELEMENT r ANY>
<!ENTITY body "Don't forget me this weekend!">
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body><r>&body;</r></body>
</note>

利用XML解析器

但是如果解析器允许我们定义文件而不是字符串呢?结果将是实体将被文件的内容替换。通过更改

点击收藏 | 1 关注 | 1
  • 动动手指,沙发就是你的了!
登录 后跟帖