XXE最后的尾巴
知道了XXE的漏洞原理,以及简单的利用方法,漏洞危害后;就应该通过案例来感受XXE造成的危害,引起我们的反思,该如何进行防御,安全的开发,以及知识点的扩充。
XXE漏洞利用的一些小细节的扩充
在上篇中,进行漏洞任意文件读取危害说明时的关键代码<!ENTITY content SYSTEM "./1.txt">
,其中./1.txt才是来控制文件读取的指定作用,其中默认使用了file协议。对于不同的程序支持的协议不一样。
对于不懂的协议,自己也去搜索了一番,发现了例如PHP file://等封装协议
XXE实际漏洞利用案例
2018年文章 微信支付XXE漏洞:XXE in WeChat Pay Sdk (WeChat leave a backdoor on merchant websites)
TSRC: Web程序调用该office软件来获取office文档内容后提供在线预览功能触发XXE任意文件读取
XXE exp公布情况
exploit-db XXE漏洞公布情况
XXE漏洞公布情况
CVE-2019-17554:Apache Olingo XXE漏洞
CNVD-2019-30895 :UsualToolCMS前台存在XXE注入漏洞
CNVD-2018-12508:第三方支付平台JAVA SDK存在XXE漏洞
等等.....
XXE漏洞防御
思路:XXE的触发本质就是外部实体的使用,关键点也就是外部
和DTD实体
,所以主要有两个思路
- 禁止外部实体使用(开发角度),同时也是代码审计的关键点;
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))
ASP.NET
应当设置(.NET 4.5.2版本之前)
xmlDoc.XmlResolver = null;
2.DTD实体部分声明进行过滤处理(关键字过滤)
对实体声明中必不可少的SYSTEM
,PUBLIC
,&
,<!ENTITY
,<!DOCTYPE
等过滤处理
XXE漏洞练习平台推荐
XXE-lab: XXE漏洞实验室
pikachu: pikachu漏洞练习平台
XXE - PHP Audit Basic: PHP环境下XXE漏洞练习平台
最后强烈推荐:建议先学习Docker搭建靶场,可以尝试对上面平台使用Docker搭建实现
目前提供 Docker搭建Pikachu靶场教程
XXE检测工具介绍
XXEinjector:一款功能强大的自动化XXE注入工具。
RequestBin:RequestBin检测工具
HookBin:HookBin检测工具
也可以使用其他web漏洞扫描器
XML的其他漏洞
1) XEE:XML Entity Expansion,主要试图通过消耗目标程序的服务器环境来进行DOS攻击;
2) XSLT:可扩展样式表转换漏洞,XSLT是XML的推荐样式表语言;
3) XPath注入漏洞,XPath用于浏览XML文档中的元素和属性,XSLT使用XPath来查找XML文档中的信息。
主要参考文献:
- VSR2014年度报告 : XMLDTDEntityAttacks.pdf
- OWASP报告 XML External Entity Attacks (XXE).ppt
其他推荐:
第一篇:XML简介(1)--头部声明
第二篇:XML编写(2)--语法要求
第三篇:XML规范(3)--DTD限制
第四篇:XML引用(4)--DTD应用
第五篇:XXE基础(1)--实体类别
第六篇:XXE利用(2)--漏洞实现
网友评论