首页
论坛
专栏
课程

分享:
&emsp;&emsp;XXE(XML External Entity Injection)即xml外部实体注入 &emsp;&emsp;当程序在解析XML输入时,允许引用外部实体,导致能够引用一个外部恶意文件,可导致执行系统命令、内网端口探测、文件读取,攻击内网服务、dos攻击等。以下用vwapp漏洞靶场进行读取文件的演示。 &emsp;&emsp;要对XXE漏洞进行验证,可以用BWAPP这款漏洞演示平台,buggy web Application是一个集成了web常见漏洞的开源web应用程序,目的是帮助安全爱好者及程序员研究安全漏洞,其中已经包含了100多种web漏洞 下载及安装教程: [BWAPP:一款非常好用的漏洞演示平台](http://www.freebuf.com/sectool/76885.html) 安装好之后,Choose your bug 选择 XML External Entity Attacks (XXE) ![](/upload/attach/201801/201801131634_xxmoc512cdudrwl.jpg) Set your security level: 选择low ![](/upload/attach/201801/201801131634_jngceerw5kpqc5w.jpg) 点击any bugs? 使用burpsuite抓包,在request中看到传输的xml数据: ![](/upload/attach/201801/201801131634_d2tcmduix0yaslj.jpg) ![](/upload/attach/201801/201801131634_klp5giwuxfq3si9.jpg) xxe-1.php页面在向xxe-2.php页面传输数据过程中,其中的xml数据是可控的,也就是说可以构造恶意数据进行传输,添加一个外部实体在XML数据中进行实体调用,从而进行XXE攻击。 payload: ``` <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE copyright [ <!ENTITY attack SYSTEM "file:///etc/passwd"> ]> <reset> <login>&attack;</login> <secret>xxx</secret> </reset> ``` ![](/upload/attach/201801/201801131635_4q3q9eln5zo8q7x.jpg) xxe的修复与防御: 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。

上一篇 :
下一篇 :
讨论 (1)
何枝可依丨 2018-5-30
 举报
学习一下
沪ICP备16048531号-1
沪公网安备 31011502006611号