XXE漏洞全称XML External Entity Injection 即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件和代码,造成任意文件读取、命令执行、内网端口扫描、攻击内网网站、发起Dos攻击等危害。
XXE漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件。
xml是用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.xml文档结构包括xml声明、DTD文档类型定义(可选)、文档元素.
所有的XML文档均有以下简单的构建模块组成:
·元素(元素是XML以及HTML文档的主要构成模块,元素可包含文本、其他元素或者是空的)
·属性(属性可提供有关元素的额外信息)
·实体(实体是用来定义普通文本的变量。实体引用是对实体的的引用,这里的引用就可以为我们提供xxe攻击)
·PCDATA(会被解析器解析的文本。这些文本将被解析器检查实体以及标记)
·CDATA(字符数据,不会被解析器解析的文本)
DTD(文档类型定义)
DTD的作用是定义XML文档的合法构建模块
DTD可以在XML文档内声明,也可以外部引用
内部声明:
外部声明:
DTD实体
DTD实体是用于定义引用普通文本或特殊字符的快捷方式的变量,可以内部声明或外部引用。
实体分为一般实体和参数实体
产生的危害
xxe危害1:读取任意文件
xxe危害2: 执行系统命令
xxe危害3:探测内网端口
xxe危害4:攻击内网网站
xxe危害5: 导致DOS攻击 |