1.XXE概述
XXE-“xml external entity injection”,即xml外部实体注入。
攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题,也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入。
2.本地实体类型与外部的实体类型
- 本地实体类型举例说明如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [ //定义了foo的根元素
<!ELEMENT foo ANY> //foo是接受任何参数的
<!ENTITY xxe "test">]> //定义了一个实体 xxe
<creds>
<name>&xxe;</name> //&xxe进行引用 本地引用
<pass>pass</pass>
</creds>
- 外部实体类型举例说明如下:shell.php
<?php
$body = file_get_contents("php://input"); //php://input是伪协议类型的一种
$xml = simplexml_load_string($body);
print_r($xml);//有回显,无回显
?>
定义一个test1.dtd文件
<!ENTITY xxe "hello xxe!">
定义一个shell_test.xml文件
<?xml version="1.0" encoding="UTF-8"?&g