XXE最后的尾巴
知道了XXE的漏洞原理,以及簡單的利用方法,漏洞危害后;就應該通過案例來感受XXE造成的危害,引起我們的反思,該如何進行防御,安全的開發(fā),以及知識點的擴充。
XXE漏洞利用的一些小細節(jié)的擴充
在上篇中,進行漏洞任意文件讀取危害說明時的關鍵代碼<!ENTITY content SYSTEM "./1.txt">,其中./1.txt才是來控制文件讀取的指定作用,其中默認使用了file協(xié)議。對于不同的程序支持的協(xié)議不一樣。

對于不懂的協(xié)議,自己也去搜索了一番,發(fā)現(xiàn)了例如PHP file://等封裝協(xié)議
XXE實際漏洞利用案例
2018年文章 微信支付XXE漏洞:XXE in WeChat Pay Sdk (WeChat leave a backdoor on merchant websites)
TSRC: Web程序調(diào)用該office軟件來獲取office文檔內(nèi)容后提供在線預覽功能觸發(fā)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的觸發(fā)本質(zhì)就是外部實體的使用,關鍵點也就是外部和DTD實體,所以主要有兩個思路
- 禁止外部實體使用(開發(fā)角度),同時也是代碼審計的關鍵點;
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環(huán)境下XXE漏洞練習平臺
最后強烈推薦:建議先學習Docker搭建靶場,可以嘗試對上面平臺使用Docker搭建實現(xiàn)
目前提供 Docker搭建Pikachu靶場教程
XXE檢測工具介紹
XXEinjector:一款功能強大的自動化XXE注入工具。
RequestBin:RequestBin檢測工具
HookBin:HookBin檢測工具
也可以使用其他web漏洞掃描器
XML的其他漏洞
1) XEE:XML Entity Expansion,主要試圖通過消耗目標程序的服務器環(huán)境來進行DOS攻擊;
2) XSLT:可擴展樣式表轉(zhuǎn)換漏洞,XSLT是XML的推薦樣式表語言;
3) XPath注入漏洞,XPath用于瀏覽XML文檔中的元素和屬性,XSLT使用XPath來查找XML文檔中的信息。
主要參考文獻:
- VSR2014年度報告 : XMLDTDEntityAttacks.pdf
- OWASP報告 XML External Entity Attacks (XXE).ppt
其他推薦:
第一篇:XML簡介(1)--頭部聲明
第二篇:XML編寫(2)--語法要求
第三篇:XML規(guī)范(3)--DTD限制
第四篇:XML引用(4)--DTD應用
第五篇:XXE基礎(1)--實體類別
第六篇:XXE利用(2)--漏洞實現(xiàn)