码迷,mamicode.com
首页 > 其他好文 > 详细

注入XML解释器

时间:2020-02-08 15:22:32      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:显示   特殊   外部文件   技术   tps   结构   conf   关键字   实体   

XML:可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。它被设计用来传输和存储数据(而不是储存数据),可扩展标记语言是一种很像超文本标记语言的标记语言。它的设计宗旨是传输数据,而不是显示数据。它的标签没有被预定义。您需要自行定义标签。它被设计为具有自我描述性。它是W3C的推荐标准。

可扩展标记语言(XML)和超文本标记语言(HTML)为不同的目的而设计;XML目的是传输数据,主要体现在数据的内容,而HTML目的是显示数据,体现在数据的外观。

XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素

 

技术图片

 

 文档类型定义DTD可以在XML文档内声明也可以外部引用。

内部声明DTD

<!DOCTYPE 根元素 [元素声明]>

引用外部DTD

<!DOCTYPE 根元素 SYSTEM "文件名">
或者
<!DOCTYPE 根元素 PUBLIC "public_ID" "文件名">

DTD的实体

DTD实体是用于定义引用普通文本或特殊字符的快捷方式的变量,可以内部声明或外部引用。

我们可以在内部确定其值(内部子集):

技术图片

 

 或从外部来源:(外部子集):

技术图片

 

<!ENTITY 实体名称 SYSTEM "URI/URL">

或者

<!ENTITY 实体名称 PUBLIC "public_ID" "URI">

 SYSTEM标识符意味着该实体从外部来源获取内容。

如果要引用一个外部资源,可以借助各种协议 几个例子:

file:///path/to/file.ext

http://url/file.ext

php://filter/read=convert.base64-encode/resource=conf.php

外部实体的类型:

技术图片

 

 XML 中的实体分为以下五种:字符实体,命名实体,外部实体,参数实体,内部实体,普通实体和参数实体都分为内部实体和外部实体两种,外部实体定义需要加上 SYSTEM关键字,其内容是URL所指向的外部文件实际的内容。如果不加SYSTEM关键字,则为内部实体,表示实体指代内容为字符串。

XML注入

XML External Entity,XML外部实体注入。

通过 XML 实体,”SYSTEM”关键词导致 XML 解析器可以从本地文件或者远程 URI 中读取数据。所以攻击者可以通过 XML 实体传递自己构造的恶意值,是处理程序解析它。当引用外部实体时,通过构造恶意内容,可导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等危害。

ENTITY 实体,在一个甚至多个XML文档中频繁使用某一条数据,我们可以预先定义一个这条数据的“别名”,即一个ENTITY,然后在这些文档中需要该数据的地方调用它。XML定义了两种类型的ENTITY,一种在XML文档中使用。

<!DOCTYPE  文件名 [

<!ENTITY  实体名 "实体内容">

]>

定义好的ENTITY在文档中通过“&实体名;”来使用。举例:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE booklist [

<!ENTITY publisher "ABC company">

]>

<booklist>

<book>

<name>Ajax</name>

<price>$5.95</price>

<description>Foundations of Ajax.</description>

<publisher>&publisher;</publisher>   这里的&publisher;会被“ABC company”替换

</book>

<book>

<name>Ajax Patterns</name>

<price>$7.95</price>

<description>Introduction of Ajax Patterns.</description>

<publisher>&publisher;</publisher>  这里的&publisher;会被“ABC company”替换

</book>

</booklist>

...未完待续  

简单漏洞利用:https://bbs.ichunqiu.com/thread-44650-1-7.html

 学习自https://www.cnblogs.com/backlion/p/9302528.html

注入XML解释器

标签:显示   特殊   外部文件   技术   tps   结构   conf   关键字   实体   

原文地址:https://www.cnblogs.com/danku/p/12283177.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!