6月28日晚,新浪微博突然出現大範圍“中毒”,微博用戶中招後會自動向自己的粉絲發送含毒私信和微博,有人點擊後會再次中毒,形成惡性循環。
大量用戶自動發送“建黨大業中穿幫的地方”、“個稅起征點有望提到4000”、“郭美美事件的一些未注意到的細節”、“3D肉團團高清普通話版種子”等帶鏈接的微博與私信,並自動關注一位名為hellosamy的用戶。
一、事件的經過如下:
20:14,開始有大量帶V的認證用戶中招轉發蠕蟲
20:30,2kt.cn中的病毒頁麵無法訪問
20:32,新浪微博中hellosamy用戶無法訪問
21:02,新浪漏洞修補完畢
二、 攻擊分析
導致的原因是新浪名人堂部分XSS過濾不嚴所致:
下麵的腳本被執行了:www.2kt.cn/images/t.js
一般來說這樣的網址會被載入404頁麵,而這個網址的結果是腳本被執行了。據分析,攻擊是反射型XSS, JS腳本不夠安全導致的惡意腳本被載入頁麵。
攻擊原理分析圖
攻擊者既能發私信,又能發微博,還能評論。而最難的地方,在於如何執行腳本,因為一旦那個頁麵可移植性腳本,其他的就好做了,簡單分析原理:
1) 所有的攻擊都是背後偷偷執行Ajax,通過仿造提交表單來完成發布微博等。
2) 但這也有一個問題,就是Ajax的跨域,由於Ajax的same domain的要求,無法跨域名執行腳本,厲害的地方在於,在微博中植入了這個腳本,這樣就偽造了same domain,可以執行所有的Ajax。以上可以通過post()這個函數看出來,很簡單的XHR調用,並沒有使用cross domain的技巧。
3) 發微博:publish(),向weibo.com/mblog/publish.php通過Ajax提交數據,由於是需要登陸的,所以服務器端session還在,直接就可以成功發布微博。
4) 發私信:發私信多了一個步驟,獲取粉絲的user id。其中的關鍵函數getappkey()可能就是從weibo.com/YOURID/follow頁麵扒取所有的user id,或者通過API獲取到粉絲信息,獲取之後然後通過一個for loop語句來發送。
三、 攻擊者是誰?
病毒作者微博
通過whois查詢,2kt.cn的域名擁有者信息如下:
Domain Name: 2kt.cn
Registrant Organization: 北京新網數碼信息技術有限公司
Registrant Name: 張誌
hellosamy這不是一個簡單的昵稱,samy是有名的通過SNS的XSS攻擊傳播的病毒,最初在mySpace上麵進行傳播。說明攻擊者對於網絡安全領域有一定的“功力”,攻擊方式和之前的人人網的攻擊有些區別,人人網是隻要打開私信就會「中毒」,更嚴重。這次攻擊如果打開私信是沒問題的,如果警覺的話,不去點擊那個鏈接,也不會中招。嚴重程度稍微低於人人網的攻擊。