XSS漏洞基礎


什么是XSS?

  • XSS全程Cross-site scripting,跨站腳本攻擊。惡意攻擊者往Web頁面里插入html代碼,當用戶瀏覽該頁之時,嵌入其中Web里面的html代碼會被執行,從而達到惡意用戶的特殊目的。

 

XSS的危害:

  • 盜取用戶或者管理員的Cookie
  • XSS Worm
  • 掛馬(水坑攻擊)
  • 有局限性的鍵盤記錄

......等等一些其它的姿勢

 

XSS的分類:

  • DOM-based XSS:DOM XSS與反射型XSS的差別在於DOM XSS代碼不需要服務器解析響應的直接參與,觸發XSS靠的是瀏覽器DOM解析器的解析,可以完全認為是客戶端的事情。
  • 反射型XSS:反射型XSS又稱為非持久型XSS。XSS代碼出現在URL參數或者請求中,瀏覽器發出請求時,參數值作為輸入提交到服務器,服務器接受處理后參數值出現在響應的HTML中,最后瀏覽器解析執行了這段XSS代碼。
  • 存儲型XSS:又稱持久型XSS,他和反射型XSS最大的不同就是,攻擊腳本將被永久地存放在目標服務器的數據庫或文件中。
  • Flash XSS:利用的是網頁上flash文件缺陷來執行js腳本,一般是反射型xss。

 

XSS手動挖掘

  • 看URL參數輸出的位置
  • 看輸入框輸出位置

輸出點位置:

1.輸出在標簽外:

  • 需要可以構造標簽,如果不能構造標簽就不存在XSS漏洞

2.輸出到標簽中:

  • 如果輸出在“雙引號或者‘單引號內部,需要能夠閉合引號,如果不能閉合引號,就需要看能否在當前的標簽屬性中執行js代碼,如果不能,就不存在xss漏洞。
  • 如果沒有輸出在”雙引號或者’單引號內部,或者可以閉合引號,可以構造一個新的屬性,使用新的屬性的值來執行js代碼,比如事件屬性。

3.輸出到script標簽中:

  • @如果輸出在“雙引號或者‘單引號內部,需要能夠閉合引號
  • @如果不能閉合引號,需要看當前變量能不能innerHTML或者document.write,插入到網頁中,如果可以就可以構造XSS,如果沒有,就不存在XSS(引號內部可以使用unicode編碼,<不能編碼)
  • @如果輸出“雙引號或者‘單引號內部,需要能夠閉合引號,如果可以閉合引號,就可以直接傳遞進去js代碼,使用注釋符號,注釋掉后面的js代碼就可以構造xss

 

XSS防御

  • 對XSS的防御需要根據實際情況對用戶的輸入進行嚴格的過濾。基於過濾的XSS防御方式通常可分為兩種:基於黑名單的過濾和基於白名單的過濾。后者的防御效果往往更好,對於用戶在白名單之外的輸入,可以直接忽略。在構造白名單的過程中需要保證在不影響用戶體驗的同時,盡可能杜絕一切不必要的輸入內容。
  • 在cookie中加入httponly屬性可以在一定程度上保護用戶的cookie,減少出現XSS時損失
  •  (1,apache2.2.x;2.注冊網站,把攻擊者自己的加了httponly的cookie復制過去,補全信息)
  • Flash XSS的修復需要對相應的flash進行修改或升級替換。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM