從11日晚上開始,Twitter上不斷有人抱怨「我被StalkDaily蠕蟲攻擊了!」。Twitter很紅的介面之一TweetVisor也在畫面左邊顯示警告。

不久後,Twitter便公佈,這是針對twitter跨站腳本攻擊(cross-site scripting,XSS)漏洞所進行的攻擊,目前Twitter已將漏洞修掉。

事發後,連很少刊登資安新聞的TechCrunch也有報導該事件,並有網友留言公開原始XSS蠕蟲之程式碼。
這隻蠕蟲利用Twitter的XSS漏洞,寫入惡意javascript,感染Twitter使用者profile的「location」或「web」欄位。這個惡意javascript除會以被感染的使用者帳號發出推「www.stalkdaily.com」網站的tweet,還會在其他使用者瀏覽該profile時,感染並散播該隻蠕蟲。
XSS蠕蟲的程式碼很短,我們可以一起來研究一下。
從73到76行,攻擊者利用regex找出該名受害者的正確Twitter帳號。78到80行,則會進一步將使用者的帳號與cookie傳給mikeyylolz.uuuq.com,盜取使用者登入資訊,以後,攻擊者可以利用此資訊以受害者身份登入。
接下來的攻擊程式是透過Twitter的HTTP POST介面,修改使用者的「web」欄位─插入惡意javascript,感染其他使用者了。從83行開始是一個wait()函式,要過三秒後才會執行。85到89行則是利用regex找出「form_authenticity_token」這個表單變數。(Twitter使用該隱藏的表單變數來對應session,應該有避免CSRF漏洞之用意;所以呼叫Twitter的HTTP POST介面時,都需要帶此變數)。
93到102行則內建6個以受害者名義發出的tweet,並隨機選一個tweet,準備發送。104到109行則是實際的XSS攻擊碼,如104行插入惡意javascript、106到109等4行的程式則是透過Twitter的HTTP POST介面,發出假tweet,並以同樣的手法,修改「web」,感染其他使用者。(未完,請按下一頁繼續看其他分析)
繼續閱讀: >>

