WEB漏洞 XSS(一)

一、xss的造成原理html

xss 中文名是「跨站腳本攻擊」,英文名「Cross Site Scripting」。
xss也是一種注入攻擊,當web應用對用戶輸入過濾不嚴格,攻擊者寫入惡意的腳本代碼(HTML、JavaScript)到網頁中時,若是用戶訪問了含有惡意代碼的頁面,惡意腳本就會被瀏覽器解析執行致使用戶被攻擊。
常見的危害有:cookie竊取,session劫持,釣魚攻擊,蠕蟲,ddos等。前端

二、xss的分類web

    xss根據特性和利用方式能夠分紅三大類,反射性xss 、存儲型xss、DOM型xss、正則表達式

  反射性: 通常出如今URL參數中,以及網站搜索欄中,因爲須要點擊包含惡意代碼的URL才能夠觸發,而且只能觸發一次,也稱爲非持久性xss。數據庫

  存儲型:通常出如今留言板上,評論處,我的資料填寫,等須要用戶能夠對網站寫入數據的地方,好比一個論壇處因爲對用戶輸入過濾不嚴格,致使攻擊者在寫入一段竊取cookie的惡意JavaScript代碼到評論處,這段惡意代碼會寫入數據庫中,當其餘用戶瀏覽寫入代碼的頁面時,網站從數據庫中讀取惡意代碼顯示到網頁中被瀏覽器執行,致使用戶的cookie被竊取攻擊者無需受害者密碼既能夠登錄帳戶,因此也被成爲持久性xss,持久性xss比反射性xss危害性大得多。瀏覽器

三、dom型xss DOM xss是基於dom文件對象模型的,前端腳本經過dom動態修改頁面,因爲不予服務端運行交互,並且代碼是可見的,從前端獲取dom中的數據在本地執行。常見的能夠操做的dom對象有:url、location、referrer等。dom型的xss比較特殊,是一種基於dom樹的xss,服務器端常用document.body.innertHtml等動態函數生成HTML頁面,若是這些函數在引用某些變量時沒有進行過濾檢查,就會產生dom型的xss。dom型的xss多是存儲型的也多是反射性的。安全

四、代碼分析服務器

 DVWA(Dam Vulnerable Web Application)DVWA使用PHP+MySQL編寫的一套常規的web漏洞教學和檢測web脆弱性的測試程序,包含了SQl注入、XSS、盲注入等常見的一些安全漏洞,你們能夠到官網上自行下載: http://www.dvwa.co.uk    cookie

   建議你們使用火狐瀏覽器,感謝火狐瀏覽器對xss不過濾,像百度 還用Chrome不少會自行對xss過濾。或者你們對瀏覽器進行設置一下。session

  下面我將用dvwa中的4個漏洞等級Low 、Medium、High、Impossible進行舉例、

     反射性測試: 響應的xss連接  http://192.168.108.13/vulnerabilities/xss_r/?name=%3Cscript%3Ealert%28%2Fxss%2F%29%3C%2Fscript%3E#

    服務器端核心代碼,能夠看到 帶xss沒用進行過濾處理,因此咱們能夠直接輸入 <script>alert(/xss/)</script>

  

xss 低級測試。

  

 中級測試:

   服務器核心代碼,能夠看到使用了 基於黑名單的思想利用 str_replace函數將<script>刪除,這種防禦機制是能夠繞過的 。

   雙寫繞過:

        輸入<sc<script>ript>alert(/xss/)</script> 

    相應的xss連接http://192.168.108.13/vulnerabilities/xss_r/?name=%3Csc%3Cscript%3Eript%3Ealert%28%2F%E5%8F%8C%E5%86%99xss%2F%29%3C%2Fscript%3E#

 

 

  大小寫混寫繞過: 輸入<ScRipt>alert(/xss/)</script>

     相應的連接 http://192.168.108.13/vulnerabilities/xss_r/?name=%E8%BE%93%E5%85%A5%3CScRipt%3Ealert%28%2F%E5%A4%A7%E5%B0%8F%E5%86%99%E6%B7%B7%E7%94%A8xss%2F%29%3C%2Fscript%3E#

高級測試:

    服務器端代碼:High高級級別的代碼一樣適用了黑名單過濾,preg_replace() 函數用於正則表達式的搜索和替換,因此雙寫和大小寫替換都不能繞過,可是可使用img、body等標記時間或者iframe等標籤的src注入惡意的js代碼。  輸入 <img src=1 onerror=alert(/xss/)>   URL連接http://localhost/vulnerabilities/xss_r/?name=%3Cimg+src%3D1+onerror%3Dalert%28%2F%E9%AB%98%E7%BA%A7xss%2F%29%3E#

    

impossible: 顯然這種是過濾效果最好的。

 服務器核心代碼以下截圖:能夠看到impossible級別的代碼使用htmlspecialchar函數將預約義的字符 &  "  、 ’  <  > 轉換成HTML實體,防止瀏覽器將其做爲HTML元素 。

存儲型  XXS  

   下面對存儲型的的xss 型的說明:

    low: 

   服務器端核心代碼:  

相關文章
相關標籤/搜索