CSRF(跨站點請求偽造)在Flash中的利用
0x00 前言
CSRF(Cross-site request forgery)跨站請求偽造,也被稱為「One Click Attack」或者Session Riding,通常縮寫為CSRF或者XSRF,是一種對網站的惡意利用。儘管聽起來像跨站腳本(XSS),但它與XSS非常不同,XSS利用站點內的信任用戶,而CSRF則通過偽裝來自受信任用戶的請求來利用受信任的網站。與XSS攻擊相比,CSRF攻擊往往不大流行(因此對其進行防範的資源也相當稀少)和難以防範,所以被認為比XSS更具危險性。
對於大多數網站,瀏覽器請求會自動包含任何與網站相關的憑證,例如用戶的會話cookie,IP地址,Windows域憑證等等
大家都知道CSRF攻擊,使用burpsuite里自帶的增強工具(engagement tools)可以很容易地構造各種基本的CSRF攻擊POC,包括通過XHR請求進行的CSRF攻擊。
在這篇文章中,我將要談論我經常遇到的CSRF場景,並且我將儘可能嘗試講清楚.
0x01 正文
接下來的兩種方法可以用在使用JSON格式數據進行post請求的情況下.比如{「name」:」test」, 「email」:」victim.com」} ,有以下兩個場景.
場景1
伺服器查找json格式的數據,但不驗證內容類型
場景2
伺服器尋找json格式的數據並驗證Content-type,也就是application / json
注意:這個csrf攻擊只適用於應用程序只依賴json格式的數據或內容類型的應用程序/ json和數據格式檢查,如果有任何額外的csrf標記/ referer檢查的地方這將無法正常工作。
開發案例1:
只要使用Fetch請求就可以完成,正如我們所知,在這種情況下,伺服器只檢查發布的數據是否格式正確,如果是,它將接受請求,而不管內容類型是否設置為文本/純文本
現在假設我們必須將這個測試數據提交給易受攻擊的應用程序:{「name」:「attacker」,「email」:「attacker@gmail.com」}
更新的方法:
資料來源:http://research.rootme.in/forging-content-type-header-with-flash
以前的方法——使用form:
使用form構造JSON數據等然後發起post請求:
如果應用程序不關心在我看到的大多數情況下發生的額外數據,這將使用有效的json格式的數據發出請求並填充一些額外的數據。如果沒有,總是有第二種使用方式。
資料來源:
http://blog.opensecurityresearch.com/2012/02/json-csrf-with-parameter-padding.html開發案例2:
在這裡即使應用程序正在驗證 內容類型和數據格式,這種攻擊也可以使用flash和307重定向來實現。
要求:
精心製作的Flash文件
跨域XML文件
帶有307個狀態的PHP文件
精心製作的flash文件:
這個flash(.swf)文件有我們的json格式的數據,攻擊者必須在目標應用程序上發布,並鏈接到託管的php文件。
這裡是測試的 SWF文件,你可以根據你的需要下載和編輯內容,我使用FFDec在Windows上進行編輯和編譯Flash文件,你可以根據你的環境檢查其他人。
crossdomain XML文件:
這個文件應該放在攻擊者網站的根目錄下,這樣Flash文件就可以向攻擊者的主機發送請求。
注意:如果Flash文件&重定向器頁面在同一個域,則不需要crossdomain文件。
重定向的PHP文件
Flash文件請求這個php文件,這將使307重定向到提到的應用程序端點,並且307是特殊的重定向,它將從Flash文件接收到的JSON數據也post到目標端點,並且CSRF將成功執行.
注意:因為這是基於快閃記憶體的,所以應該在瀏覽器中安裝快閃記憶體以使其工作。
*本文作者Geekboy,淼淼兮與懷翻譯,轉載請註明來自FreeBuf.COM
TAG:FreeBuf |