這個漏洞是Javascript注入的一個經典部分。假設你寫與以下文本的鳴叫:
"http://www.guardian.co.uk/technology is the best!"
當您查看Twitter的網頁,變成一個鏈接,像這樣:
<a href="http://www.guardian.co.uk/technology" class="tweet-url web"
rel="nofollow">http://www.guardian.co.uk/technology</a> is the best!
該漏洞攻擊該鏈接製作功能。該漏洞鳴叫的原始文本會讀這樣的事情:
http://a.no/@";onmouseover=";$('textarea:first').val(this.innerHTML);
$('.status-update-form').submit();"class="modal-overlay"/
哪個Twitter的沒有適當保護,可能是因爲@」字符組合打破了他們的[HTML]解析器,鏈接會生成以下頁面的源代碼:。
<a href="http://a.no/@";onmouseover=";$('textarea:first').val(this.innerHTML);
$('.status-update-form').submit();"class="modal-overlay"/ class="tweet-url web"
rel="nofollow">
這意味着,可執行內容(的onMouseOver =「東西」位),在網頁源代碼已經結束了。不知道什麼更好的瀏覽器中運行該代碼,因爲它是在用戶的瀏覽器中運行,它可以做用戶所做的任何事情;大多數變體使用這種權力重新發布內容,這就是爲什麼它像病毒一樣傳播。呃通過鼠標懸停來激活代碼,他們還使用CSS [Cascading Style Sheets,它決定了頁面佈局]將該塊格式化爲black-on-black。其他版本被用戶篡改以獲得各種其他效果,例如色情網站重定向,推文中的彩虹文字等。其中一些彈出對話框,旨在警告用戶,談論帳戶被禁用或密碼被盜(無論如何)。
Twitter解決了這個問題,不是通過阻止字符串onMouseOver(一些暗淡的博客所要求的),而是通過適當的消毒輸入。 「這些推文中的標記現在變成了&」 - HTML轉義形式
從技術上講,這是一種二階注入式攻擊;攻擊字符串被插入到數據庫中並正確處理,但隨後攻擊發生作爲字符串讀背出,而不是它並不複雜,在所有要麼攻擊 - 而尷尬的Twitter,他們是由該抓出來
來源:The Twitter hack: how it started and how it worked
這是一個XSS攻擊,參看:http: //twitter.com/safety/status/25118959058 – Adam 2010-09-21 17:20:50
好的,但我希望看到更好的解釋。它是如何工作的?我們可以做些什麼來避免這種類型的漏洞我們編寫的代碼中的可變性? – ibz 2010-09-21 17:22:24
另請參閱http://blog.twitter.com/2010/09/all-about-onmouseover-incident.html – 2010-09-21 18:18:48