我们已经准备好了,你呢?

2026我们与您携手共赢,为您的企业形象保驾护航!

**内部实体声明**````DTD 例子:将writer 声明为”Bill Gates”,copyright 声明为 “Copyright W3School.com.cn”XML 例子:``&writer;©right;``注释: 一个实体由三部分构成: 一个和号 (&), 一个实体名称, 以及一个分号 (;)。    ]>    &xxe;

**外部实体声明**外部实体引用支持通过协议,来动态的获取值````例子:DTD 例子:``````XML 例子:``&writer;©right;``可以通过``file://``协议来读取文件内容```    ]>    &xxe;```

不同的语言支持不同的协议

excel嵌套引用_php嵌套文件引用文件不存在_php引用文件的关键字

参数实体:

or

参数实体只能在DTD中声明,在DTD中引用,它们使用百分比(%)而不是字符(&),并且可以命名为实体或外部实体。 ,可以解析实体或URI,执行XML解析,然后在其中获取变量:通常在Bline XXE中使用

``````**公共实体声明**

0x02漏洞原理XXE(XML,XML外部实体注入攻击者)可以获得应通过XML外部实体在服务器中保护的数据。 XXE漏洞的最关键部分是DTD文档类型,该类型用于定义XML文档的合法构建块。当允许引用外部实体时,恶意结构可以导致任何文件读数,执行系统命令,检测端口,攻击网站等。DTD可以在XML文档中声明或在外部引用; .9.1及以后,默认情况下将不再解析外部实体。

内部声明 DTD             引用外部 DTD                 /或者

解析XML时,实体将被相应的参考内容替换,XML文档如下:

(1)包含内部实体的XML文档

             ]>   <c>©right;c

1。XML文档包含外部实体

    ]> ©right;

0x03漏洞利用

1.xml解析器解析外部实体时支持多个协议

libxml2:file、http、ftpPHP:file、http、ftp、php、compress.zlib、compress.bzip2、data、glob、pharJava:file、http、ftp、https、jar、netdoc、mailto、gopher.NET:file、http、ftp、https

2。默认情况下,不同的解析器可能对外部实体具有不同的处理规则,有些解析器可能不会解析外部实体:

PHP:DOM、SimpleXML;.NET:System.Xml.XmlDocument、System.Xml.XmlReader。

通常有两种使用XXE的方法:

1。有xxe的回声

如果有回声,您可以直接在页面上看到执行结果或现象。

带XML外部实体(XXE),即攻击者可以发送带有XXE有效负载的请求,并从包含某些数据的Web应用程序中获取响应。

攻击者通过正常的回声或错误读取外部实体的内容。文件协议读取文件:

          ]>

2。

该服务器不会回声,因此它只能使用盲xxe来构建带外数据通道来提取数据。 Blind XXE主要使用DTD约束中的参数实体和内部定义的实体。参数实体:只能在DTD中定义和使用的实体。通常,引用时%用作前缀;内部定义实体:在实体中定义的实体,即嵌套的定义:

              "        %a;     ]> &b;

Blind XXE使用嵌套形式建立带外数据通道。使用参数实体阅读本地内容后,它将请求启动到其指定服务器作为外部实体中URL中的参数,然后在其指定服务器的日志(log)中读取文件的内容(攻击者的服务器); DTD中由%定义的参数实体只能在外部子集中使用,或者参数实体由外部文件定义,并引用XML文件的DTD;一些口译器不允许内层实体中的外部连接,无论内部层是通用实体还是参数实体,因此嵌套实体声明需要将其放置在外部文件中。

在xxe的情况下:

如何播放 - 读取文件

 ]>&xxe; &xxe;//xxe为变量,读取test.txt//打印出来

使用文件协议用指定路径读取文件

显示结果

游戏玩法 - 探针或攻击应用程序(触发漏洞地址)探针

]>&rabbit;

引入外部实体DTD,DTD是XML的后缀,被识别为XML格式

如果设置了外部实体参考,它将无效

%file;]>&send;

您可以在远程服务器Evil2.dtd上写入它:

没有回声 - 读取文件

%dtd;%send;]>

无论如何是加密,变速箱被乱七八糟,传输失败。

在本地构建192.168.xxx.xxx:

test.dtd:

"">%payload;

打开日志,您可以通过查看日志查看test.txt数据。

协议 - 读取文件(绕过)

 ]>&f;

如何检测:

数据格式类型:如果发现有testMikasa  类型抓包发现  content-type中是  text/xml  或者 application/xml盲猜:更改content-type值application/xml看返回

右键单击以抓住包裹

进行扫描:扫描漏洞

