iT邦幫忙

2026 iThome 鐵人賽

DAY 27
0

最後一個小章節來了,XXE寫完,這一次的30天鐵人賽基本上就告一段落了,最後只剩防護方法還有心得,開始吧!

什麼是XXE

XML External Entity attack (XML外部實體注入攻擊),是一種利用應用程式中XML解析器接受到帶有引入外部實體的指令時,若沒有設定忽略外部實體,解析器就會解析這個輸入中的外部實體部分和代碼,從而使攻擊者可以進行機密資料偷取,SSRF(類似CSRF的伺服器版本),或是進行Dos攻擊(Billion Laughs Attack)

Webgoat A5 XXE 號碼4(題目1)

https://ithelp.ithome.com.tw/upload/images/20261010/20184109Bf96fV6U7p.png

我們又又來到這個熟悉的留言板了,這留言板經歷了我們的XSS,CSRF後,現在要來成為我們XXE的試驗場了
老樣子,在留言裡面隨便打一點甚麼並且傳送,順便擷取一下封包

https://ithelp.ithome.com.tw/upload/images/20261010/20184109IHS3XCuvgL.png

可以看到已經有基礎的XML結構了,那讓我們進行一些小(?)修改來達成我們的目標

<?xml version="1.0"?>
<!DOCTYPE comment [
	<!ENTITY apple SYSTEM "file:///">
]>
<comment>  <text> &apple;</text></comment>

<!DOCTYPE comment> [...]> 是所謂的 DOCTYPE宣告 以及 Document Type Definition (DTD),用來定義及管理XML中出現的元素,屬性以及實體。
同時要注意的是XML下面只會出現一個根標籤,也就是範例中出現在最外圍被我們操作的 <comment> ,個人感覺他類似 JAVA 程式設計中的 Class

<!ENTITY apple SYSTEM "file:///"> 這串便是剛剛說到的實體,就是他讓我們原本的 apple 在前面多了&之後會被解析器引用並解析成實體。
他同時也是我們XXE中的XE (eXternal Entity,外部實體),因為後面的 SYSTEM 這個關鍵字讓他知道我們要的東西是XML外的資料,讓他會跑出去幫我們找file:///這個目錄內放著的檔案,並在後面 &apple; 引用時進行帶入

&apple; 這部分要注意的是如果後面不加;的話,會讓解析器發出語法錯誤

讓我們放進去執行看看

https://ithelp.ithome.com.tw/upload/images/20261010/20184109Xa2b0hDJqQ.png

成功過關,同時讓我們刷新一下網頁,看有沒有成功讀取到file:///的資料

https://ithelp.ithome.com.tw/upload/images/20261010/20184109wWlR6zWRdn.png

也成功了,不過奇妙的是不像之前一樣多新增一個留言,而是直接代替了原本留言的apple,神奇

Webgoat A5 XXE 號碼7(題目2)

https://ithelp.ithome.com.tw/upload/images/20261010/20184109hT4v3yF5iM.png

這關目的和上一題一樣,也是要把根目錄印出來,讓我們先截取一個封包看看

https://ithelp.ithome.com.tw/upload/images/20261010/2018410952Dt5KSHt7.png

這次居然是用json檔? 可是我們要傳的是xml......那我們就來改吧,把Content-type從 application/json 改成 application/xml 試試看

https://ithelp.ithome.com.tw/upload/images/20261010/201841098R8Ib3sPgO.png

居然真的成功了,應該是因為網頁本身雖然預設使用者傳入的是json資料,但沒有限制Content-type,所以才能讓我們透過改Content-type直接傳入,同時裡面又有解析器,偵測到XML後就進行解析,讓我們成功進行XXE

明日內容 XXE(下)


上一篇
[DAY26]仿生人是否會夢見網頁山羊? --Security Misconfiguration (下)
下一篇
[DAY28]仿生人是否會夢見網頁山羊? -- XXE (下)
系列文
仿生人是否會夢見網頁山羊? 資安小白的30天Webgoat闖關紀錄 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言