自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

XML上的安全不容忽視

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

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

XML的全稱是eXtensible Markup Language,意思是可擴(kuò)展的標(biāo)記語(yǔ)言,它是標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言(Standard Generalized Markup Language,SGML)的一個(gè)子集。

在80年代早期,IBM提出在各文檔之間共享一些相似的屬性,例如字體大小和版面。IBM設(shè)計(jì)了一種文檔系統(tǒng),通過(guò)在文檔中添加標(biāo)記,來(lái)標(biāo)識(shí)文檔中的各種元素,IBM把這種標(biāo)識(shí)語(yǔ)言稱作通用標(biāo)記語(yǔ)言(Standard Generalized Markup Language,SGML),即GML。經(jīng)過(guò)若干年的發(fā)展,1984年國(guó)際標(biāo)準(zhǔn)化阻止(ISO)開(kāi)始對(duì)此提案進(jìn)行討論,并于1986年正式發(fā)布了為生成標(biāo)準(zhǔn)化文檔而定義的標(biāo)記語(yǔ)言標(biāo)準(zhǔn)(ISO 8879),稱為新的語(yǔ)言SGML,即標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言。

一個(gè)簡(jiǎn)單的XML文件示例,一個(gè)XML文件由XML聲明、文檔類型定義和文檔元素組成。

XML上的安全不容忽視

那么什么是文檔類型定義呢?文檔類型定義,也叫DTD(Document Type Definition),可定義合法的XML文檔構(gòu)建模塊。它使用一系列合法的元素來(lái)定義文檔的結(jié)構(gòu),DTD 可被成行地聲明于 XML 文檔中,也可作為一個(gè)外部引用。

DTD文檔的聲明及引用

內(nèi)部DTD文檔

<!DOCTYPE 根元素  [定義內(nèi)容]>

外部DTD文檔

<!DOCTYPE 根元素  SYSTEM "DTD文件路徑">

內(nèi)外部DTD文檔結(jié)合

<!DOCTYPE 根元素  SYSTEM "DTD文件路徑" [

定義內(nèi)容

-]>

XML被設(shè)計(jì)用來(lái)存儲(chǔ)和傳輸數(shù)據(jù),任何平臺(tái)上的程序都可以通過(guò)使用XML解析器來(lái)處理XML數(shù)據(jù),XML的使用范圍非常廣泛,不僅僅是web應(yīng)用,還包括數(shù)據(jù)庫(kù)軟件、瀏覽器等等。既然XML的覆蓋面這么廣,那么如果出現(xiàn)安全問(wèn)題也是相當(dāng)可怕的。而且很多軟件都是使用的同一款XML解析庫(kù),如果這套解析庫(kù)存在漏洞,那么無(wú)疑又將影響的范圍擴(kuò)大了。

下面這張圖很清晰的描述了程序在處理XML時(shí)容易出現(xiàn)問(wèn)題的點(diǎn),我們逐步來(lái)看:應(yīng)用先將原始數(shù)據(jù)交給XML生成器,生成XML數(shù)據(jù),然后將生成后的XML數(shù)據(jù)提交到web服務(wù)器,web服務(wù)器接收到XML數(shù)據(jù)后,將XML數(shù)據(jù)交給XML解析器,由XML解析器完成對(duì)XML數(shù)據(jù)的解析后把數(shù)據(jù)再返回給應(yīng)用。在整個(gè)數(shù)據(jù)處理流程中,XML生成器和XML解析器這兩個(gè)點(diǎn)是最容易出現(xiàn)問(wèn)題的。

XML上的安全不容忽視

在XML解析的過(guò)程中,最常見(jiàn)的有三種漏洞:

◆拒絕服務(wù)漏洞

◆XML注入

◆XML外部實(shí)體注入

XML拒絕服務(wù)漏洞

我們逐個(gè)分析,先來(lái)看拒絕服務(wù)攻擊。

下圖是一個(gè)典型拒絕服務(wù)攻擊的payload:

XML上的安全不容忽視

