首页 > 其他分享 >XXE(外部实体注入漏洞)

XXE(外部实体注入漏洞)

时间:2022-09-05 17:44:31浏览次数:59  
标签:XML 元素 外部 实体 DTD 漏洞 XXE 声明

什么是XXE

XXE全称XML External Entity Injection,即外部实体注入。owasp网站对其的描述是:XXE是针对应用程序解析XML输入类型的攻击。当包含对外部实体的引用的 XML 输入被弱配置的 XML 解析器处理时,就会发生这种攻击。

 

危害

1.DOS攻击

2.SSRF攻击

3.使用file协议读取任意文件

4.端口探测

5.执行系统命令

1.什么是XML

XML是一种用来传输和存储数据的可扩展标记语言。

XML用于传输和数据存储。HTML用于显示数据。

Dtd文档类型定义是一套为了进行程序见的数据交换而建立的关于标记符的语法规则。

1.1 xml语法

语法规则

1.所有的XML元素都必须有一个关闭标签

2.XML标签对大小写敏感

3.XML必须正确嵌套

4.XML属性值必须加引号“”

5.实体引用:在标签属性,或者对应位置值可能出现<>符号,这些在对应的xml中都是特殊含义的,那么必须使用对应html的实体对应的表示:例如,<message>if salary < 1000 then </message>如果把                        这个“<”放在元素中,那么解析器会把他当成新元素的开始,就会发生报错。为了避免这个错误使用实体引用来代替<message>if salary &lt; 1000 then </message>

                    < ,> ," ,' , &等符号不被允许直接出现在XML文档中,因为xml解析器会搞不清这些符号是数据还是标签

1.2 xml结构

XML 文档声明,在文档的第一行

XML 文档类型定义,即DTD,XXE 漏洞所在的地方

XML 文档元素

1.3 DTD

内部声明:

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

<!ELEMENT 元素名称 (#PCDATA)> 
例子:
``<!ELEMENT from (#PCDATA)>``

带有任何内容的元素 通过类别关键词 ANY 声明的元素,可包含任何可解析数据的组合:

<!ELEMENT 元素名称 ANY>

例子:

``<!ELEMENT note ANY>``

带有子元素(序列)的元素 带有一个或多个子元素的元素通过圆括号中的子元素名进行声明:

<!ELEMENT 元素名称 (子元素名称 1)>

或者 <!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>

例子: ``<!ELEMENT note (to,from,heading,body)>``

声明只出现一次的元素

<!ELEMENT 元素名称 (子元素名称)>

例子:

``<!ELEMENT note (message)>``

 

 

**内部实体声明**

``<!ENTITY 实体名称 "实体的值">``

DTD 例子:

<!ENTITY writer "Bill Gates">

将writer 声明为”Bill Gates”,copyright 声明为 “Copyright W3School.com.cn”

XML 例子:

``<author>&writer;&copyright;</author>``

注释: 一个实体由三部分构成: 一个和号 (&), 一个实体名称, 以及一个分号 (;)。

<!DOCTYPE foo [
    <!ENTITY xxe  "sec test" >
]>
<root>
    <name>&xxe;</name>
</root>

 

外部声明(引用外部DTD):

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

 

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

 

 

**外部实体声明**
外部实体引用支持通过协议,来动态的获取值

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

例子:
DTD 例子:
```
<!ENTITY writer SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">

<!ENTITY copyright SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">

```
XML 例子:
``<author>&writer;&copyright;</author>``
可以通过``file://``协议来读取文件内容
```

<!DOCTYPE foo [
    <!ENTITY xxe SYSTEM "file:///etc/passwd" >
]>

<root>
    <name>&xxe;</name>
</root>

```
参数实体
<!ENTITY % 实体名称 "实体的值">
or
<!ENTITY % 实体名称 SYSTEM "URI">
除了参数实体在定义和引用的时候需要用%,其他实体引用都是用&。总结出来可以知道,在XML中引用实体,都需要(&或%)+(实体名)+(;),这三个条件(或者说元素)缺一不可。

参数实体只能在DTD中申明,DTD中引用,它们使用百分号(%)而不是与字符(&),可以是命名实体或外部实体。,能够解析实体或者uri,进行xml解析,进而获得其中的变量 注:一般用于Bline XXE

```
<!ENTITY % style "2333">
<!ENTITY % test "%style">
```
**公共实体声明**
<!ENTITY 实体名称 PUBLIC "public_ID" "URI">

 

 

 

 



 

标签:XML,元素,外部,实体,DTD,漏洞,XXE,声明
From: https://www.cnblogs.com/ykxykx/p/16658872.html

相关文章

  • Revit2018二次开发——外部工具不显示
     安装包下找到D:\aaa\Revit_2018_G1_Win_64bit_dlm\Utilities\SDK\SoftwareDevelopmentKit中的RevitSDK.exe也可以直接通过安装解压这个东西。  找到一个addin文件......
  • 在uniapp中实现 单击按钮跳转至小程序内置空页面/外部链接
    记录一次业务需求,单击实现打开问卷给btn注册单击事件//鼠标单击事件 methods:{ companyBtnNavigation(){//第一次的尝试,报error:plusis......
  • docker访问外部https数字证书问题
    一般我们构建的docker镜像使用的都是alpinelinux系统,默认是不带ca-certificates根证书的,导致无法识别外部https携带的数字证书。在访问的时候,会抛出509:certific......
  • Pycharm生成allure报告报错--allure不是内部或外部命令,也不是可运行的程序 或批处理文
    问题:allure报错:‘allure’不是内部或外部命令,也不是可运行的程序或批处理文件 截图:  解决方法:1.安装JDK(版本1.8+),配置环境变量此处不展示过程,成功的后进入cmdjava-version......
  • AWVS——自动化检测发现漏洞
    AWVS简介*AWVS作为一个工具,不可能把所有漏洞扫描出来,仅仅是作为一个渗透网站时的辅助工具自动化Web漏洞扫描工具(基于漏洞匹配方法,通过网络爬虫测试网站安全)AWVS通过SQL......
  • vulhub漏洞复现记录
    vulhub复现activemqCVE-2015-5254ActiveMQ是什么?https://zhuanlan.zhihu.com/p/79264007ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ是一个......
  • FastJson远程命令执行漏洞学习笔记
    FastJson远程命令执行漏洞学习笔记Fastjson简介fastjson用于将JavaBean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。fastjson.jar是阿里开发的一款专门用......
  • CVE-2022-22978 Spring-Security 漏洞复现
    1说明在SpringSecurity中使用RegexRequestMatcher且规则中包含带点号的正则表达式时,攻击者可以通过构造恶意数据包绕过身份认证2环境搭建环境搭建地址可以参考如下的......
  • PHP代码审计——文件操作漏洞
    梦想CMS(lmxcms)任意文件删除1.漏洞详情——CNVD-2020-59469 2.漏洞描述称后台Ba***.cl***.php文件存在任意文件删除,查看cms源码,只有BackdbAction.class.php和Basic......
  • 会话与认证介绍以及相关漏洞案例分析
    很开心能在这边跟大家分享有关于会话跟认证相关的内容以及跟认证相关的漏洞案例分析,在这个过程中过大家有什么疑惑或者有什么我讲得不对的地方,欢迎大家及时提出,我们一起交......