對該漏洞的危害及實施方式的理解
9月底公布的CVE-2020-5421 是由CVE-2015-5211的修復(fù)引入的,都是 RFD類型的漏洞。在修復(fù)該問題的過程中,一邊也對該問題逐步深入做了一些了解,自然最關(guān)心的是它是怎么的漏洞,怎么實施攻擊,會有什么樣的后果,對誰會造成危害,當(dāng)然了解這些都是為了做到怎么避免形成危害。
Reflected File Download - A New Web Attack Vector 及RFD(反射型文件下載)漏洞原理及實戰(zhàn)案例全匯總 給出了定義和示例,尤其是后者給出了幾個曾經(jīng)存在該漏洞的著名網(wǎng)站。
漏洞的名稱有三個詞構(gòu)成,用圖表示為三要素,如下:

通過以上兩篇文章的定義和示例能得到理解,這里也不妨打一個通俗些的類比,以好理解所造成的危害范圍及影響。 假定有一個大家都信任的機關(guān),它會通過專用信封發(fā)送一些信息給大家,內(nèi)容有對某事件當(dāng)事人的通知,或者為當(dāng)事人雙方轉(zhuǎn)送信息,以推動事件的進(jìn)行或起到協(xié)同作用。一般的大家都是互相信任,尤其是因為信息是通過這個權(quán)威機關(guān)的,當(dāng)事各方都對經(jīng)機構(gòu)轉(zhuǎn)遞的信息深信不疑。所以某一天,當(dāng)A收到有機構(gòu)發(fā)來的信件和轉(zhuǎn)交的一個包裹時,A沒有遲疑的就拆包了,但悲劇也就發(fā)生了,包裹里是危險的東西(隨你去想吧)。這是為什么呢?因為B發(fā)現(xiàn)了機構(gòu)中某一個辦事員工作疏忽大意,并不會認(rèn)真檢查轉(zhuǎn)交的內(nèi)容,甚至不核實B的身份,就是簡單的把B提交的東西加上機構(gòu)的信封,不做任何核實就在備注中按照B申報的內(nèi)容寫明是"經(jīng)核實是xx物品"的信息。
不一定完全等同,但從這個類比看,有以下幾點是和RFD的一致的:
- 直接受害者和被攻擊的目標(biāo)是接收了這個包裹的人;
- 這個受信任的機關(guān)雖然經(jīng)手了危險品,但并不是被攻擊的目標(biāo)(或許因為是被隔離的非重要部門),它只是被別人利用了,是非主動行為,有一定的連帶責(zé)任,網(wǎng)絡(luò)的案例比這個郵件的類比更無辜些;-
- 對它越信任的,越容易被傷害,可信的機構(gòu)也會面臨不被信任的傷害;
- 存在漏洞的根源是對B(甚至不知道身份是誰)做了無限的信任導(dǎo)致的;
也有牽強的地方,在類比中郵件是經(jīng)可信機關(guān)發(fā)出的,而在互聯(lián)網(wǎng)上則只需要在一個論壇或社交信息中留下該著名網(wǎng)站域名下的某個帶有自己添加參數(shù)的url就能形成誘餌。
幾個條件
在了解了實施過程和危害后,導(dǎo)致攻擊發(fā)生的必要行及條件如下:
- 存在于互聯(lián)網(wǎng)這樣的開放環(huán)境
- 是著名的網(wǎng)站
- 在處理中存在未經(jīng)檢查的直接反射
- 可以被下載為可被客戶端執(zhí)行的文件類型
相反的,在企業(yè)內(nèi)網(wǎng)中用戶群都是特定的內(nèi)部用戶,或者雖然在互聯(lián)網(wǎng),但不為人知,或者別人根本不會敢興趣,還有系統(tǒng)有安全認(rèn)證,訪問任何連接都會被攔截到用戶認(rèn)證,或者限制了下載的文件類型都不能讓攻擊成功。
一個嘗試
關(guān)于如何形成下載,先提議一個技術(shù)示例。
打開連接 HTML <a> download 屬性
這里介紹download是html5中<a>標(biāo)簽的一個新屬性,該屬性也可以設(shè)置一個值來規(guī)定下載文件的名稱。所允許的值沒有限制,瀏覽器將自動檢測正確的文件擴展名并添加到文件 (.img, .pdf, .txt, .html, 等等)。
<a href="/images/myw3schoolimage.jpg" download="w3logo">
在親自試一試 中體驗一下。原來的示例,會把w3school_logo_white.gif 下載成文件w3logo.gif, 但如果把download設(shè)置為w3log.bat,它就會以w3log.bat被下載保存。
<!DOCTYPE html>
<html>
<body>
<p>點擊 W3School 的 logo 來下載該圖片:<p>
<a href="/i/w3school_logo_white.gif" download="w3logo.bat">
<img border="0" src="/i/w3school_logo_white.gif" alt="W3School">
</a>
</body>
</html>
對了,攻擊也就是通過這個標(biāo)簽的download屬性進(jìn)行的。只是鏈接是發(fā)布在一個社交網(wǎng)站中,比如facebook, 微博, 甚至郵件中。
知道了漏洞的存在就能進(jìn)行攻擊嗎?我們再通過上面的例子體會一下。
<!DOCTYPE html>
<html>
<body>
<p>點擊 W3School 的 logo 來下載該圖片:<p>
<a download="w3logo.bat">
<img border="0" src="http://photocdn.sohu.com/20150920/Img421633729.jpg" alt="W3School">
</a>
</body>
</html>
這次href 替換成了一個和體驗頁面不同域的網(wǎng)頁,這次再點擊,發(fā)現(xiàn)并不會下載。這是因為瀏覽器做了跨域的禁止,只有同域下該屬性才可能會起作用,它應(yīng)該是從瀏覽器端進(jìn)行的安全控制。如果你不是使用特殊的不做此限制的瀏覽器,才可能會被攻擊。
知道這些后,現(xiàn)在你對嚴(yán)重程度及影響怎么評價?
到這里,看看幾個條件,以及形成攻擊所依賴的工具上的限制,你肯定也會有自己的一份理解,如果攻擊得手了結(jié)果肯定是不可想象的嚴(yán)重,但攻擊被形成的概率和手段有效性的評價就看你對風(fēng)險等級的定義了。
[前一篇]對Spring framwrok 3.1.1 進(jìn)行構(gòu)建
[首頁] 關(guān)于CVE-2020-5421 想說的一些事