发送到:爬网

使用,查找XML,复制XML代码以发布并使用

0x04旁路姿势

文字$;请参考指向先前注册的实体的链接。链接中指定的文件内容将其替换为文档主体中的内容。以上文档分为三个重要部分:

1.可选标头,用于定义基本文档特征,例如版本和编码。2.XML文档模式的可选声明——。此声明可用于设置外部链接。3.文档正文。它有一个层次结构,其根部是指定的标签

正确配置的XML解释器要么不接受包含用于处理的XML链接的文档,要么将验证链接及其来源,如果丢失了验证,则可以通过链接加载任意文件并将其集成到文档的正义中,如上所述。

我们将根据WAF如何处理XML验证研究两种类型的WAF:

成熟的waf——使用自己的解析器预处理XML文档的WAFs。基于正则表达式。仅搜索数据中的特定子字符串或正则表达式的WAFS。

两种类型的WAF都可以绕过。

在下面,我们显示了攻击者可以用来欺骗WAF并获得XXE的几种方法。

方法1:文档中的额外空间

由于XXE通常位于XML文档的开头,因此更容易的WAF可以避免处理整个文档并仅在开始时对其进行解析。但是,XML格式允许在格式化标签属性时使用任何数量的空间,因此攻击者可以在此类WAF中插入其他空间。

方法2:格式无效

要绕过WAF,攻击者可以发送特殊格式XML文档,以使WAF认为它们无效。

链接到未知实体

更成熟的WAF设置通常不会读取链接文件的内容。这种策略通常是有道理的,否则,WAF本身也可能是攻击的目标。问题在于,与外部资源的链接不仅可以存在于文档的第三部分(正义)中,而且还可以存在于声明中。

这意味着未读取文件内容的WAF不会读取文档中实体的声明。指向未知实体的链接反过来将阻止XML解析器造成错误。

幸运的是,防止这种旁路非常简单 - 在遇到一个未知实体后,命令WAF中的XML解析器不关闭。

方法3:外国编码()

除了上述XML文档的三个部分外,它们上方还有第四部分,该部分控制文档的编码(例如) - 该文档的第一个字节具有可选的BOM(字节订单标记)。

更多信息:#sec-

XML文档不仅可以使用UTF-8,还可以使用UTF-16(两个变体 - BE和LE),UTF-32(四个变体 - BE,LE,2143,3412)和编码来编码。

借助此编码,使用正则表达式可以很容易地绕过WAF,因为在这种类型的WAF中,正则表达式通常仅配置为单个字符集。

外国编码也可以用于绕过成熟的WAF,因为它们并不总是能够处理上面列出的所有编码。例如,解析器仅支持一种类型的UTF-32-UTF-32BE,尤其是不是BOM。

方法4:在一个文档中使用两种编码

在上一节中,我们证明了文档的编码通常由其第一个字节指定。但是,当包含编码属性的标签引用文档开头的不同字符集时会发生什么?在这种情况下,一些解析器会更改编码,以便该文件在开始时具有一组字符,其余的是另一组编码。 。也就是说,不同的解析器可以在不同时间转换编码。 Java (Javax.xml。)严格更改结尾之后的字符,而解析器可以在执行“编码”属性的值后或处理之前或处理后切换编码。

只有在根本没有处理这些文件时,更成熟的WAF才能可靠地防止这些文件中的攻击。我们还必须记住,有许多同义词编码,例如UTF-32BE和UCS-4BE。此外,某些编码可能有所不同,但是从编码文档的初始部分的角度来看,它们是兼容的。例如,似乎是UTF-8的文档可能包含字符串。

这是一些例子。为简单起见,我们不会将XXE放入文档中。

解析器将文档视为有效,但是,Javax.xml.Set中的Java引擎认为这是无效的:

php嵌套文件引用文件不存在_php引用文件的关键字_excel嵌套引用

反之亦然,该文档对于Javax.xml。有效,但对解析器无效:

php嵌套文件引用文件不存在_excel嵌套引用_php引用文件的关键字

该文档,将编码从UTF-16LE更改为标签中间的UTF-16BE:

php引用文件的关键字_excel嵌套引用_php嵌套文件引用文件不存在

该文档的编码从UTF -8更改为-us:

php嵌套文件引用文件不存在_excel嵌套引用_php引用文件的关键字

如您所见,有很多方法可以绕过它。防止XXE的最佳方法是配置应用程序本身,以安全的方式初始化XML解析器。为此,应禁用两个选项:

外部实体外部DTD架构

0x05知识星球

二维码
扫一扫在手机端查看

本文链接:https://www.by928.com/8893.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线