pikachu之XEE練習
XXE (xml external entity injection)即xml外部實體注入漏洞
概括一下就是"攻擊者通過向伺服器注入指定的xml實體內容,從而讓伺服器按照指定的配置進行執行,導致問題",也就是說服務端接收和解析了來自使用者端的xml資料,而又沒有做嚴格的安全控制,從而導致xml外部實體注入。
現在很多語言裡面對應的解析xml的函式預設是禁止解析外部實體內容的,從而也就直接避免了這個漏洞。
以PHP為例,在PHP裡面解析xml用的是libxml,其在≥2.9.0的版本中,預設是禁止解析xml外部實體內容的。
本章提供的案例中,為了模擬漏洞,通過手動指定LIBXML_NOENT選項開啟了xml外部實體解析。
XML是什麼?
XML:eXtensibleMarkup Language,可擴充套件標記語言,使用簡單的標記來描述資料。
- XML是一種非常靈活的語言,類似於HTML語言,但是並沒有固定的標籤,所有的標籤都可以自定義,其設計的宗旨是傳輸資料,而不是像HTML一樣顯示資料。
- XML不會做任何事情,它是被設計用來結構化、儲存以及傳輸資訊,也就是XML檔案所攜帶的資訊,需要被其他的語言或者程式來解析,才能發揮作用。
XML的作用
XML使用元素和屬性來描述數 據。在資料傳送過程中,XML始終保留了諸如父/子關係這樣的資料結構。幾個應用程式 可以共享和解析同一個XML檔案,不必使用傳統的字串解析或拆解過程。 相反,普通檔案不對每個資料段做描述(除了在標頭檔案中),也不保留資料關係結構。使用XML做資料交換可以使應用程式更具有彈性,因為可以用位置(與普通檔案一樣)或用元素名(從資料庫)來存取XML資料。
它是怎樣構建外部實體注入的?
方式一:直接通過DTD外部實體宣告
方式二:通過DTD文件引入外部DTD文件,再引入外部實體宣告
方式三:通過DTD外部實體宣告引入外部實體宣告
PHP中有一個函式將形式良好的 xml 字串轉換為 SimpleXMLElement 物件,在PHP裡面解析xml用的是libxml,其在 ≥2.9.0 的版本中,預設是禁止解析xml外部實體內容的。
XXE漏洞發生在應用程式解析XML輸入時,沒有禁止外部實體的載入,導致攻擊者可以構造一個惡意的XML
<?xml version = "1.0"?>
<!DOCTYPE note [
<!ENTITY hacker "ESHLkangi">
]>
<name>&hacker;</name>
輸入,可以看到正確讀出變數;
DTD(文件型別定義)的作用是定義 XML 文件的合法構建模組。DTD 可以在 XML 文件內宣告,也可以外部引用。
(1)內部宣告DTD
<!DOCTYPE 根元素 [元素宣告]>
(2)引用外部DTD
<!DOCTYPE 根元素 SYSTEM "檔名">
或者
<!DOCTYPE 根元素 PUBLIC "public_ID" "檔名">
DTD實體是用於定義引用普通文字或特殊字元的快捷方式的變數,可以內部宣告或外部引用。
相關文章
- CSRF(Pikachu靶場練習)
- xss-基於Pikachu的學習
- unserialize-基於Pikachu的學習
- xxe-基於Pikachu的學習
- filedownload-基於pikachu的學習
- fileupload-基於pikachu的學習
- RCE-基於Pikachu的學習
- ssrf-基於Pikachu的學習
- Java學習之陣列練習Java陣列
- 暴力破解-基於Pikachu的學習
- Over-Permission-基於Pikachu的學習
- url重定向-基於Pikachu的學習
- 檔案包含-基於Pikachu的學習
- XSS(Pikachu)
- RCE(Pikachu)
- 目錄遍歷-基於Pikachu的學習
- Java學習之基礎語法練習Java
- 敏感資料洩露-基於Pikachu的學習
- python 基礎之scrapy 原理練習Python
- pikachu靶場搭建
- markdown 使用練習練習
- XSS - 跨站指令碼之portswigger labs練習指令碼
- java方法練習之簡單計算器Java
- 靶機練習之Billu_b0x
- 實戰練習之Jsp自定義標籤JS
- 精通MySQL之索引篇,這篇注重練習!MySql索引
- 新手練習:Python練習題目Python
- MYSQL練習1: DQL查詢練習MySql
- SQL隱碼攻擊(pikachu)SQL
- C語言-for迴圈之窮舉法練習C語言
- Flutter(十二)之練習高仿豆瓣電影列表Flutter
- openGauss練習
- latex練習
- MySQL練習MySql
- ddl練習
- MySQ練習
- python練習Python
- 機器學習之邏輯迴歸:模型訓練機器學習邏輯迴歸模型