一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Web安全之利用XSLT繼續(xù)擊垮XML

 隱者黑鷹88 2016-02-29

0x00 介紹

XSL

首先我們要說的是,這個XSLT應(yīng)該這么斷句:XSL-T。XSL指的是EXtensible Stylesheet Language,中文被很直白地翻譯成擴(kuò)展樣式表語言。這種語言和xml有莫大關(guān)系:XSL之于XML相當(dāng)于CSS之于HTML。HTML的每個元素都是預(yù)定義好的,比如用來定義表格,瀏覽器也知道怎么識別這個標(biāo)簽,此時CSS就能輕松地告訴瀏覽器該怎么顯示這個表格,然而由于XML里面的任何標(biāo)簽都可以由程序員自己定義,所以需要一種XSL語言來描述如何顯示xml文檔。 這是一篇web安全文章,所以我們還是討論web相關(guān)的xsl安全,而支持在web上調(diào)用的是xslt v1,所以我們只討論version1發(fā)生的故事。

XSLT

XSL包括三個部分:XSLT,XPath,XSL-FO。在安全領(lǐng)域,Xpath已經(jīng)有前人的研究 (xpath injection),而其他兩個幾乎無人問津。去年black hat黑客大會,終于有安全組織(IOActive)共享出自己的研究成果Abusing XSLT。 XSLT顧名思義,就是用來將XML轉(zhuǎn)換成XHTML或者是其他XML文檔。

當(dāng)用XML來生成其他文檔時(e.g. xhtml),XSL可以作為XML的引用。同時,XSL能夠內(nèi)嵌到XML中發(fā)揮作用。

既然談XSLT安全,就得考慮他們的應(yīng)用場景,這篇文章我們將從客戶端和服務(wù)端兩個方面分析XSLT實(shí)現(xiàn)的脆弱性。為了簡化討論,我們討論這幾個vendor的安全問題:

libxslt:libxslt為后端的Python,PHP,PERL,RUBY及前端的safari,opera,chrome提供XSL解析。

Transformiix:討論它是因?yàn)樗籪irefox調(diào)用,用來處理xsl

Microsoft:不用解釋也能明白,微軟自家的IE,肯定用的是自己的解析庫了。

0x01 攻擊模型

客戶/服務(wù)端:數(shù)字表示及運(yùn)算風(fēng)險

XSL對數(shù)學(xué)有自己的一套"獨(dú)特"的理解.我們先討論下它對大整數(shù)的處理:

Large Integers

比如

利用xslt繼續(xù)擊垮xml

以及它的樣式

利用xslt繼續(xù)擊垮xml

在諸如Xsltproc, Php, Perl, Ruby, Python, Safari, Chrome和Opera的libxslt系的處理軟件上,都會將上面這段xml解釋成這樣(chrome):

利用xslt繼續(xù)擊垮xml

問題很明顯了。

IOActive給出了他們研究調(diào)查的結(jié)果

利用xslt繼續(xù)擊垮xml

隨機(jī)數(shù)

同樣的,xsl的某些vendor對于隨機(jī)數(shù)的生成也是相當(dāng)寫意的。而這個粗糙的vendor竟然還是應(yīng)用最廣泛的libxslt,由于這個庫在生成隨機(jī)數(shù)的時候根本就沒有IV,所以每一次生成的隨機(jī)數(shù),都是根本不變的。

利用xslt繼續(xù)擊垮xml

讓我們將這個和PRG一起hi起來。。。

客戶端:Safari SOP繞過

Safari的同源策略同樣可能被這個xml的樣式語言被破壞。

前面提到過,safari早就支持xml和xhtml的轉(zhuǎn)換。然而利用XSLT中的document(), 我們能夠帶著相應(yīng)的cookies跨域讀取safari其他域內(nèi)的資源。 這樣一來,我們就能可以通過 document()->value-of()/copy-of()這個流程被竊取到其他網(wǎng)站的用戶信息,最終,通過JavaScript發(fā)送給攻擊者。

我復(fù)現(xiàn)了ioactive的poc,然而結(jié)果卻和IOActive不一樣:

在IOActive的報告中

利用xslt繼續(xù)擊垮xml

無疑成功取到了結(jié)果,成功BYPASS。

而我本地測試的時候卻在Safari控制塔得到這樣的提示

利用xslt繼續(xù)擊垮xml

無疑是被sop ban掉了。

是apple修復(fù)了,還是利用姿勢不對,我將POC放到了文章最后,大家可以下載下來研究。

服務(wù)端:任意文件讀取

XSLT文檔在執(zhí)行錯誤的時候回立即終止,它和他的兄弟XML類似,一小丁點(diǎn)錯誤就會拋出一個錯誤。然而錯誤信息也是能夠給攻擊者帶來一些有用的信息的。

XSLT提供了三個用來讀文件的方法

document(): 用來訪問另一個xml文檔內(nèi)的信息(剛剛的跨域中同樣用到)

include(): 用來將兩個樣式表合并

import(): 用來將一個樣式表覆蓋另一個

比如如下這個樣式表A

  1. <?xml-stylesheet type="text/xsl" href="2-9-Reading_Non-XML-Files.xsl"?> 
  2. <file>/etc/passwd</file> 

和B

  1. <xsl:stylesheet version="1.0" xmlns:xsl="http://www./1999/XSL/Transform"> <xsl:template match="/"> 
  2. <xsl:value-of select="document(file)"/> </xsl:template> 
  3. </xsl:stylesheet> 

當(dāng)B被解析時,會嘗試調(diào)用A表,而A表會試著用document()讀取/etc/passwd的內(nèi)容,很明顯這不是一個xml文檔,所以不可能讀取,幸運(yùn)的是在輸出的錯誤信息里面,我們可以看到目標(biāo)文本的第一行被輸出了。

利用xslt繼續(xù)擊垮xml

雖然只有第一行,但是第一行能夠獲取的銘感信息可不少了

/etc/passwd: Linux root password
/etc/shadow: Linux root password
.htpasswd: Apache password
.pgpass: PostgreSQL password

這次,xsltproc php perl ruby這四種語言的所有方法(document() ,import() ,include())都受到影響 。



    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    色婷婷国产熟妇人妻露脸| 日本99精品在线观看| 国产香蕉国产精品偷在线观看| 少妇成人精品一区二区| 中日韩美女黄色一级片| 国产精品香蕉在线的人| 91亚洲精品综合久久| 大香蕉伊人精品在线观看| 国产乱人伦精品一区二区三区四区| 国产精品一区二区传媒蜜臀| 丰满少妇被粗大猛烈进出视频| 在线观看免费午夜福利| 四十女人口红哪个色好看| 久久精品国产99精品最新| 久久精品国产亚洲av麻豆尤物| 日韩蜜桃一区二区三区| 国产精品免费视频专区| 一级片黄色一区二区三区| 福利在线午夜绝顶三级| 日本淫片一区二区三区| 免费精品一区二区三区| 亚洲伊人久久精品国产| 久久99青青精品免费| 亚洲一区二区三区四区| 国产韩国日本精品视频| 小黄片大全欧美一区二区| 久久国产精品热爱视频| 欧美区一区二在线播放| 国产精品欧美一区两区| 亚洲精品一区三区三区| 日韩国产亚洲欧美激情| 国产亚洲欧美一区二区| 久热久热精品视频在线观看| 中文字幕日韩一区二区不卡| 夫妻激情视频一区二区三区| 东京不热免费观看日本| 国产精品白丝一区二区| 国产成人精品综合久久久看| 好吊一区二区三区在线看| 日韩视频在线观看成人| 亚洲av熟女一区二区三区蜜桃|