qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

          WEB測(cè)試番外之----XSS攻擊

          1.1 什么是XSS攻擊

            XSS攻擊:跨站腳本攻擊(Cross Site Scripting),為不和層疊樣式表(Cascading Style. Sheets, CSS)的縮寫混淆。故將跨站腳本攻擊縮寫為XSS。XSS是一種經(jīng)常出現(xiàn)在web應(yīng)用中的計(jì)算機(jī)安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。比如這些代碼包括HTML代碼和客戶端腳本。攻擊者利用XSS漏洞旁路掉訪問控制——例如同源策略(same origin policy)。這種類型的漏洞由于被駭客用來編寫危害性更大的phishing攻擊而變得廣為人知。對(duì)于跨站腳本攻擊,黑客界共識(shí)是:跨站腳本攻擊是新型的“緩沖區(qū)溢出攻擊“,而JavaScript是新型的“ShellCode”。
            數(shù)據(jù)來源:2007 OWASP Top 10的MITRE數(shù)據(jù)
            注:OWASP是世界上最知名的Web安全與數(shù)據(jù)庫安全研究組織
            從這張圖中我們看到,在2007年OWASP所統(tǒng)計(jì)的所有安全威脅中,跨站腳本攻擊占到了22%,高居所有Web威脅之首。
            XSS攻擊的危害包括
            1、盜取各類用戶帳號(hào),如機(jī)器登錄帳號(hào)、用戶網(wǎng)銀帳號(hào)、各類管理員帳號(hào)
            2、控制企業(yè)數(shù)據(jù),包括讀取、篡改、添加、刪除企業(yè)敏感數(shù)據(jù)的能力
            3、盜竊企業(yè)重要的具有商業(yè)價(jià)值的資料
            4、非法轉(zhuǎn)賬
            5、強(qiáng)制發(fā)送電子郵件
            6、網(wǎng)站掛馬
            7、控制受害者機(jī)器向其它網(wǎng)站發(fā)起攻擊

          1.2 XSS漏洞的分類

            XSS漏洞按照攻擊利用手法的不同,有以下三種類型:
            類型A,本地利用漏洞,這種漏洞存在于頁面中客戶端腳本自身。其攻擊過程如下所示:
            Alice給Bob發(fā)送一個(gè)惡意構(gòu)造了Web的URL。
            Bob點(diǎn)擊并查看了這個(gè)URL。
            惡意頁面中的JavaScript打開一個(gè)具有漏洞的HTML頁面并將其安裝在Bob電腦上。
            具有漏洞的HTML頁面包含了在Bob電腦本地域執(zhí)行的JavaScript。
            Alice的惡意腳本可以在Bob的電腦上執(zhí)行Bob所持有的權(quán)限下的命令。
            類型B,反射式漏洞,這種漏洞和類型A有些類似,不同的是Web客戶端使用Server端腳本生成頁面為用戶提供數(shù)據(jù)時(shí),如果未經(jīng)驗(yàn)證的用戶數(shù)據(jù)被包含在頁面中而未經(jīng)HTML實(shí)體編碼,客戶端代碼便能夠注入到動(dòng)態(tài)頁面中。其攻擊過程如下:
            Alice經(jīng)常瀏覽某個(gè)網(wǎng)站,此網(wǎng)站為Bob所擁有。Bob的站點(diǎn)運(yùn)行Alice使用用戶名/密碼進(jìn)行登錄,并存儲(chǔ)敏感信息(比如銀行帳戶信息)。
            Charly發(fā)現(xiàn)Bob的站點(diǎn)包含反射性的XSS漏洞。
            Charly編寫一個(gè)利用漏洞的URL,并將其冒充為來自Bob的郵件發(fā)送給Alice。
            Alice在登錄到Bob的站點(diǎn)后,瀏覽Charly提供的URL。
            嵌入到URL中的惡意腳本在Alice的瀏覽器中執(zhí)行,就像它直接來自Bob的服務(wù)器一樣。此腳本盜竊敏感信息(授權(quán)、信用卡、帳號(hào)信息等)然后在Alice完全不知情的情況下將這些信息發(fā)送到Charly的Web站點(diǎn)。
            類型C,存儲(chǔ)式漏洞,該類型是應(yīng)用最為廣泛而且有可能影響到Web服務(wù)器自身安全的漏洞,駭客將攻擊腳本上傳到Web服務(wù)器上,使得所有訪問該頁面的用戶都面臨信息泄漏的可能,其中也包括了Web服務(wù)器的管理員。其攻擊過程如下:
            Bob擁有一個(gè)Web站點(diǎn),該站點(diǎn)允許用戶發(fā)布信息/瀏覽已發(fā)布的信息。
            Charly注意到Bob的站點(diǎn)具有類型C的XXS漏洞。
            Charly發(fā)布一個(gè)熱點(diǎn)信息,吸引其它用戶紛紛閱讀。
            Bob或者是任何的其他人如Alice瀏覽該信息,其會(huì)話cookies或者其它信息將被Charly盜走。
            類型A直接威脅用戶個(gè)體,而類型B和類型C所威脅的對(duì)象都是企業(yè)級(jí)Web應(yīng)用,目前天清入侵防御產(chǎn)品所能防范的XSS攻擊包括類型B和類型C。

          編輯本段XSS攻擊與防御

          2.1 XSS的傳統(tǒng)防御技術(shù)

            2.1.1 基于特征的防御
            XSS漏洞和著名的SQL注入漏洞一樣,都是利用了Web頁面的編寫不完善,所以每一個(gè)漏洞所利用和針對(duì)的弱點(diǎn)都不盡相同。這就給XSS漏洞防御帶來了困難:不可能以單一特征來概括所有XSS攻擊。
            傳統(tǒng)XSS防御多采用特征匹配方式,在所有提交的信息中都進(jìn)行匹配檢查。對(duì)于這種類型的XSS攻擊,采用的模式匹配方法一般會(huì)需要對(duì)“javascript”這個(gè)關(guān)鍵字進(jìn)行檢索,一旦發(fā)現(xiàn)提交信息中包含“javascript”,就認(rèn)定為XSS攻擊。這種檢測(cè)方法的缺陷顯而易見:駭客可以通過插入字符或完全編碼的方式躲避檢測(cè):
            躲避方法1)在javascript中加入多個(gè)tab鍵,得到
            < IMG SRC="jav ascript.:alert('XSS');" >;
            躲避方法2) 在javascript中加入(空格)字符,得到
            < IMG SRC="javascri pt:alert('XSS');" >;
            躲避方法3) 在javascript中加入(回車)字符,得到
            < IMG SRC="jav
            ascript.:alert('XSS');" >;
            躲避方法4)在javascript中的每個(gè)字符間加入回車換行符,得到
            < IMG SRC="j\r\na\r\nv\r\n\r\na\r\ns\r\nc\r\nr\r\ni\r\np\r
            \nt\r\n:alert('XSS');" >
            躲避方法5)對(duì)"javascript.:alert('XSS')"采用完全編碼,得到
            < IMGSRC=javascrip?74:alert('XSS') >
            上述方法都可以很容易的躲避基于特征的檢測(cè)。而除了會(huì)有大量的漏報(bào)外,基于特征的
            還存在大量的誤報(bào)可能:在上面的例子中,對(duì)上述某網(wǎng)站這樣一個(gè)地址,由于包含了關(guān)鍵字“javascript”,也將會(huì)觸發(fā)報(bào)警。
            2.1.2 基于代碼修改的防御
            和SQL注入防御一樣,XSS攻擊也是利用了Web頁面的編寫疏忽,所以還有一種方法就是從Web應(yīng)用開發(fā)的角度來避免:
            步驟1、對(duì)所有用戶提交內(nèi)容進(jìn)行可靠的輸入驗(yàn)證,包括對(duì)URL、查詢關(guān)鍵字、HTTP頭、POST數(shù)據(jù)等,僅接受指定長度范圍內(nèi)、采用適當(dāng)格式、采用所預(yù)期的字符的內(nèi)容提交,對(duì)其他的一律過濾。
            步驟2、實(shí)現(xiàn)Session標(biāo)記(session tokens)、CAPTCHA系統(tǒng)或者HTTP引用頭檢查,以防功能被第三方網(wǎng)站所執(zhí)行。
            步驟3、確認(rèn)接收的的內(nèi)容被妥善的規(guī)范化,僅包含最小的、安全的Tag(沒有javascript),去掉任何對(duì)遠(yuǎn)程內(nèi)容的引用(尤其是樣式表和javascript),使用HTTP only的cookie。
            當(dāng)然,如上操作將會(huì)降低Web業(yè)務(wù)系統(tǒng)的可用性,用戶僅能輸入少量的制定字符,人與系統(tǒng)間的交互被降到極致,僅適用于信息發(fā)布型站點(diǎn)。并且考慮到很少有Web編碼人員受過正規(guī)的安全培訓(xùn),很難做到完全避免頁面中的XSS漏洞。

          2.2 天清入侵檢測(cè)產(chǎn)品的XSS防御

            正是由于傳統(tǒng)檢測(cè)方法存在諸多缺陷,天清入侵防御系統(tǒng)并未采用這一方法,而是采用了基于攻擊手法的行為檢測(cè)方法,其分析流程如下圖所示。
            首先對(duì)各種場(chǎng)景下的XSS攻擊樣本庫進(jìn)行整理和分類,并建立起XSS攻擊行為特征庫,在實(shí)時(shí)攻擊檢測(cè)階段,對(duì)所有可能實(shí)現(xiàn)XSS攻擊的數(shù)據(jù)來源,如HTTP-Refere、URL、COOKIE、表單數(shù)據(jù)等,進(jìn)行數(shù)據(jù)收集和初步分析,存在注入腳本的用戶提交信息才進(jìn)入下一步的XSS攻擊判斷。
            這種分析方法有以下幾點(diǎn)優(yōu)勢(shì):
            A:采用行為特征庫而非數(shù)據(jù)特征庫方式,可以避免由于檢測(cè)固定特征導(dǎo)致的誤報(bào)可能。
            B:內(nèi)置數(shù)據(jù)預(yù)處理過程,可以對(duì)所有可能包含XSS攻擊的數(shù)據(jù)進(jìn)行預(yù)處理,放行大部分正常HTTP請(qǐng)求,僅對(duì)少量疑似事件進(jìn)行深入分析,提升分析速度,降低資源開銷。
            C:XSS攻擊行為特征庫維護(hù)由啟明星辰公司AD-LAB(積極防御實(shí)驗(yàn)室)和博士后工作站負(fù)責(zé),AD-LAB擁有大批漏洞發(fā)掘和分析人員,2007年發(fā)現(xiàn)并獲得CVE編號(hào)的漏洞數(shù)量多達(dá)26個(gè),是國內(nèi)獨(dú)立發(fā)掘CVE漏洞數(shù)量最多的團(tuán)隊(duì)。啟明星辰博士后工作站是業(yè)內(nèi)第一家駐企業(yè)的信息安全博士后工作站,為產(chǎn)品算法實(shí)現(xiàn)、研究技術(shù)轉(zhuǎn)化提供有力保障。
            3 綜論
            XSS攻擊作為Web業(yè)務(wù)的最大威脅之一,不僅危害Web業(yè)務(wù)本身,對(duì)訪問Web業(yè)務(wù)的用戶也會(huì)帶來直接的影響,如何防范和阻止XSS攻擊,保障Web站點(diǎn)的業(yè)務(wù)安全,是定位于業(yè)務(wù)威脅防御的入侵防御產(chǎn)品的本職工作

          posted on 2011-10-31 16:52 順其自然EVO 閱讀(261) 評(píng)論(0)  編輯  收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄

          <2011年10月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 延长县| 威海市| 姚安县| 金华市| 汝阳县| 平谷区| 台湾省| 南康市| 台中县| 玛沁县| 新化县| 恩平市| 安达市| 六盘水市| 墨竹工卡县| 石嘴山市| 周至县| 保定市| 兴仁县| 阜南县| 大足县| 珲春市| 仙居县| 宁海县| 太谷县| 泗阳县| 澄迈县| 乐都县| 静宁县| 保德县| 江口县| 通州区| 从江县| 扶沟县| 凤阳县| 娱乐| 枣阳市| 安福县| 长武县| 集安市| 安国市|