XXE
1. XML注入
- 简单如图所示:
类似于SQL注入,在可控的范围内,插入了xml代码
XXE注入
- 全称为XML外部实体注入
也就是在提交xml数据
的时候,在导入dtd文档
的时候,尝试倒入自己本地的文件
,或者远程的文件
基础知识:
- 除了在DTD中定义元素(xml的标签)以外,我们还能在DTD中定义实体(对应xml标签的内容)
实例代码:
1. 实验一: 有回显地读取本地敏感文件(Normal XXE)
这个实验的攻击场景模拟的是在服务器接收并解析XML格式输入并且有回显的时候,我们就能输入我们自定义的xml代码,通过引用外部实体的方法引用服务器上面的文件
本地服务器上放上解析xml
的php
代码
实例代码
:
Xml.php
<?php
libxml_disable_entity_loader (false);
$xmlfile = file_get_contents('php://input');
$dom = new DOMDocument();
$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
$creds = simplexml_import_dom($dom);
echo $creds;
?>