XXE -"xml external entity injection(外部实体注入)"
如果在XML中允许引用外部实体时,通过构造恶意内容,就可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害。
一段XML语言:
DTD: DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。它使用一系列的合法元素来定义文档结构。
详细的DTD解释可参考:http://www.w3school.com.cn/dtd/index.asp
<?xml version = "1.0"?>
<!DOCTYPE note [
<!ENTITY hacker "test">
]>
<name>&hacker;</name>
外部实体声明:<!ENTITY 实体名称 SYSTEM "URI">
当XML内写入了恶意代码时,如果攻击对象没有禁用外部实体声明时,就有可能导致攻击产生。
<?xml version = "1.0"?>
<!DOCTYPE ANY [
<!ENTITY f SYSTEM "http://localhost/test.txt">
]>
<x>&f;</x>