XSS
XSS 為跨網站指令碼(Cross-Site Scripting),通常是網頁開發者在開發時疏忽的漏洞,攻擊著發現網站存在漏洞便會利用代碼注入
的方式將惡意的指令碼植入該網站。
XSS 主要受害者是瀏覽被注入代碼網站的使用者,因為惡意的指令碼會被瀏覽者下載到本地端執行,藉此取得使用者的資訊。
攻擊手段
- 竊取 cookie、session,使得不需要帳號密碼即可登入。
- 植入惡意 Flash,例用 crossdomain 權限進一步取得更高權限
- 利用 javascript 以受害者身分執行特定動作
- 利用 javascript 對其它網站造成 DDos
- 利用 iframe、frame、XMLHttpRequest 以釣魚網站覆蓋原本頁面(Clicckjacking)
- 結合其它漏洞(CSRF)進行更進一步的惡意行為。PaPy
- 傳播 XSS 蠕蟲
- 獲取使用者端相關資訊,如使用者的歷史紀錄
CSRF 是代替用戶完成指定的動作,需要知道其他用戶頁面的代碼和數據包。
典型跨網站指令碼
- DOM(Document Object Model)
- 反射型
- 儲存型
其中
反射型
和DOM
,都是輸入便得到輸出,儲存型
則是輸入後先儲存置資料庫,當取用時再從資料庫中取出並輸出,因此儲存型
會把惡意代碼存到伺服器上。
DOM XSS
HTML 檔都是以 Document Object Model 進行各種
標籤
與元件
架構而成,此類型攻擊原理由 javascript 在動態更新網頁時,從網址中提取數據並進行惡意 script 的執行。
DOM XSS 主要是 javascript 的 API 原始碼審查的不夠嚴謹造成的,如:document.location、document.URL、document.URLUnencoded、document.referrer、window.location 等 API 都可能透過惡意設計的 URL 來控制彈跳視窗,此類型大多為網站釣魚,對系統不致造成危害,且 DOM XSS 攻擊屬於被動式攻擊,無使用者連線該 URL 即不會觸發。
DOM XSS 可稱
本地端跨網站腳本攻擊
參考:JSPrime 檢測
反射型 XSS
反射型 XSS(Reflected Cross-site Scripting)也稱非持續性 XSS 。惡意資料輸入且伺服器沒有作任何的過濾行為的情況下反射回頁面,導致瀏覽器執行惡意代碼,此類型攻擊手法為最常見,使用也是最廣泛。
此類型 XSS 通常是修改 URL 中網址參數,尋找為過濾並將參數內容反映在頁面上。這類型的攻擊常見於網站的 查詢功能
使用者登入頁面
,再經由這些頁面竊取 cookie 或者進行網路釣魚的動作片取使用者相關資料。
反射型 XSS 是將惡意程式碼暴露在連接上,因此有資訊安全意識者加減可以避免。因此它危害程度沒有持久型的嚴重。
儲存型 XSS
儲存型 XSS(Persistent Cross-site Scripting),會影響到服務器本身安全,此類型不須用戶去觸發,只需瀏覽頁面即可觸發。而此類型會出現在個人資料、留言、評論,使用者使用這些功能並會將資料存在資料庫,當惡意代碼被植入這些會儲存在資料庫的功能時,此瀏覽器會執行儲存在資料庫的惡意代碼,使得用戶受到攻擊。
檢測工具
FireBug Live HTTP Headers