一種新型的Web快取欺騙攻擊技術
為了減少WEB響應時延並減小WEB伺服器負擔,現在WEB快取技術已經用的非常普遍了,除了專門的CDN,負載均衡以及反向代理現在也會快取一部分的網頁內容。這裡我要介紹一種WEB快取欺騙攻擊技術,這種攻擊技術針對Paypal有成功的攻擊案例。
背景原理
先簡單介紹一下WEB快取技術,它主要是快取一些靜態的,公開的檔案,如CSS檔案,JS檔案,圖片等。快取分兩類,一類是本地快取,通過在瀏覽器上快取實現,快取之後通過F5重新整理是不會重新獲取已快取檔案的,通過Ctrl +F5強制重新整理才會重新獲取。另一類是在服務端實現,也就是在CDN、負載均衡、反向代理(後面統稱快取伺服器)上實現,這次介紹的攻擊技術就是針對這一種快取。服務端的快取原理是:客戶端請求一個靜態檔案,如果快取伺服器沒有快取過這個檔案,就會像WEB伺服器請求,獲取到靜態檔案返回給客戶端,同時將這個檔案快取下來,下次再遇到同樣的請求時就直接返回,直到這個快取檔案過期。
接下來講一下WEB伺服器解析的問題。假設客戶端請求 ofollow,noindex" target="_blank">http://www.example.com/home.php/nonexistent.css 這個URL,其中home.php是真實存在的,而nonexistent.css不存在,那WEB伺服器會怎麼處理呢?針對這種情況的處理跟WEB伺服器用的技術以及配置相關,有的會返回404 not found,有的會返回200 OK,然後把home.php返回回來。如果伺服器返回200 OK就要注意了,這時快取伺服器拿到的請求是 http://www.example.com/home.php/nonexistent.css ,是一個靜態頁面,而WEB伺服器返回給快取伺服器的結果是 http://www.example.com/home.php ,不是一個靜態頁面,但是快取伺服器並不知道。
攻擊方法
根據上面的背景原理介紹,攻擊方法也很容易總結出來了:
1.攻擊者引誘已登入的使用者(受害者)訪問 https://www.bank.com/account.do/logo.png
2.受害者請求 https://www.bank.com/account.do/logo.png
3.快取伺服器接收到請求,沒查到這個頁面,於是向WEB伺服器請求
4.WEB伺服器返回 https://www.bank.com/account.do ,狀態碼是200 OK
5.快取伺服器收到結果,由於狀態碼是200 OK,會認為URL保持不變,然後由於這個URL以.png結尾,認為它是一個靜態檔案,於是會快取這個檔案
6.受害者得到正常結果
7.攻擊者訪問 https://www.bank.com/account.do/logo.png ,請求到達快取伺服器,快取伺服器直接返回受害者的快取賬戶頁面給攻擊者,攻擊完成。
這裡有一個問題,就是HTTP header裡面有一個Cache-Control,用於指示是否要快取該頁面,但是很多情況下,快取伺服器是不看這個的,直接根據檔案字尾判斷。
這種攻擊的結果就是將受害者的個人頁面變為了一個快取在伺服器上,可以公開訪問的頁面。這個頁面可能包含受害者敏感資訊,如銀行卡號,也可能有這個受害者的會話標識、密保問題答案、CSRF token等,有可能讓攻擊者獲取到受害者賬號的控制權。
攻擊成功的條件
我們再來梳理一下這個攻擊的條件:
1.WEB伺服器會將類似 http://www.example.com/home.php/nonexistent.css 這種頁面解析為home.php
2.快取伺服器會無視http header,只根據檔案字尾來判斷是否快取該檔案
3.受害者訪問該頁面時必須已登入
那麼,那些元件滿足這些條件呢?(以下具體的配置請參見文末所附連結)
符合條件1的WEB伺服器有:
l 原生的PHP l 通常配置下的基於python的WEB框架Django l 某些配置下的ASP.NET
符合條件2的快取伺服器有:
l 某些配置下的Nginx l 某些配置下的Cloudflare l 某些配置下的IIS ARR
從這個總結可以看出,多數情況下這個是可以通過配置避免的,所以有些人認為這不算是個漏洞,所以也並沒有什麼補丁來解決這個問題,估計這個問題在很多地方都存在。
防禦建議
根據觸發條件我們給出的修改建議如下:
1.配置快取伺服器根據http header來判斷是否快取頁面;
2.將所有靜態檔案放在指定的目錄,只快取這個目錄裡的檔案;
3.配置WEB伺服器在解析類似 http://www.example.com/home.php/nonexistent.css 這種頁面時返回404或者302。
原文資訊
本文根據Omer Gil的文章翻譯而成。他創新地顛覆了WEB快取欺騙利用方式,通過控制 Web 快取可以儲存其它使用者的敏感資料,併成功在 Paypal 中實現了攻擊復現。從 Omer Gil 的演講和報告中可以看到,Web 快取欺騙是一項厲害且有想像力的技術,這種技術可以在多種主要的快取機制中利用實現,為未來的深入研究提供一個很好的基礎平臺。
隨著應用程式安全性的不斷成熟,尋找真正的新技術變得越來越難,所以在不斷的演化過程中,能看到這種可證實的安全隱患,非常令人耳目一新。因此,這種攻擊技術被評為2017十大WEB黑客技術榜單的第二名。
演示視訊:
原文連結: https://www.blackhat.com/docs/us-17/wednesday/us-17-Gil-Web-Cache-Deception-Attack-wp.pdf
*參考來源: blackhat ,本文作者:lex1993,轉載請註明來自FreeBuf.COM