真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

XXE漏洞原理是什么

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)XXE漏洞原理是什么,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)是一家專業(yè)提供濱湖企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、做網(wǎng)站、H5網(wǎng)站設(shè)計、小程序制作等業(yè)務(wù)。10年已為濱湖眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。

簡介

XXE全稱XML External Entity InjectionXML在引入外部實體的時候完成注入攻擊稱為XXE。那么它帶來的危害有那些:

1.DOS攻擊

2.SSRF攻擊

3.使用file協(xié)議讀取任意文件

4.端口探測

5.執(zhí)行系統(tǒng)命令

1.什么是XML

XML是一種用來傳輸和存儲數(shù)據(jù)的可擴展標(biāo)記語言。

XML用于傳輸和數(shù)據(jù)存儲。HTML用于顯示數(shù)據(jù)。

Dtd文檔類型定義是一套為了進行程序見的數(shù)據(jù)交換而建立的關(guān)于標(biāo)記符的語法規(guī)則。

1.1 xml語法

語法規(guī)則

1.所有的XML元素都必須有一個關(guān)閉標(biāo)簽

2.XML標(biāo)簽對大小寫敏感

3.XML必須正確嵌套

4.XML屬性值必須加引號“”

5.實體引用:在標(biāo)簽屬性,或者對應(yīng)位置值可能出現(xiàn)<>符號,這些在對應(yīng)的xml中都是特殊含義的,那么必須使用對應(yīng)html的實體對應(yīng)的表示:例如,if salary < 1000 then 如果把這個“<”放在元素中,那么解析器會把他當(dāng)成新元素的開始,就會發(fā)生報錯。為了避免這個錯誤使用實體引用來代替if salary &lt; 1000 then

1.2 xml結(jié)構(gòu)

XML 文檔聲明,在文檔的第一行

XML 文檔類型定義,即DTD,XXE 漏洞所在的地方

XML 文檔元素

1.3 XML DTD(文檔類型定義)

DTD的作用就是用來定義XML文檔的合法構(gòu)建模塊DTD可以在XML文檔內(nèi)聲明,也可以在外部引用。

內(nèi)部聲明DTD  
外部聲明DTD  

或者

實例1.1:內(nèi)部聲明DTD

                       //xml聲明
    //定義了note元素,并且note元素下面有4個子元素
              //定義了子元素to,后面的(#PCDATA)意思是to元素里面的字符串內(nèi)容不會被解析



]>                                   //從,是DTD文檔的定義 

George
John
Reminder
Don't forget the meeting!
                                     //后面這部分就是XML文件內(nèi)容

實例1.2:外部聲明DTD




George
John
Reminder
Don't forget the meeting!

這個note.dtd的內(nèi)容就是:


              



]>

DTD實體DTD實體是用于定義引用普通文本或特殊字符的快捷方式的變量,可以內(nèi)部聲明或外部引用。

內(nèi)部聲明實體 
引用外部實體 
或者 

實例2.1:內(nèi)部聲明實體

   ]>  &hack3r; 

實例2.2:外部聲明實體外部實體用來引用外部資源,有兩個關(guān)鍵字SYSTEM和PUBLIC兩個,表示實體來自本地計算機還是公共計算機,外部實體的利用會用到協(xié)議如下:

不同語言下支持的協(xié)議:

XXE漏洞原理是什么

   ]>  &hack3r; 

參數(shù)實體參數(shù)實體只能在DTD中定義和使用實體,一般的話引用時%作為前綴。而內(nèi)部實體是指在一個實體中定義的另一個實體,說白了就是嵌套的。


實例:



%xxe;]>
&evil;

而里面引用的外部實體evil.dtd的內(nèi)容:

正因為外部實體支持的http,file等協(xié)議,那么就有可能通過以用外部實體進行遠程文件讀取。

2.xxe漏洞危害

綜上所述,xxe漏洞就是允許了引入外部實體的加載,從而導(dǎo)致程序在解析xml的時候,可以加載惡意外部文件,從而造成文件讀取等危害。

利用

2.1 文件讀?。ㄓ谢仫@)

