一、什么是XSS?怎么發生的?
XSS(Cross site scripting)全稱為跨站腳本攻擊,是web程式中最常見的漏洞,指攻擊者在網頁中嵌入客戶端腳本(例如Javascript),當用戶瀏覽此網頁時,腳本就會在用戶的瀏覽器上執行,從而達到攻擊者的目的,比如獲取用戶的cookie,導航到惡意網站,攜帶木馬病毒等,
其特點是不對服務器端造成任何傷害,而是通過一些正常的站內互動途徑,例如發布評論,提交含有JavaScript的內容文本,這時服務器端如果沒有過濾或轉義掉這些腳本,作為內容發布到了頁面上,其他用戶訪問這個頁面的時候就會運行這些腳本,

二、XXS漏洞的分類
XXS漏洞按照攻擊利用手法的不同,有以下三種型別:
型別A,本地利用漏洞:這種漏洞存在于頁面中客戶端腳本自身,其攻擊程序如下所示:
Alice給Bob發送了一個惡意構造了web的URL,
Bob點擊并查看了這個URL,
惡意頁面中的Javascript打開了一個具有漏洞的HTML頁面并將其安裝在Bob電腦上,
具有漏洞的HTML頁面包含了在Bob電腦本地域執行的Javascript,
Alice的惡意腳本可以在Bob的電腦上執行Bob所持有的權限下的命令,
型別B,反射式漏洞:這種漏洞和型別A有些類似,不同的是web客戶端使用server端腳本生成頁面為用戶提供資料時,如果未經驗證的用戶資料被包含在頁面中而未經HTML物體編碼,客戶端代碼便能夠注入到動態頁面中,其攻擊程序如下:;
Alice經常瀏覽某個網站,此網站為Bob所擁有,Bob的站點運行Alice使用用戶名/密碼進行登錄,并存盤敏感資訊(比如銀行賬戶資訊),
charly發現Bob的站點包含反射性地XSS漏洞,
charly撰寫一個利用漏洞的URL,并將其冒充為來自Bob的郵件發送給Alice,
Alice在登陸到Bob的站點后,瀏覽charly提供的URL,
嵌入到URL中的惡意腳本在Alice的瀏覽器中執行,就像它直接來自Bob的服務器一樣,
此腳本盜竊敏感資訊(授權、信用卡、賬號資訊等),然后在Alice完全不知情的情況下將這些資訊發送到charly的web站點,
型別C,存盤式漏洞:該型別是應用最為廣泛而且有可能影響到web服務器自身安全的漏洞,駭客將攻擊腳本上傳到web服務器上,使得所有訪問該頁面的用戶都面臨資訊泄露的可能,其中包括了web服務器的管理員,其攻擊程序如下:
Bob擁有一個web站點,該站點允許用戶發布資訊/瀏覽已發布的資訊,
charly注意到Bob的站點具有型別C的XSS漏洞,
charly發布一個熱點資訊,吸引其他用戶紛紛閱讀,
Bob或是任何的其他人如Alice瀏覽了該資訊,其會話cookie或其他資訊將被charly盜走,
型別A直接威脅用戶個體,而型別B和型別C所威脅的物件都是企業級web應用,
三、XSS的防御措施
原則:不相信客戶輸入的資料
注意:攻擊代碼不一定在<script></script>中
1.將重要的cookie標記為http only,這樣的話JavaScript中的document.cookie陳述句就不能獲取到cookie了
2.只允許用戶輸入我們期望的資料,例如:年齡的textbox中,只允許用戶輸入數字,而數字之外的字符都過濾掉,
3.對資料進行HTML encode 處理

4.過濾或移除特殊的HTML標簽,例如:<script>,<iframe>,<;for<,>for>," for
5.過濾JavaScript事件的標簽,例如"onclick=","onfocus"等,
四、測驗XSS漏洞
方法一:查看代碼,查找關鍵的變數,客戶端將資料傳送給web服務器,一般通過三種方式Querystring,From表單,以及cookie,例如在ASP的程式中,通過request物件獲取客戶端的變數,

假如變數沒有經過HTMLEncode處理,那么這個變數就存在一個XSS漏洞,
方法二:準備測驗腳本
在網頁中的textbox或其他能輸入資料的地方,輸入這些測驗腳本,看能不能彈出對話框,能彈出的話,說明存在XSS漏洞,
在URL中查看有哪些變數通過URL把值傳給了web服務器,把這些變數的值退換成我們測驗的腳本,然后看我們的腳本是否執行,
方式三:自動化測驗XSS漏洞
現在已經有很多XSS掃描工具了,實作XSS自動化測驗非常簡單,只需要用HttpWebRequest類,把包含XSS測驗腳本,發送給web服務器,然后查看HttpWebResponse中,我們的XSS測驗腳本是否已經注入進去了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/175735.html
標籤:其他
上一篇:三次握手四次揮手
