-
-
[原创]xxe漏洞学习总结
-
发表于:
2015-8-31 23:47
3212
-
在对公司网站的监测分析时发现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。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)