XXE漏洞全稱XML External Entity Injection 即xml外部實體注入漏洞,XXE漏洞發生在應用程序解析XML輸入時,沒有禁止外部實體的加載,導致可加載惡意外部文件和代碼,造成任意文件讀取、命令執行、內網端口掃描、攻擊內網網站、發起Dos攻擊等危害。
XXE漏洞觸發的點往往是可以上傳xml文件的位置,沒有對上傳的xml文件進行過濾,導致可上傳惡意xml文件。
xml是用于標記電子文件使其具有結構性的標記語言,可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言.xml文檔結構包括xml聲明、DTD文檔類型定義(可選)、文檔元素.
所有的XML文檔均有以下簡單的構建模塊組成:
·元素(元素是XML以及HTML文檔的主要構成模塊,元素可包含文本、其他元素或者是空的)
·屬性(屬性可提供有關元素的額外信息)
·實體(實體是用來定義普通文本的變量。實體引用是對實體的的引用,這里的引用就可以為我們提供xxe攻擊)
·PCDATA(會被解析器解析的文本。這些文本將被解析器檢查實體以及標記)
·CDATA(字符數據,不會被解析器解析的文本)
DTD(文檔類型定義)
DTD的作用是定義XML文檔的合法構建模塊
DTD可以在XML文檔內聲明,也可以外部引用
內部聲明:
外部聲明:
DTD實體
DTD實體是用于定義引用普通文本或特殊字符的快捷方式的變量,可以內部聲明或外部引用。
實體分為一般實體和參數實體
產生的危害
xxe危害1:讀取任意文件
xxe危害2: 執行系統命令
xxe危害3:探測內網端口
xxe危害4:攻擊內網網站
xxe危害5: 導致DOS攻擊 |