iT邦幫忙

2025 iThome 鐵人賽

DAY 20
0

至今仍是威脅網頁應用程式的常見漏洞之一。攻擊主要依靠將惡意腳本注入到看似無害的網站上,讓該腳本在使用者的瀏覽器中執行,利用的是使用者對容易受攻擊之網站的信任。

造成的原因

攻擊可能包括以下部分原因

  • 輸入驗證與清理不足
    • 有些應用程式會接受使用者資料(如表單輸入),並將這些資料用於動態產生 HTML 頁面。若未適當清理輸入內容,惡意腳本可能被當作合法資料嵌入其中,最終由瀏覽器執行。
  • 缺乏輸出編碼
    • 可以透過某些特殊字元影響解析與顯示網頁內容。
    • HTML 關鍵字元如 <>"'& 必須轉換為對應的 HTML 實體編碼。
    • JavaScript 需特別處理 '"\ 等字元。
    • 未正確編碼使用者輸入是導致 XSS 漏洞的主要原因之一。
  • 錯誤使用安全標頭
    • 多種安全標頭可協助緩解 XSS 漏洞。
    • 如 Content Security Policy(CSP)可透過限制可執行腳本的來源來減少 XSS 風險。
    • 然而若 CSP 設定錯誤(如錯用 unsafe-inlineunsafe-eval),反而會讓攻擊者更容易執行其惡意腳本。
  • 框架或程式語言的漏洞
    • 舊版框架未提供防範 XSS 的機制,或者存在未修補的漏洞。
    • 現代框架大多內建自動輸出跳脫功能,並會快速修補新發現的漏洞。
  • 第三方函式庫
    • 在WEB應用中整合第三方函式庫可能引入 XSS 漏洞,即使核心程式碼本身沒有安全問題。

類型

主要分為三種:

  1. Reflected XSS:攻擊依賴使用者可控的輸入被即時反映回頁面。如搜尋功能會在結果頁顯示你搜尋的字串(被反映),攻擊者會嘗試在搜尋字串中嵌入惡意腳本。
  2. Stored XSS:攻擊依賴使用者輸入被儲存在網站的資料庫中。如使用者可以撰寫並儲存的商品評論會顯示給其他使用者,攻擊者會在評論中插入惡意腳本,使其在其他使用者的瀏覽器中執行。
  3. DOM-based XSS:此攻擊利用文件物件模型(DOM)內的弱點,直接操作現存的頁面元素而無需透過伺服器反映或存儲。DOM‑based XSS 是最少見的一種。

可能的影響

  • Session Hijacking
    • XSS 可用來竊取使用者的 Session Cookie,攻擊者可藉此接管使用者會話,冒充其身份執行操作。
  • 網路釣魚或憑證竊取
    • 攻擊者可以利用 XSS 顯示偽造的登入介面,引誘使用者輸入帳號密碼。例如曾有案例中,頁面被彈出視窗部分遮蔽,誘導使用者連接其加密貨幣錢包。
  • 社交工程
    • 攻擊者可在可信網站內製作看似合法的彈窗或提示,誘使用戶點擊惡意連結或造訪釣魚網站。
  • 網站內容竄改
    • 除了誘騙之外,攻擊者也可能使用 XSS 改變網站內容,例如張貼具毀損品牌形象的訊息,造成企業聲譽損害。
  • 資料外洩
    • XSS 可存取並竊取顯示在使用者瀏覽器中的資訊,包括個人資料、帳戶資訊甚至金融資料。
  • 惡意軟體安裝
    • 攻擊者可以利用 XSS 傳播惡意程式碼,特別是由 Drive-by Download(無需使用者點擊即可觸發下載)手法,對瀏覽網站的使用者散佈惡意軟體。

上一篇
Side Red - CSRF
系列文
30天的資訊安全讀書筆記20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言