首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kali Linux Web渗透测试手册-6.7-利用XML外部实体注入

翻译来自掣雷小组

成员信息:

thr0cyte,Gr33k,花花,MrTools,R1ght0us,7089bAt

标记红色的部分为今日更新内容。

6.0、介绍

6.1、寻找文件包含漏洞

6.2、文件包含和文件上传

6.3、手工验证SQL注入

6.4、基于错误的SQL注入

6.5、确认并利用SQL盲注漏洞

6.6、使用SQLMap查找和利用SQL注入

6.7、利用XML外部实体注入

6.8、检测和利用命令注入漏洞

6.7、利用XML外部实体注入

XML主要是一种用来描述文档或数据结构格式的语言;例如,HTML就是XML的一种使用方法。

XML实体就像是XML结构中定义的数据结构,其中一些实体能够从系统中读取文件,甚至执行命令。

在这小节中,我们将利用XML外部实体(XEE)注入漏洞从服务器上读取敏感文件并远程执行一些代码。

环境准备

在此之前,建议你阅读过文件包含或文件上传的那一小节。

实战演练

请参考以下步骤:

1. 浏览器打开:

http://192.168.56.11/mutillidae/index.php?page=xml-validator.php

2. 上面说这是一个XML验证器。让我们试着提交样例测试看看会发生什么。在XML框中,我们输入HelloWorld,然后点击Validate XML。在解析的结果中它应该只显示Hello World:

3. 现在,让我们看看它是否正确地处理了实体标记。输入以下内容:

在这里,我们只定义了一个实体将 Mr Bob设为其值。解析器在显示结果时解释了实体并替换该值:

4. 这就是内部实体的使用。让我们尝试一个外部实体的使用:

在这个结果,我们可以看到注入后返回文件的内容:

使用这种技术,我们可以读取系统中任何对运行web服务器用户可读的文件。

5. 我们还可以使用XEE加载web页面。在文件包含时,我们可以设法向服务器上传了一个webshell。让我们做到它:

在这个页面返回的结果中,包含执行服务器端的代码并返回命令执行后的代码:

原理剖析

XML提供了定义实体的可能性。XML中的实体只是一个名称,它具有与之相关联的值。每次在文档中使用实体时,它都会在处理XML文件时被其值替换。使用不同协议(例如file://来加载系统文件,或者http://来加载url),我们可以在没有适当安全措施的地方实现,入输入验证和XML解析器配置方面,可以提取敏感数据,甚至在服务器上执行命令。

在这小节中,我们使用file://协议使解析器从服务器加载任意文件,然后使用http://协议调用一个web页面,该页面恰好是同一服务器中的一个webshell,并使用它执行系统命令。

更多…

还有一种拒绝服务(DoS)攻击就是通过这个名为“billion laughs”的漏洞进行的。你可以在维基百科上了解更多:

https://en.wikipedia.org/wiki/Billion_laughs

PHP支持的XML实体有一个不同的封装(如file://或http://),如果在服务器中启用,就可以在不上传文件的情况下执行命令。您可以在下面这个网站中找到更多有关的协议的信息:

http://www.php.net/manual/en/wrappers.php

另请参阅

一个关于XXE漏洞经典案列,如何攻破一些主流的大厂商网站的,可以查看:

http://www.ubercomp.com/posts/2014-01-16_facebook_remote_code_execution

或者看这个最近的例子,看看Oracle Peoplesoft这种的利用:

https://www.ambionics.io/blog/oracle-peoplesoft-xxe-to-rce

--------------------------------------------------------------------

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190109B19H9600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券