可以看到,payload中先定義了lol實(shí)體,值為“lol”字符串,然后下面又定義了lol2實(shí)體,在lol2實(shí)體中,引用10個(gè)lol實(shí)體,也就是說(shuō)現(xiàn)在lol2的值是10個(gè)“lol”字符串,下面的lol3又引用了10個(gè)lol2實(shí)體的值,現(xiàn)在lol3的值是100個(gè)“lol”字符串,依此類推,到了最后在lolz元素中引用的lol9中,就會(huì)存在上億個(gè)“lol”字符串,如果程序在解析數(shù)據(jù)時(shí)沒(méi)有做特別的處理,那么極有可能對(duì)程序造成拒絕服務(wù)攻擊。

XML注入漏洞

再來(lái)看XML注入的例子:

XML上的安全不容忽視

例圖這是一個(gè)標(biāo)準(zhǔn)的xml文件,即將被提交到web服務(wù)器中,我們假設(shè)這是一個(gè)存有訂單信息的xml文件,其中price的值不可控,quantity和address項(xiàng)的值可控,可以由用戶自由輸入,那么這時(shí),攻擊者可以實(shí)施xml注入攻擊,在quantity的值中構(gòu)造"<!--",注釋符,然后在address的值中先閉合前面的注釋符,然后再重新根據(jù)原xml文件結(jié)構(gòu)重新構(gòu)造xml文件,這時(shí)候price元素的值也是可以由攻擊者隨意構(gòu)造的,如下圖:

XML上的安全不容忽視

可以看到,我們重新構(gòu)造出了一個(gè)xml文件,這時(shí)候price的值由原來(lái)的25變成了0.01,也就是說(shuō),訂單的價(jià)格被成功的修改了。

XML外部實(shí)體注入

在眾多xml漏洞中,最容易出現(xiàn)的就是XXE(XML_External_Entity),也就是XML外部實(shí)體注入攻擊。在文檔類定定義部分,可以引用外部的dtd文件,dtd文件的路徑可以是URL地址,也可以使用多種協(xié)議,所以在這里會(huì)出現(xiàn)安全問(wèn)題。

XML上的安全不容忽視

上圖為一個(gè)標(biāo)準(zhǔn)的XXE Payload,可以看到,這里引用的外部實(shí)體為file:///etc/passwd,如果XML解析庫(kù)在解析到這里時(shí)允許引用外部實(shí)體,那么程序?qū)?huì)請(qǐng)求這個(gè)地址,并將內(nèi)容返回。

對(duì)于XXE漏洞,我們還有更多的利用技巧,比如某些場(chǎng)景下,我們需要在一次請(qǐng)求中讀取多個(gè)文件,那么可以用下面的payload來(lái)實(shí)現(xiàn):

XML上的安全不容忽視

XXE不光可以讀取文件,還可以通過(guò)SSRF來(lái)完成更深入的攻擊。SSRF(Server Side Request Forgery)被稱為服務(wù)端請(qǐng)求偽造攻擊,與CSRF不同的是它的請(qǐng)求是由服務(wù)器發(fā)起的,并不是由客戶端發(fā)起。

XML上的安全不容忽視

通過(guò)這張圖我們可以看到,攻擊者先發(fā)送包含payload的請(qǐng)求到前端,前端接到數(shù)據(jù)后將xml數(shù)據(jù)發(fā)送到后端的xml解析器進(jìn)行解析,這時(shí)payload被執(zhí)行,payload執(zhí)行后,結(jié)果可能會(huì)直接被后端返回給攻擊者,也可能由payload中所指向的服務(wù)器返回給攻擊者。

更常見(jiàn)的攻擊場(chǎng)景如下:

攻擊者想要訪問(wèn)主機(jī)B上的服務(wù),但是由于存在防火墻的原因無(wú)法直接訪問(wèn),這是可以借助主機(jī)A來(lái)發(fā)起SSRF攻擊,通過(guò)主機(jī)A向主機(jī)B發(fā)起請(qǐng)求,從而完成攻擊。

