1. 程式人生 > >WEB漏洞 XSS(一)

WEB漏洞 XSS(一)

scripting dos ror ram image web 就會 xss過濾 表達

1、xss的形成原理

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

2、xss的分類

xss根據特性和利用方式可以分成三大類,反射性xss 、存儲型xss、DOM型xss、

反射性: 一般出現在URL參數中,以及網站搜索欄中,由於需要點擊包含惡意代碼的URL才可以觸發,並且只能觸發一次,也稱為非持久性xss。

存儲型:一般出現在留言板上,評論處,個人資料填寫,等需要用戶可以對網站寫入數據的地方,比如一個論壇處由於對用戶輸入過濾不嚴格,導致攻擊者在寫入一段竊取cookie的惡意JavaScript代碼到評論處,這段惡意代碼會寫入數據庫中,當其他用戶瀏覽寫入代碼的頁面時,網站從數據庫中讀取惡意代碼顯示到網頁中被瀏覽器執行,導致用戶的cookie被竊取攻擊者無需受害者密碼既可以登陸賬戶,所以也被成為持久性xss,持久性xss比反射性xss危害性大得多。

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

4、代碼分析

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

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

下面我將用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:

服務器端核心代碼:

技術分享圖片

WEB漏洞 XSS(一)