xxe-php靶場演示:

XXE漏洞原理是什么

我們先看一下dologin.php代碼

XXE漏洞原理是什么

libxml_disable_entity_loader(false);函數(shù)意思就是不禁止外部實體加載;file_get_contents()函數(shù),把整個文件讀入一個字符串中。LIBXML_NOENT: 將 XML 中的實體引用 替換 成對應(yīng)的值LIBXML_DTDLOAD: 加載 DOCTYPE 中的 DTD 文件 通過php://input協(xié)議獲取POST請求數(shù)據(jù),然后把數(shù)據(jù)通過file_get_contents()函數(shù),放在$xmlfile變量中。

我們先抓包,看一下

XXE漏洞原理是什么

傳輸類型是xml,通過post傳輸?shù)臄?shù)據(jù)。然后看一下返回的響應(yīng)包

XXE漏洞原理是什么

發(fā)現(xiàn),響應(yīng)包返回的信息中,有username的值admin。

那么我么嘗試構(gòu)造payload來構(gòu)造外部實體admin處的注入,利用協(xié)議讀取文件

網(wǎng)站在window系統(tǒng)上搭建:

 ]>
&xxes;admin
網(wǎng)站在linux系統(tǒng)上搭建:

 ]>
&xxes;admin

XXE漏洞原理是什么

成功讀取了c盤下win.in文件。

這種情況是提交請求后,響應(yīng)有回顯的時候。但是有時候沒有回顯的時候就可以使用Blind xxe。

2.2 文件讀?。o回顯blind xxe)

blind xxe雖然不回顯信息,但是可以利用file協(xié)議來讀取文件。對于這種情況,就可以用到參數(shù)實體了。用下面這個靶場演示一下

靶場地址:https://www.vulnspy.com/phpaudit-xxe/

在輸入框輸入構(gòu)造的xxe代碼,抓取請求包

XXE漏洞原理是什么

我們看到將我們提交的xxe代碼,放在date里面,響應(yīng)包沒有返回我們要查詢的信息,只有ok輸出在頁面上。

XXE漏洞原理是什么

對于沒有回顯,就要利用http協(xié)議將請求發(fā)送到遠程 ">

XXE漏洞原理是什么

然后在服務(wù)其上監(jiān)聽8081端口

XXE漏洞原理是什么

然后,我們將構(gòu)造的xxe代碼,輸入到輸入框并提交


%remote;%int;%send;
]>

XXE漏洞原理是什么

然后在vps看一下監(jiān)聽

XXE漏洞原理是什么

出現(xiàn)base64加密的數(shù)據(jù),用base64解密內(nèi)容:

XXE漏洞原理是什么

成功讀取了passwd文件內(nèi)容。

上面構(gòu)造的payload,調(diào)用了%remote ,%int ,%send三個參數(shù)實體。一次利用順序就是通過%remote調(diào)用遠程服務(wù)器vps上,我們常見的evil.dtd文件,然后%int調(diào)用了evil.dtd中的%file,而%file就會獲取服務(wù)讀取敏感文件,然后將%file的結(jié)果放到%send之后,然后我們調(diào)用%send,把讀取的數(shù)據(jù)以get請求發(fā)送到服務(wù)器vps上,這就是外帶數(shù)據(jù)的結(jié)果。

2.3 端口探測

正因為xml外部實體攻擊利用的http協(xié)議,也就是說利用該請求探測內(nèi)網(wǎng)端口的存活,從而可以進行ssrf攻擊。構(gòu)造代碼:


 
]>
&xxes;admin

2.4命令執(zhí)行

前提是:在php環(huán)境中,如果說php擴展安裝expect擴展,那么就能執(zhí)行系統(tǒng)命令。構(gòu)造代碼:


 
]>
&xxes;admin

3.ctf題和vulnhub靶場(xxe)

3.1 api調(diào)用

是來自Jarvis OJ平臺的一道web題型,地址http://web.jarvisoj.com:9882/

XXE漏洞原理是什么

看到題目說flag在/home/ctf/flag.txt中,那么就是訪問這個目錄了。

