国产精品香蕉在线观看网,亚洲欧美精品综合在线观看,亚洲不卡av一区二区无码不卡,亚洲日本精品国产第一区二区

移動(dòng)安全 安全管理 應(yīng)用案例 網(wǎng)絡(luò)威脅系統(tǒng)安全 應(yīng)用安全 數(shù)據(jù)安全 云安全
當(dāng)前位置: 主頁(yè) > 信息安全 > 系統(tǒng)安全 >

科普: XXE注入攻擊與防御

時(shí)間:2014-07-15 17:14來(lái)源:TuZhiJiaMi企業(yè)信息安全專(zhuān)家 點(diǎn)擊:
0×00 前言 XXE Injection即XML External Entity Injection,也就是XML外部實(shí)體注入攻擊.漏洞是在對(duì)非安全的外部實(shí)體數(shù)據(jù)進(jìn)行處理時(shí)引發(fā)的安全問(wèn)題. 在XML1.0標(biāo)準(zhǔn)里,XML文檔結(jié)構(gòu)里定義了實(shí)體(entity)這個(gè)概念
Tags系統(tǒng)安全(735)攻擊防御(5)XXE注入(1)  

  0×00 前言

  XXE Injection即XML External Entity Injection,也就是XML外部實(shí)體注入攻擊.漏洞是在對(duì)非安全的外部實(shí)體數(shù)據(jù)進(jìn)⾏行處理時(shí)引發(fā)的安全問(wèn)題.

XXE注入攻擊與防御

  在XML1.0標(biāo)準(zhǔn)⾥里,XML文檔結(jié)構(gòu)⾥里定義了實(shí)體(entity)這個(gè)概念.實(shí)體可以通過(guò)預(yù)定義在文檔中調(diào)用,實(shí)體的標(biāo)識(shí)符可訪問(wèn)本地或遠(yuǎn)程內(nèi)容.如果在這個(gè)過(guò)程中引入了”污染”源,在對(duì)XML文檔處理后則可能導(dǎo)致信息泄漏等安全問(wèn)題.

  0×01 威脅

  XXE漏洞目前還未受到廣泛關(guān)注,Wooyun上幾個(gè)XXE引起的安全問(wèn)題:

  pull-in任意文件遍歷/下載

  從開(kāi)源中國(guó)的某XXE漏洞到主站shell

  百度某功能XML實(shí)體注入

  百度某功能XML實(shí)體注入(二)

  借助XXE,攻擊者可以實(shí)現(xiàn)任意文件讀取,DOS拒絕服務(wù)攻擊以及代理掃描內(nèi)網(wǎng)等.

  對(duì)于不同XML解析器,對(duì)外部實(shí)體有不同處理規(guī)則,在PHP中默認(rèn)處理的函數(shù)為: xml_parse和simplexml_load xml_parse的實(shí)現(xiàn)方式為expat庫(kù),默認(rèn)情況不會(huì)解析外部實(shí)體,而simplexml_load默認(rèn)情況下會(huì)解析外部實(shí)體,造成安全威脅.除PHP外,在Java,Python等處理xml的組件及函數(shù)中都可能存在此問(wèn)題

  0×02 語(yǔ)法

  要寫(xiě)Payload,首先要對(duì)XML實(shí)體語(yǔ)法有一定了解

  XML中entity的定義語(yǔ)法為:

  

  如果要引用一個(gè)外部資源,可以借助各種協(xié)議 幾個(gè)例子:

  file:///path/to/file.ext http://url/file.ext php://filter/read=convert.base64-encode/resource=conf.php

  故構(gòu)造幾種簡(jiǎn)單的Payload模型如下:

   ]> &xxe;

  亦可讀取網(wǎng)站內(nèi)容

   ]> &xxe;

  如果包含文件失敗,可能是由于讀取php等文件時(shí)文件本身包含的<等字符.可以使用Base64編碼繞過(guò),如:

   ]> &xxe;

  0×03 攻擊

  借助XXE,有幾種可用且公開(kāi)的攻擊方式:

  拒絕服務(wù)

  POC

   ]> &lol9;

  POC中中先定義了lol實(shí)體,值為”lol”的字符串,后在下面又定義了lol2實(shí)體,lol2實(shí)體引用10個(gè)lol實(shí)體,lol3又引用了10個(gè)lol2實(shí)體的值,依此類(lèi)推,到了最后在lolz元素中引用的lol9中,就會(huì)存在上億個(gè)”lol”字符串此時(shí)解析數(shù)據(jù)時(shí)未做特別處理,即可能造成拒絕服務(wù)攻擊。

  此外還有一種可能造成拒絕服務(wù)的Payload,借助讀取/dev/random實(shí)現(xiàn).

  內(nèi)網(wǎng)信息

  借助各種協(xié)議如http,XXE可以協(xié)助掃描內(nèi)網(wǎng),可能可以訪問(wèn)到內(nèi)網(wǎng)開(kāi)放WEB服務(wù)的Server,并獲取其他信息

XXE注入攻擊與防御

  文件讀取

  最常規(guī)也是最有效的利用思路

   ]> &xxe;

  附上兩張截圖,實(shí)現(xiàn)文件讀取的過(guò)程

XXE注入攻擊與防御

XXE注入攻擊與防御

  0×04 防御

  1.檢查所使用的底層xml解析庫(kù),默認(rèn)禁止外部實(shí)體的解析

  2.使用第三方應(yīng)用代碼及時(shí)升級(jí)補(bǔ)丁

  3.同時(shí)增強(qiáng)對(duì)系統(tǒng)的監(jiān)控,防止此問(wèn)題被人利用

  對(duì)于PHP,由于simplexml_load_string函數(shù)的XML解析問(wèn)題出在libxml庫(kù)上,所以加載實(shí)體前可以調(diào)用這樣一個(gè)函數(shù)

  

  以進(jìn)行防護(hù),對(duì)于XMLReader和DOM方式解析,可以參考如下代碼:

  loadXML($badXml,LIBXML_DTDLOAD|LIBXML_DTDATTR); ?>>

------分隔線----------------------------

推薦內(nèi)容