其他分享
首页 > 其他分享> > 基本漏洞原理及防御(5)-XXE

基本漏洞原理及防御(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