首先,我們看一下地址入口,頁面是一個提交框,點擊go后,把輸入框輸入的信息,提交到文本框中

XXE漏洞原理是什么

看一下響應(yīng)包中的提交數(shù)據(jù)包和響應(yīng)包數(shù)據(jù):

XXE漏洞原理是什么

發(fā)現(xiàn),提交數(shù)據(jù)是以json格式提交的數(shù)據(jù)。那么對于這種提交方式,去嘗試會不會解析xml,那么要修改一下Content-type為xml,然后寫一個xml,看響應(yīng)包解不解析:

XXE漏洞原理是什么

可以看到返回的響應(yīng)數(shù)據(jù)包中,返回輸入了內(nèi)容,也就是說服務(wù)器成功解析,是由回顯的xxe,那么我么那就構(gòu)造paly了。用我們平常構(gòu)造的代碼,看是否能讀passwd文件數(shù)據(jù):

構(gòu)造paylaod


 ]>

&xxes;

XXE漏洞原理是什么

果然成功讀出了passwd的內(nèi)容,那么就去訪問flag.txt文件了,構(gòu)造代碼payload:


 ]>

&xxes;

XXE漏洞原理是什么

看到成功獲取了flag。

3.2 vulnhub靶場

這個靶場是透過我們平常滲透測試思路,信息收集,根據(jù)收集的信息查找漏洞,利用漏洞,一步步拿到flag。

網(wǎng)站搭建,下載虛擬機,直接導(dǎo)入vm中就行,下載https://download.vulnhub.com/xxe/XXE.zip

我們導(dǎo)入虛擬機后,需要密碼賬號進入,這里不需要。

XXE漏洞原理是什么

因為是虛擬機導(dǎo)入,就可以知道這個的ip地址:192.168.171.146,通過瀏覽器訪問,出現(xiàn)apache2服務(wù)頁面

XXE漏洞原理是什么

會不會含有其他目錄呢,使用目錄掃描掃描一下目錄:

XXE漏洞原理是什么

發(fā)現(xiàn)robots.txt文件,訪問一下:

XXE漏洞原理是什么

看到存在兩個頁面,訪問xxe目錄

XXE漏洞原理是什么

發(fā)現(xiàn)是一個登錄頁面,那么輸入賬號密碼,看看響應(yīng)包是什么數(shù)據(jù)

XXE漏洞原理是什么

看到通過xml傳輸數(shù)據(jù),那么是不是可以利用xxe漏洞呢?那就嘗試常用讀取文件的payload:


 ]>&xxe;admin

XXE漏洞原理是什么

居然成功讀取了,存在xxe漏洞。

我們再查看一下,剛才robots.txt中的admin.php頁面

XXE漏洞原理是什么

需要登錄,那就利用xxe漏洞讀取admin.php源。

這里構(gòu)造payload的時候,使用base64方法讀取文件


 ]>&xxe;admin

XXE漏洞原理是什么

將響應(yīng)包中的base64編碼解碼:

XXE漏洞原理是什么

看到登錄頁面的密碼和賬號,但是賬號md5加密,解密就ok

XXE漏洞原理是什么

利用賬號administhebest和密碼admin@123 登錄頁面:

XXE漏洞原理是什么

頁面出現(xiàn)flag,點擊進去,頁面跳轉(zhuǎn)到flagmeout.php

XXE漏洞原理是什么

頁面不顯示,那么再利用xxe漏洞讀取該文件內(nèi)容

XXE漏洞原理是什么

然后把得到base64解密:

XXE漏洞原理是什么

成功拿到flag

xee防御

通過上面學(xué)習(xí)總結(jié),xxe漏洞產(chǎn)生的原因是,允許加載了外部實體。那么要防御禁止外部實體加載。

libxml_disable_entity_loader(true);

將false不禁止外部實體加載,改為true禁止外部實體加載。

上述就是小編為大家分享的XXE漏洞原理是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


新聞標(biāo)題:XXE漏洞原理是什么
鏈接分享:
http://weahome.cn/article/gpjshe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部