XXE 原理漏洞詳解

2021-10-23 01:57:29 字數 1637 閱讀 9933

1 什麼是xxe漏洞

xxe漏洞全程xml external entity injection 即xml外部實體注入漏洞,xxe漏洞發生在應用程式解析xml輸入時,沒有禁止外部實體的載入,導致可載入惡意外部檔案,造成檔案讀取,命令執行 內網埠掃瞄 攻擊內網** 發起dos攻擊等危害

可以模擬sql注入解析傳入sql語句,解析xml語句

2 什麼是xml

一種類似html的語句,不同於html,他的標籤可以自定義

3什麼是dtd

document type definition 文件型別定義

一般和xml檔案配合使用,用來約束xml檔案

3.1內部dtd文件

<

!doctype 根元素 [定義內容]

>

3.2外部dtd文件引入外部的dtd檔案分為兩種:

(1)當引用的dtd檔案是本地檔案時,用system標識,並寫上 「dtd的檔案路徑」,如下

<

!doctype 根元素 system

"dtd檔案路徑"

>

(2)當引用的dtd檔案是乙個公共的檔案時,採用public標識,如下

<

!dectype 根元素 public

"dtd名稱"

"dtd檔案的url"

>

例子:

看這段**

第四行如果是ture 就禁止外部實體注入,如果如圖一樣是false 則可以進行

第五行提交個post請求

這是乙個正常的提交,在看乙個不正常的

多加了:

<

!doctype xxe system

"xxe.dtd"

>

&xxe;

<

/div>意思是將注入的檔案 xxe.dtd顯示出來,有點類似於檔案包含

如果我們把xxe.dtd換成重要的檔案如/etc/passwd,則會造成洩露

我們如果將其換成

/div>我們可以利用這個特性進行內網掃瞄

XXE漏洞原理分析

除了json外,xml也是一種常用的資料傳輸格式。對xml的解析有以下幾種常用的方式 dom,sax,jdom,dom4j,stax等。然而這幾種解析方式都可能會出現外部實體注入漏洞,這類漏洞統稱 xml 外部實體漏洞。以下提供乙個請求如果接受的值是xml格式資料,則會存在xxe漏洞,我們使用下面簡...

XXE漏洞概述

xxe xml external entity injection 是xml的外部文件的一種注入漏洞。首先來看一下xml的大體結構 dtd document type definition 即文件型別定義,用來為xml文件定義語義約束。主要出問題的大多是從dtd這部分出的。dtd大體框架 dtd 內...

XXE漏洞利用

docker搜尋xxe相關映象包,然後pull下來,我這裡pull的是 rrodrigo xxelab 映象包。啟動docker環境,對映到vps的32776埠 訪問 輸入註冊資料,抓包重放。發現提交資料報採用 xml 格式傳遞,且郵箱有返回。這裡我們引用外部dtd實體,並且將email的值修改為引...