
文章來源: WhiteHat Security 翻譯整理: 叡揚資訊 資訊安全事業處
XSS弱點在80%的網站中都曾經發現過。但其實了解XSS 弱點的原理後,對於軟體開發人員來說是非常容易去解決的。XSS攻擊是當網站讀取時,執行攻擊者提供的程式碼。XSS通常是透過HTML/JavaScript這類不在伺服器端執行、而在使用者端的瀏覽器執行。可用來竊取用戶的cookie,甚至於冒用使用者的身份。像是網路銀行、電子郵件、部落格或其他需要有帳號才能進入的網站。近年來的研究中可以發現XSS攻擊可以完整的控制瀏覽器,就像木馬程式一樣。
XSS攻擊可以分為兩種:
若駭客想透過某個網站(在此稱為:http://victim/)利用XSS攻擊使用者。第一步會先找出http://victim/網站中XSS的漏洞,再製造一個惡意的URL 連結。這個連結是網站中的某個功能,該功能會接收使用者端提供的資料,並回應到使用者端的畫面,如資料檢索功能。
圖1是常見的網站,XSS漏洞常見於資料檢索功能。在搜尋欄位輸入「test search」,結果在不同頁面中顯示剛才輸入的「test search」,如圖2。該URL帶有查詢字串。此URL的值可以被修改,甚至包含HTML或Javascript內容。

圖1 檢索功能頁面

圖2 檢索結果頁面
若搜尋時使用HTML或JavaScript取代原本的值,會產生什麼結果:範例一:輸入「">alert('XSS%20Testing')
搜尋結果頁面顯示了一個警告的對話框,且顯示部份先前輸入的內容與執行JavaScript如圖3。觀察此頁的原始檔可以發現原本的內容被加上了HTML或Javascript,如圖4。此時若駭客繼續修改URL,便可攻擊使用者,如偷取使用者的cookies等。

圖3 Html/JavaScript 取代原查詢字串

圖4 檢測原始碼,原始碼中出現新的HTML/JavaScript
Persistent XSS攻擊常發生於社群網站或電子郵件等,不需執行特定的連結即可發生。駭客事先將攻擊的語法送至可能被其他使用者造訪的網站。有可能為部落格回應、留言板貼文、聊天室、HTML電子郵件以及其他。當使用者造訪被感染的網頁,會自動執行攻擊。因此Persistent比Reflected更加危險,使用者完全無法保護自己。
無論是Reflected還是Persistent,駭客會持續攻擊都是為了造成網路或財務上的損失。
相關分類主題: 軟體安全, 軟體開發專區, OWASP Top10