XSS

December 22, 2018

XSS

XSS 為跨網站指令碼(Cross-Site Scripting),通常是網頁開發者在開發時疏忽的漏洞,攻擊著發現網站存在漏洞便會利用代碼注入的方式將惡意的指令碼植入該網站。

XSS 主要受害者是瀏覽被注入代碼網站的使用者,因為惡意的指令碼會被瀏覽者下載到本地端執行,藉此取得使用者的資訊。

攻擊手段

  1. 竊取 cookie、session,使得不需要帳號密碼即可登入。
  2. 植入惡意 Flash,例用 crossdomain 權限進一步取得更高權限
  3. 利用 javascript 以受害者身分執行特定動作
  4. 利用 javascript 對其它網站造成 DDos
  5. 利用 iframe、frame、XMLHttpRequest 以釣魚網站覆蓋原本頁面(Clicckjacking)
  6. 結合其它漏洞(CSRF)進行更進一步的惡意行為。PaPy
  7. 傳播 XSS 蠕蟲
  8. 獲取使用者端相關資訊,如使用者的歷史紀錄

CSRF 是代替用戶完成指定的動作,需要知道其他用戶頁面的代碼和數據包。

典型跨網站指令碼

其中反射型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

參考

XSS 原理