基本漏洞原理及防御(5)-XXE
作者:互联网
XXE:XML External Entity(XML外部实体)
XML:xml是一种标记语言,用来标记电子文件,从而使得电子文件具有一定的格式和结构性,是一种用户可以自己定义的标记语言。
XML文档包括:XML声明,DTD文档类型定义,文档元素
1.漏洞产生原理:当允许对XML外部实体进行引用时,未对外部实体进行严格的审查过滤,从而导致恶意内容上传。
2.漏洞利用原理:攻击者利用外部实体的引用,向引用位置构造恶意内容或者脚本,从而在此处执行恶意操作。例如插入查询的语句,就可以查询系统文件。
或者将恶意内容以DTD的格式传入引用,可以达成任意文件读取。
3.回显问题:有些返回的情况是由php格式携带信息,而由于php代码会因为浏览器的解析原因而无法显示,这时候用base64编码一次,就可以显示出返回信息。
4.漏洞危害:任意文件读取
5.漏洞防御:
(1)使用开发语言提供的禁用外部实体的方法
PHP:
libxml_disable_entity_loader(true);
JAVA:
DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();
dbf.setExpandEntityReferences(false);
Python:
from lxml import etree
xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))
(2)过滤用户提交的XML数据
关键词:<!DOCTYPE和<!ENTITY,或者,SYSTEM和PUBLIC。
标签:XML,实体,恶意,漏洞,文档,防御,XXE,引用 来源: https://www.cnblogs.com/eudaimonia/p/15981078.html