XXE
概述
html被用来显示数据
其中
组成
声名
“
文档类型定义DTD(document type definition),是下面文档元素的规定可以叫约束,定义了格式
“<!DOCTYPE note SYSTEM "Note.dtd">”
DOCTYPE 声明是对外部 DTD 文件的引用
文档元素
“”
利用
其中我们能利用的是DTD部分引入外部文档
有三种方法
- DTD内部声名:<!DOCTYPE 根元素 [元素声名]>
- DTD外部声名:<!DOCTYPE 根元素名称 SYSTEM "外部DTD的URI">其中外部引用支持http、file和ftp等
- 引用公共DTD:<!DOCTYPE 根元素名称 PUBLIC "公用DTD的URI">
如果一个接口支持接受
lib
用例
<?
"%name"(参数实体)实在DTD中被引用,而"&name;"是在
能怎么利用看支持什么协议,具体的参考
https://security.tencent.com/index.php/blog/msg/69
防御
方案一、使用开发语言提供的禁用外部实体的方法
PHP:
lib其他语言:
方案二、过滤用户提交的
关键词:,SYSTEM和PUBLIC。