新聞中心
KCon Web安全大會是一個交流前沿、邊緣、主流的Web安全技術(shù)、技巧、案例的開放安全會議。大會上天融信阿爾法實驗室張晨做了《Having Fun with XML Hacking》議題演講,內(nèi)容非常精彩。本文把演講的內(nèi)容稍加整理,與大家分享。

東至網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計等網(wǎng)站項目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)公司于2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運(yùn)維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
XML的全稱是eXtensible Markup Language,意思是可擴(kuò)展的標(biāo)記語言,它是標(biāo)準(zhǔn)通用標(biāo)記語言(Standard Generalized Markup Language,SGML)的一個子集。
在80年代早期,IBM提出在各文檔之間共享一些相似的屬性,例如字體大小和版面。IBM設(shè)計了一種文檔系統(tǒng),通過在文檔中添加標(biāo)記,來標(biāo)識文檔中的各種元素,IBM把這種標(biāo)識語言稱作通用標(biāo)記語言(Standard Generalized Markup Language,SGML),即GML。經(jīng)過若干年的發(fā)展,1984年國際標(biāo)準(zhǔn)化阻止(ISO)開始對此提案進(jìn)行討論,并于1986年正式發(fā)布了為生成標(biāo)準(zhǔn)化文檔而定義的標(biāo)記語言標(biāo)準(zhǔn)(ISO 8879),稱為新的語言SGML,即標(biāo)準(zhǔn)通用標(biāo)記語言。
一個簡單的XML文件示例,一個XML文件由XML聲明、文檔類型定義和文檔元素組成。
那么什么是文檔類型定義呢?文檔類型定義,也叫DTD(Document Type Definition),可定義合法的XML文檔構(gòu)建模塊。它使用一系列合法的元素來定義文檔的結(jié)構(gòu),DTD 可被成行地聲明于 XML 文檔中,也可作為一個外部引用。
DTD文檔的聲明及引用
內(nèi)部DTD文檔
外部DTD文檔
內(nèi)外部DTD文檔結(jié)合
定義內(nèi)容
-]>
XML被設(shè)計用來存儲和傳輸數(shù)據(jù),任何平臺上的程序都可以通過使用XML解析器來處理XML數(shù)據(jù),XML的使用范圍非常廣泛,不僅僅是web應(yīng)用,還包括數(shù)據(jù)庫軟件、瀏覽器等等。既然XML的覆蓋面這么廣,那么如果出現(xiàn)安全問題也是相當(dāng)可怕的。而且很多軟件都是使用的同一款XML解析庫,如果這套解析庫存在漏洞,那么無疑又將影響的范圍擴(kuò)大了。
下面這張圖很清晰的描述了程序在處理XML時容易出現(xiàn)問題的點(diǎn),我們逐步來看:應(yīng)用先將原始數(shù)據(jù)交給XML生成器,生成XML數(shù)據(jù),然后將生成后的XML數(shù)據(jù)提交到web服務(wù)器,web服務(wù)器接收到XML數(shù)據(jù)后,將XML數(shù)據(jù)交給XML解析器,由XML解析器完成對XML數(shù)據(jù)的解析后把數(shù)據(jù)再返回給應(yīng)用。在整個數(shù)據(jù)處理流程中,XML生成器和XML解析器這兩個點(diǎn)是最容易出現(xiàn)問題的。
在XML解析的過程中,最常見的有三種漏洞:
◆拒絕服務(wù)漏洞
◆XML注入
◆XML外部實體注入
XML拒絕服務(wù)漏洞
我們逐個分析,先來看拒絕服務(wù)攻擊。
下圖是一個典型拒絕服務(wù)攻擊的payload:
可以看到,payload中先定義了lol實體,值為“l(fā)ol”字符串,然后下面又定義了lol2實體,在lol2實體中,引用10個lol實體,也就是說現(xiàn)在lol2的值是10個“l(fā)ol”字符串,下面的lol3又引用了10個lol2實體的值,現(xiàn)在lol3的值是100個“l(fā)ol”字符串,依此類推,到了最后在lolz元素中引用的lol9中,就會存在上億個“l(fā)ol”字符串,如果程序在解析數(shù)據(jù)時沒有做特別的處理,那么極有可能對程序造成拒絕服務(wù)攻擊。
XML注入漏洞
再來看XML注入的例子:
例圖這是一個標(biāo)準(zhǔn)的xml文件,即將被提交到web服務(wù)器中,我們假設(shè)這是一個存有訂單信息的xml文件,其中price的值不可控,quantity和address項的值可控,可以由用戶自由輸入,那么這時,攻擊者可以實施xml注入攻擊,在quantity的值中構(gòu)造"


咨詢
建站咨詢
