亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        XXE漏洞攻擊與防御研究

        2018-06-25 07:34:40邱永哲
        無(wú)線(xiàn)互聯(lián)科技 2018年6期
        關(guān)鍵詞:接口

        邱永哲

        摘 要:為提高Web應(yīng)用程序接口的安全性,文章介紹了一種基于XML外部實(shí)體的注入漏洞-XXE漏洞。通過(guò)列舉該漏洞的一些攻擊方式及其造成的危害,能對(duì)程序開(kāi)發(fā)者起到警示作用,最后給出了該漏洞的防御方法,對(duì)安全實(shí)現(xiàn)Web應(yīng)用程序的接口提供了參考。

        關(guān)鍵詞:Web應(yīng)用程序;接口;XML;注入漏洞

        當(dāng)前,伴隨著云計(jì)算的蓬勃發(fā)展,互聯(lián)網(wǎng)應(yīng)用正逐步邁向微服務(wù)化、容器化、接口化,互聯(lián)網(wǎng)入口也正在從傳統(tǒng)的PC向種類(lèi)繁多的智能設(shè)備和IoT設(shè)備轉(zhuǎn)移。因此,隨之帶來(lái)的網(wǎng)絡(luò)安全問(wèn)題也愈發(fā)嚴(yán)峻,引起眾多政府組織的關(guān)注[1]。2017年4月,開(kāi)放式Web應(yīng)用程序安全項(xiàng)目發(fā)布了2017年Web安全十大問(wèn)題,首次將“未受有效保護(hù)的應(yīng)用程序的調(diào)用接口( Application Programming Interface,API)”列入了OWASP Top 10,指出了應(yīng)用程序接口存在易受攻擊的風(fēng)險(xiǎn)。常見(jiàn)的應(yīng)用程序接口之間數(shù)據(jù)傳遞的格式有XML和JSON等,如果在這些傳遞數(shù)據(jù)的過(guò)程中未對(duì)接口進(jìn)行保護(hù),將造成服務(wù)器被攻擊的嚴(yán)重安全事故[2]。本文在XML的基礎(chǔ)上介紹了一種較為嚴(yán)重的注入漏洞-XXE漏洞,并針對(duì)該漏洞列舉了一些攻擊手段和防御方法,為應(yīng)用程序接口的安全實(shí)現(xiàn)與開(kāi)發(fā)提供了參考。

        1 XXE漏洞簡(jiǎn)介

        1.1 XML基礎(chǔ)

        XML是一種標(biāo)記語(yǔ)言,目前被廣泛地用來(lái)作為跨平臺(tái)之間交互數(shù)據(jù)的形式,主要針對(duì)不同的數(shù)據(jù)內(nèi)容,通過(guò)不同的格式化描述手段完成最終的形式表達(dá)[3]。XML能定義數(shù)據(jù)的結(jié)構(gòu)、存儲(chǔ)信息,例如將小張發(fā)送給小李的短信存儲(chǔ)為XML格式:

        <?xml version=" 1.0"?>

        小李

        小張

        你吃飯了嗎?我們一起去吃啊。

        如圖l所示,一個(gè)完整的XML文檔應(yīng)當(dāng)包括XML聲明、文檔元素,有時(shí)也包括文檔類(lèi)型定義(Document TypeDefinition, DTD)。

        DTD可以將它看作是一個(gè)或者多個(gè)XML文檔的模板,在這里可以定義XML文件中的元素、元素的屬性、元素的排列方式、元素包含的內(nèi)容等。DTD文檔類(lèi)型定義由4個(gè)關(guān)鍵字組成:元素(Element)、屬性(Attribute),實(shí)體( Entity)、注釋?zhuān)–omments)。XXE漏洞就是由DTD中的“實(shí)體”引發(fā)[4]。

        1.2 XXE漏洞原理

        在XML l.0標(biāo)準(zhǔn)當(dāng)中首次引入了“實(shí)體(Entity)”的概念,其作用類(lèi)似于Word當(dāng)中的“宏”。實(shí)體標(biāo)識(shí)符的定義方式分為兩種,一種是在DTD中內(nèi)部聲明實(shí)體:

        另一種是在DTD中引入外部實(shí)體:

        或者:

        其中,外部實(shí)體可以訪問(wèn)存儲(chǔ)在本地或者遠(yuǎn)程的文件,因此XML文檔在處理DTD定義中的外部實(shí)體時(shí),如不做好防護(hù),將產(chǎn)生信息泄露、SSRF等漏洞。這也被叫作是XXE(XML External Entity injection)漏洞,即XML外部實(shí)體注入。

        對(duì)于XXE漏洞的測(cè)試,可以使用DNS帶外查詢(xún)的方式來(lái)進(jìn)行驗(yàn)證,例如某服務(wù)器能處理XML格式的請(qǐng)求數(shù)據(jù),可將如下PoC發(fā)送給服務(wù)器進(jìn)行漏洞驗(yàn)證:

        <?xml version=" 1.0"?>

        ]>

        &b;:

        借助XXE漏洞,攻擊者能夠?qū)崿F(xiàn)對(duì)服務(wù)器的任意文件讀取、拒絕服務(wù)攻擊、代理掃描內(nèi)網(wǎng)等。但是不同的XML解析器對(duì)外部實(shí)體的處理規(guī)則不同,例如在PHP中常用來(lái)處理XML數(shù)據(jù)的函數(shù)有simplexml_load_string和expat庫(kù)中的xml_parse,xml_parse函數(shù)默認(rèn)情況下不會(huì)解析DTD中的外部實(shí)體,但simplexml_load_string默認(rèn)會(huì)解析外部實(shí)體導(dǎo)致XXE。除PHP以外,Java、Python平臺(tái)中處理XML的函數(shù)都可能會(huì)產(chǎn)生XXE漏洞。

        2 XXE漏洞利用

        2.1任意文件讀取

        任意文件讀取是XXE漏洞最常見(jiàn)的利用方式,本文在Linux平臺(tái)下搭建了基于docker容器的測(cè)試環(huán)境來(lái)測(cè)試演示該漏洞的攻擊過(guò)程[5]。

        首先使用docker容器創(chuàng)建Apache+PHP架構(gòu)服務(wù)器,隨后在服務(wù)器web目錄中創(chuàng)建包含有XXE漏洞的PHP文件simplexml_load_string.php,內(nèi)容為:

        <?php

        $data = file_get_content s ( 'php://input ' )

        $xml = simplexml_load_string($data);

        ?>

        即在該文件中使用PHP的simplexml_load_string函數(shù)來(lái)接收處理XML數(shù)據(jù)。接下來(lái)使用請(qǐng)求構(gòu)造工具Postman發(fā)送以下的XML請(qǐng)求:

        <?xml version=" 1.0"

        encoding=" utf-8"?>

        ]>

        &xxe;:

        請(qǐng)求響應(yīng)結(jié)果如圖2所示,可以看到這里使用file協(xié)議成功讀取到了服務(wù)器文件/etc/passwd,造成了服務(wù)器文件信息泄露,利用該方法還有可能讀取到服務(wù)器中存放的數(shù)據(jù)庫(kù)密碼、SVN服務(wù)器密碼等其他敏感信息。

        2.2服務(wù)端請(qǐng)求偽造

        在某些情況下服務(wù)器端存在XXE漏洞,但只能使用http協(xié)議通過(guò)帶外查詢(xún)檢測(cè),此時(shí)該XXE漏洞被稱(chēng)為BlindXXE。由于無(wú)法使用file協(xié)議進(jìn)行文件讀取,Blind XXE無(wú)法帶來(lái)更大的攻擊面,但是如果能結(jié)合SSRF服務(wù)器端請(qǐng)求偽造,往往能發(fā)揮至關(guān)重要的作用。

        例如某企業(yè)一臺(tái)處于網(wǎng)絡(luò)邊界的Apache服務(wù)器存在Blind XXE漏洞,該服務(wù)器使用雙網(wǎng)卡連接了企業(yè)內(nèi)部網(wǎng)絡(luò)10.4.10.0/24,企業(yè)內(nèi)網(wǎng)有一臺(tái)未授權(quán)即可訪問(wèn)的Redis服務(wù)器10.4.10.7,如果這臺(tái)服務(wù)器未做好SSRF防護(hù),那么此時(shí)就可以利用這枚Bind XXE漏洞直接發(fā)起對(duì)內(nèi)網(wǎng)Redis服務(wù)器的攻擊:

        <?xml version=" 1.0"?>

        <!ENTITY b SYSTEM“http://123.123.123.123/

        gopher.php”>

        ]>

        &b;:

        其中123.123.123.123為攻擊者的服務(wù)器,gopher.php的內(nèi)容為:

        <?php header(Location: gopher://10.4.10.7:6379/ 一*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%Oa$60%Od%Oa%Oa%Oa*/1 **** bash—i>&/dev/tcp/12 3.123.123.12 3/77 77

        0>&1%Oa%Oa%Od%Oa≠4%Od%Oa$ 6% Od% Oaconfig% Od% Oa$3%Od% Oadir% Od% Oa$16% Od%Oa/var/s pool/cron/% Od% Oa*4% Od% Oa$ 6% Od% Oaconfig%0d% Oa$3% Od% Oaset% Od% Oa$ 10% Od% Oadbfilename% Od%0a$ 4% Od%0 aroot%0d% Oa* 1%Od% Oa$4%0d% Oas ave%0d%0a)?>

        這時(shí)候攻擊者將直接獲得內(nèi)網(wǎng)Redis服務(wù)器的權(quán)限進(jìn)而對(duì)企業(yè)內(nèi)網(wǎng)進(jìn)行進(jìn)一步滲透??梢?jiàn)此時(shí)Blind XXE通過(guò)與SSRF的結(jié)合極大地拓展了攻擊面,為攻擊者進(jìn)一步的突破創(chuàng)造了條件。

        2.3拒絕服務(wù)攻擊

        由于XXE漏洞是由服務(wù)器端接收并處理用戶(hù)惡意數(shù)據(jù)造成,因此攻擊者還可以通過(guò)構(gòu)造復(fù)雜的邏輯來(lái)消耗服務(wù)器的運(yùn)算資源,最終導(dǎo)致拒絕服務(wù)攻擊。例如向一臺(tái)存在XXE漏洞的服務(wù)器發(fā)送如下的XML數(shù)據(jù):

        <?xml version="1.0"?>

        ]>

        <101z>&1019;

        2.4其他危害

        事實(shí)上,XXE漏洞除了上述一些攻擊利用方式之外,也可能會(huì)出現(xiàn)更多的攻擊方式。XXE漏洞在不同語(yǔ)言和平臺(tái)上可能支持的協(xié)議如圖3所示。

        而對(duì)于PHP應(yīng)用程序來(lái)說(shuō),如果安裝了更多PHP的擴(kuò)展例如expect協(xié)議,那么XXE漏洞將直接可以被轉(zhuǎn)化為命令執(zhí)行漏洞。

        3 XXE漏洞防御方法

        對(duì)XXE漏洞的防御要做到兩點(diǎn)。

        (l)過(guò)濾用戶(hù)提交的XML數(shù)據(jù),禁止出現(xiàn)<!DOCTYPE、 <!ENTITY. SYSTEM和PUBLIC等關(guān)鍵字。

        (2)在源代碼層面禁止使用外部實(shí)體。

        #PHP

        libxml disable_entity_loader(true);

        #Java

        DocumentbuilderFactory dbf =DocumentbuilderFactory.newlnstance();

        dbf setExpandEntityRe ferences (false);

        #Python

        from lxml import etree

        xmIData=etree.parse(xmISource. etree.XMLParse (resolve_entities=False》

        [參考文獻(xiàn)]

        [1]維基百科.XML[EB/OL].( 2017-12-15)[2018-02-08].https://zh.wikipedia.org/wiki/XML.

        [2]維基百科.文檔類(lèi)型定義[EB/OL]( 2017-12-26) [2018-02-08] .https://zh.wikipedia.org/、viki/文檔類(lèi)型定義

        [3]Timothy D.Mo-gan, Omar AI Ibrahim.XML Schema. DTD. and Entity Attacks -A Compendium of Known Techniques[EB/OL]( 2017-

        10~25)[2018 - 02- 08].https://、vww.vsecurity.c om//download/p aper s/XMLDTDEntit yAttacks .pdf.

        [4]維基百科.Billion laughs attack[EB/OL].( 2017-11-15) [2018-02-08] .https://enrvikipedia.org/、viki/Billion

        laughs

        attack.

        [5]騰訊安全應(yīng)急響應(yīng)中心.未知攻焉知防-XXE漏洞攻防[EB/OL]( 2018-01-10) [2018-02-08] .https://security.tencent.com/index.p hp/blog/

        msg/69.

        猜你喜歡
        接口
        現(xiàn)場(chǎng)采購(gòu)代表與總部及現(xiàn)場(chǎng)各部門(mén)的接口關(guān)系
        某電站工程設(shè)計(jì)管理與施工、質(zhì)量控制接口關(guān)系研究
        脫硝數(shù)據(jù)傳輸系統(tǒng)遠(yuǎn)程無(wú)線(xiàn)監(jiān)控技術(shù)的研發(fā)與應(yīng)用
        中文信息(2016年10期)2016-12-12 12:56:55
        西門(mén)子SPPA—T3000在委內(nèi)瑞拉燃機(jī)電廠中的應(yīng)用與接口
        居家環(huán)境監(jiān)測(cè)系統(tǒng)研究
        中俄網(wǎng)絡(luò)語(yǔ)言編碼接口問(wèn)題的研究
        科技視界(2016年3期)2016-02-26 10:14:32
        亚洲一区二区国产激情| 亚洲—本道中文字幕久久66| 91精品国产综合久久青草| 特级国产一区二区三区| 粉嫩av国产一区二区三区| 久久久久久久岛国免费观看| 综合无码一区二区三区四区五区 | 国产成人精品无码播放| 美女窝人体色www网站| 国产三级国产精品国产专播| 亚洲av无码乱码国产一区二区| 欧美亚洲日韩国产人成在线播放| 日本专区一区二区三区| 小黄片免费在线播放观看| 午夜爽爽爽男女免费观看影院| 少妇寂寞难耐被黑人中出| 中文字幕久久精品波多野结百度 | 国产精品永久在线观看| 久久无码av三级| 色婷婷丁香综合激情| 国产天堂av在线播放资源| 亚洲av日韩av永久无码下载| 国产肉丝袜在线观看| av天堂线上| 中文字幕在线乱码亚洲| 国产成+人+综合+亚洲欧美丁香花| 免费国产交换配乱淫| 91国产超碰在线观看| 一区二区三区视频在线观看免费 | 五十路熟女一区二区三区| 秋霞国产av一区二区三区| 狠狠躁夜夜躁AV网站中文字幕| 国产一区二区三区乱码在线| 美女国产毛片a区内射| 精产国品一二三产区m553麻豆| 欧美精品久久久久久三级| 亚洲第一页视频在线观看| 中国老熟女重囗味hdxx| 免费99视频| 日本免费三级一区二区| 日本一区二区在线播放|