跨站腳本攻擊

背景

現在的網站包含大量的動態內容以提高用戶體驗,比過去要複雜得多。所謂動態內容,就是根據用戶環境和需要,Web應用程式能夠輸出相應的內容。動態站點會受到一種名為“跨站腳本攻擊”(Cross Site Scripting, 安全專家們通常將其縮寫成 XSS)的威脅,而靜態站點則完全不受其影響。這篇FAQ將使你能更深入地理解這種威脅,並給出如何檢測並防止的建議。

簡介

跨站腳本攻擊(也稱為XSS)指利用網站漏洞從用戶那裡惡意盜取信息。用戶在瀏覽網站、使用即時通訊軟體、甚至在閱讀電子郵件時,通常會點擊其中的連結。攻擊者通過在連結中插入惡意代碼,就能夠盜取用戶信息。攻擊者通常會用十六進制(或其他編碼方式)將連結編碼,以免用戶懷疑它的合法性。網站在接收到包含惡意代碼的請求之後會產成一個包含惡意代碼的頁面,而這個頁面看起來就像是那個網站應當生成的合法頁面一樣。許多流行的留言本和論壇程式允許用戶發表包含HTML和javascript的帖子。假設用戶甲發表了一篇包含惡意腳本的帖子,那么用戶乙在瀏覽這篇帖子時,惡意腳本就會執行,盜取用戶乙的session信息。有關攻擊方法的詳細情況將在下面闡述。

XSS和CSS

人們經常將跨站腳本攻擊(Cross Site Scripting)縮寫為CSS,但這會與層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆。因此有人將跨站腳本攻擊縮寫為XSS。如果你聽到有人說 “我發現了一個XSS漏洞”,顯然他是在說跨站腳本攻擊。

類型

(1)持久型跨站:最直接的危害類型,跨站代碼存儲在伺服器(資料庫)。(2)非持久型跨站:反射型跨站腳本漏洞,最普遍的類型。用戶訪問伺服器-跨站連結-返回跨站代碼。(3)DOM跨站(DOM XSS):DOM(document object model文檔對象模型),客戶端腳本處理邏輯導致的安全問題。

危害

為了蒐集用戶信息,攻擊者通常會在有漏洞的程式中插入 JavaScript、VBScript、 ActiveX或Flash以欺騙用戶(詳見下文)。一旦得手,他們可以盜取用戶帳戶,修改用戶設定,盜取/污染cookie,做虛假廣告等。每天都有大量的XSS攻擊惡意代碼出現。 Brett Moore的下面這篇文章詳細地闡述了“拒絕服務攻擊”以及用戶僅僅閱讀一篇文章就會受到的“自動攻擊”。

攻擊三部曲

1.HTML注入。所有HTML注入範例只是注入一個JavaScript彈出式的警告框:alert(1)。
2.做壞事。如果您覺得警告框還不夠刺激,當受害者點擊了一個被注入了HTML代碼的頁面連結時攻擊者能作的各種的惡意事情。
3.誘捕受害者。

如何預防

從網站開發者角度,如何防護XSS攻擊?
來自套用安全國際組織OWASP的建議,對XSS最佳的防護應該結合以下兩種方法:驗證所有輸入數據,有效檢測攻擊;對所有輸出數據進行適當的編碼,以防止任何已成功注入的腳本瀏覽器端運行。具體如下:
·輸入驗證:某個數據被接受為可被顯示或存儲之前,使用標準輸入驗證機制,驗證所有輸入數據的長度、類型、語法以及業務規則。
·強壯的輸出編碼:數據輸出前,確保用戶提交的數據已被正確進行entity編碼,建議對所有字元進行編碼而不僅局限於某個子集。
·明確指定輸出的編碼方式(如ISO 8859-1或 UTF 8):不要允許攻擊者為你的用戶選擇編碼方式。
·注意黑名單驗證方式的局限性:僅僅查找或替換一些字元(如"<" ">"或類似"script"的關鍵字),很容易被XSS變種攻擊繞過驗證機制。
·警惕規範化錯誤:驗證輸入之前,必須進行解碼及規範化以符合應用程式當前的內部表示方法。請確定應用程式對同一輸入不做兩次解碼。
從網站用戶角度,如何防護XSS攻擊?
當你打開一封Email或附屬檔案、瀏覽論壇帖子時,可能惡意腳本會自動執行,因此,在做這些操作時一定要特別謹慎。建議在瀏覽器設定中關閉JavaScript。如果使用IE瀏覽器,將安全級別設定到“高”。具體可以參照瀏覽器安全的相關文章。
這裡需要再次提醒的是,XSS攻擊其實伴隨著社會工程學的成功套用,需要增強安全意識,只信任值得信任的站點或內容。可以通過一些檢測工具進行xss的漏洞檢測,類似工具有億思網站安全檢測平台。針對xss的漏洞帶來的危害是巨大,如有發現,應立即修復漏洞。

相關攻擊事件

“微博病毒”攻擊事件
回顧:
2011年6月28日晚,新浪微博出現了一次比較大的XSS攻擊事件。大量用戶自動傳送諸如:“郭美美事件的一些未注意到的細節”,“建黨大業中穿幫的地方”,“讓女人心動的100句詩歌”,“3D肉團團高清國語版種子”,“這是傳說中的神仙眷侶啊”,“驚爆!范冰冰艷照真流出了”等等微博和私信,並自動關注一位名為hellosamy的用戶。
事件的經過線索如下:
20:14,開始有大量帶V的認證用戶中招轉發蠕蟲20:30,某網站中的病毒頁面無法訪問
20:32,新浪微博中hellosamy用戶無法訪問
21:02,新浪漏洞修補完畢

下一代跨站腳本攻擊

隨著AJAX(Asynchronous JavaScript and XML,異步JavaScript和XML)技術的普遍套用,XSS的攻擊危害將被放大。使用AJAX的最大優點,就是可以不用更新整個頁面來維護數據,Web套用可以更迅速地回響用戶請求。AJAX會處理來自Web伺服器及源自第三方的豐富信息,這對XSS攻擊提供了良好的機會。AJAX套用架構會泄漏更多套用的細節,如函式和變數名稱、函式參數及返回類型、數據類型及有效範圍等。AJAX套用架構還有著較傳統架構更多的套用輸入,這就增加了可被攻擊的點。

熱門詞條

聯絡我們