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