《白帽子講Web安全》3-跨站腳本攻擊(XSS)

第3章 跨站腳本攻擊(XSS)

3.1 XSS簡介

  1. Cross Site Script,跨站腳本攻擊,簡稱XSS。
  2. XSS攻擊,通常是指黑客通過“HTML注入”篡改了網頁,插入了惡意的腳本,從而在客用戶瀏覽網頁時,控制用戶瀏覽器的一種攻擊。
  3. XSS分類
    • 反射型XSS
    • 存儲型XSS
    • DOM Based XSS

3.2 XSS攻擊進階

  1. XSS Payload
    • JavaScript腳本
    • 最簡單的:竊取Cookie的XSS Payload
      • Cookie的“HttpOnly”標識可以防止“Cookie劫持”
  2. 強大的XSS Payload
    • 構造GET與POST請求
      • 刪除博客:JacvaScript代碼
      • 提交表單:JavaScript發出POST請求
        • HTML代碼構造表單
        • XMLHttpRequest發送POST請求
    • 瀏覽器的擴展和插件
    • CSS History Hack
    • 獲取用戶的真實IP地址
      • Javascript本身沒有此能力。藉助第三方軟件來完成
      • 如調用Java Applet的接口獲取客戶端的本地IP地址。
  3. XSS攻擊平臺
    • Attack API
    • BeEF
    • XSS-Proxy
  4. 終極武器:XSS Worm
    • Samy Worm
      • 一般來說,用戶之間發生交互行爲的頁面,如果存在存儲型XSS,則比較容易發起XSS Worm攻擊。
    • 百度空間蠕蟲
  5. 調試JavaScript
    • 調試JavaScript,需要有很好的JavaScript工地,調試JavaScript是必不可少的技能。
    • Firebug
    • IE 8 Developer Tools
    • Fiddler
    • HttpWatch
  6. XSS構造技巧
    • 利用字符編碼
    • 繞過長度限制
      • 利用事件(Event)縮短所需要的字節數
      • 最好的辦法是把XSS Payload寫到別處,再通過簡短的代碼加載這段XSS Payload
        • loacation.hash
      • 利用註釋符繞過長度限制
    • 使用<base>標籤
    • window.name的妙用
  7. 變廢爲寶:Mission Impossible
    • Apache Expect Header XSS
    • Anehta的迴旋鏢
  8. 容易被忽視的角落:Flash XSS
    • 在Flash中是可以嵌入ActionScript腳本的
  9. 真的高枕無憂嗎:JavaScript框架

3.3XSS的防禦

  1. HttpOnly
  2. 輸入檢查
  3. 輸出檢查
    • 安全的編碼函數
    • 只需一種編碼嗎
  4. 正確地防禦XSS
    • XSS的本質還是一種“HTML”注入,用戶的數據被當成了HTML代碼一部分來執行,從而混淆了原來的語義,產生了新的語義。
    • 想要根治XSS問題,可以列出所有XSS可能發生的場景,再一一解決。
    • 下面用變量“$var”表示用戶數據,它將被填充入HTML代碼中。可能存在以下場景:
    • 在HTML標籤中輸出
    • 在HTML屬性中輸出
    • <script>標籤中輸出
    • 在CSS中輸出
    • 在地址中輸出
  5. 處理富文本
    • HTML
    • CSS
  6. 防禦DOM Based XSS
  7. 換個角度看XSS的風險
    • 前面談到的所有XSS攻擊,都是從漏洞形成的原理上看的。下面從業務風險的角度來看。
    • 一般來說,存儲型XSS的風險會高於反射型XSS
      • 從攻擊過程來說
        • 反射型XSS,一般要求攻擊者誘使用戶點擊一個包含XSS代碼的URL鏈接。
        • 存儲型XSS,則只需要讓用戶查看一個正常的URL鏈接。
      • 從風險的角度來看
        • 用戶之間有互動的頁面,是可能發起XSS Worm攻擊的地方。
        • 根據不同頁面的PageView高低,也可以分析出哪些頁面受XSS攻擊後的影響會更大。

3.4 小結

理論上,XSS漏洞雖然複雜,但卻是可以徹底解決的。

在設計XSS防禦方案時,深入理解XSS攻擊的原理,針對不同的場景使用不同的方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章