SSRF攻擊常用的payload如下:

XML上的安全不容忽視

Portscan實(shí)體是通過(guò)http協(xié)議來(lái)訪問(wèn)主機(jī)的某些端口,通過(guò)返回信息來(lái)判斷端口是否開(kāi)放。Smb實(shí)體是訪問(wèn)內(nèi)網(wǎng)中的共享資源,Sqli實(shí)體是對(duì)內(nèi)網(wǎng)中web服務(wù)器發(fā)起sql注入攻擊,Syslog實(shí)體可以像內(nèi)網(wǎng)syslog服務(wù)器添加垃圾日志。

除了這些,還可以擴(kuò)展思路,比如對(duì)內(nèi)網(wǎng)中的zabbix_agent進(jìn)行攻擊(在外部實(shí)體引用 gopher://ip:10050/1system.run[ls]),即可在該主機(jī)執(zhí)行系統(tǒng)命令。

在PHP環(huán)境下,還可以利用封裝協(xié)議來(lái)直接執(zhí)行系統(tǒng)命令,如expect://。也可以用php://來(lái)讀取文件內(nèi)容。

除了這些,還支持其他很多協(xié)議,可以自由發(fā)揮編寫(xiě)payload。

隨著應(yīng)用越來(lái)越龐大、邏輯越來(lái)越復(fù)雜,有些需求要用到XML來(lái)實(shí)現(xiàn),但很多開(kāi)發(fā)人員還沒(méi)有充分意識(shí)到在使用和解析XML文件時(shí)可能會(huì)導(dǎo)致安全問(wèn)題出現(xiàn),XML漏洞也是一個(gè)比較好的研究方向。

天融信阿爾法實(shí)驗(yàn)室作為北京天融信前沿安全研究部門,在安全漏洞研究發(fā)掘、最新Web安全及瀏覽器安全問(wèn)題研究、軟件逆向研究等諸多領(lǐng)域積累了大量的成果,獲得了國(guó)際CVE漏洞編號(hào)、中國(guó)國(guó)家漏洞庫(kù)漏洞編號(hào)的各類型原創(chuàng)漏洞證書(shū)。在所發(fā)現(xiàn)的不同類型的安全漏洞中,不乏大量的國(guó)產(chǎn)軟件,阿爾法實(shí)驗(yàn)室都在第一時(shí)間通知了軟件廠商,并提供修補(bǔ)建議,為保障國(guó)產(chǎn)軟件的安全性做出了貢獻(xiàn)。同時(shí)作為國(guó)家不同部委類型單位的技術(shù)服務(wù)支撐成員,天融信阿爾法實(shí)驗(yàn)室為國(guó)家相關(guān)部門提供了不同類型技術(shù)支持,在安全漏洞研究、安全趨勢(shì)研究判斷、惡意非法軟件分析以及移動(dòng)設(shè)備安全等技術(shù)領(lǐng)域做出了突出的貢獻(xiàn)。

責(zé)任編輯:藍(lán)雨淚 來(lái)源: 51CTO.com
相關(guān)推薦

2010-06-21 17:46:53

2011-12-30 14:35:20

2014-08-27 16:24:05

2018-04-08 16:00:34

私有云虛擬化網(wǎng)絡(luò)架構(gòu)

2013-07-09 16:39:24

2011-05-13 14:12:00

2016-07-21 10:25:54

2011-08-15 13:13:26

2013-01-04 14:35:27

Windows Ser

2011-07-29 12:25:36

2015-10-08 09:41:51

2013-03-22 10:31:59

2013-01-04 14:55:10

Windows Ser微軟云平臺(tái)

2009-09-10 08:43:34

虛擬化部署安全問(wèn)題

2010-05-18 09:58:12

2009-02-01 08:49:24

2011-07-26 15:01:09

2016-12-02 13:16:59

2015-10-14 11:29:17

數(shù)據(jù)中心細(xì)節(jié)

2022-04-17 14:59:43

云成本FinOps云成本優(yōu)化
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)