-
-
[原创]xxe漏洞学习总结
-
发表于:
2015-8-31 23:47
3211
-
在对公司网站的监测分析时发现HTTP请求包数据中有这样一段代码:<?xml version="1.0"?> <!DOCTYPE foo [<!ELEMENT methodName ANY ><!ENTITY xxe SYSTEM "file:///etc/passwd" >]><methodCall> <methodName>&xxe;</methodName></methodCall>根据HTTP包头数据结构,发现这是一段攻击者添加的代码,是在以往分析中未曾看到过的漏洞注入信息,所以便查阅了一些资料,做了如下的一些学习总结。
该段代码属于XXE注入漏洞,全称为XML External Entity Injection,是XML外部实体注入攻击。是在对非安全的外部实体数据进⾏行处理时引发的安全问题。
本段代码为XXE本地文件包含漏洞的代码结构,除本地文件包含外,还可以利用XXE进行拒绝服务攻击、获取服务信息及执行系统命令等,可根据服务器返回的数据包判断是否存在该漏洞。
防护措施主要有两种:一是使用开发语言提供的禁用外部实体,如: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))。
二是过滤用户提交的XML数据,如:关键词:<!DOCTYPE和<!ENTITY,或者,SYSTEM和PUBLIC。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课