GSS資安電子報0067期【跨站腳本攻擊(Cross-Site Scripting, XSS)概述】

2012-06-15 17:42

alt

文章來源WhiteHat Security   翻譯整理: 叡揚資訊 資訊安全事業處alt

Cross-Site Scripting(XSS)跨站腳本攻擊概述

XSS弱點在80%的網站中都曾經發現過。但其實了解XSS 弱點的原理後,對於軟體開發人員來說是非常容易去解決的。XSS攻擊是當網站讀取時,執行攻擊者提供的程式碼。XSS通常是透過HTML/JavaScript這類不在伺服器端執行、而在使用者端的瀏覽器執行。可用來竊取用戶的cookie,甚至於冒用使用者的身份。像是網路銀行、電子郵件、部落格或其他需要有帳號才能進入的網站。近年來的研究中可以發現XSS攻擊可以完整的控制瀏覽器,就像木馬程式一樣。

XSS攻擊可以分為兩種:

  1. 使用者點擊特製的連結稱為Reflected Attack
  2. 另一種是單純的瀏覽網頁,且該網頁中已植入惡意的語法稱為Persistent Attack除了要注意攻擊的手法外,電腦保持更新至最新版也是很重要的。瀏覽器廠商、軟體開發人員與安全專業人員的工作便是防止這些攻擊的關鍵。

Reflected Attack

若駭客想透過某個網站(在此稱為:http://victim/)利用XSS攻擊使用者。第一步會先找出http://victim/網站中XSS的漏洞,再製造一個惡意的URL 連結。這個連結是網站中的某個功能,該功能會接收使用者端提供的資料,並回應到使用者端的畫面,如資料檢索功能。

圖1是常見的網站,XSS漏洞常見於資料檢索功能。在搜尋欄位輸入「test search」,結果在不同頁面中顯示剛才輸入的「test search」,如圖2。該URL帶有查詢字串。此URL的值可以被修改,甚至包含HTML或Javascript內容。

alt

圖1 檢索功能頁面

 alt

圖2 檢索結果頁面

若搜尋時使用HTML或JavaScript取代原本的值,會產生什麼結果:範例一:輸入「">alert('XSS%20Testing')

搜尋結果頁面顯示了一個警告的對話框,且顯示部份先前輸入的內容與執行JavaScript如圖3。觀察此頁的原始檔可以發現原本的內容被加上了HTML或Javascript,如圖4。此時若駭客繼續修改URL,便可攻擊使用者,如偷取使用者的cookies等。

alt

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

 alt

圖4 檢測原始碼,原始碼中出現新的HTML/JavaScript

Persistent Attack

Persistent XSS攻擊常發生於社群網站或電子郵件等,不需執行特定的連結即可發生。駭客事先將攻擊的語法送至可能被其他使用者造訪的網站。有可能為部落格回應、留言板貼文、聊天室、HTML電子郵件以及其他。當使用者造訪被感染的網頁,會自動執行攻擊。因此Persistent比Reflected更加危險,使用者完全無法保護自己。

無論是Reflected還是Persistent,駭客會持續攻擊都是為了造成網路或財務上的損失。

  • 若想深入了解XSS弱點,可以搜尋「XSS cheat sheet取得進一步的資訊。

軟體安全、OWASP Top10 相關課程

安全程式開發實務課程for .Net & Java

相關分類主題: 軟體安全, 軟體開發專區, OWASP Top10

Follow us

立即訂閱以收到最新資安文章