999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種XSS漏洞檢測系統(tǒng)分析與設(shè)計

2019-06-06 04:21:26趙躍華吳東耀
軟件導(dǎo)刊 2019年3期

趙躍華 吳東耀

摘 要:近年來跨站腳本(XSS)漏洞占據(jù)十大計算機(jī)網(wǎng)絡(luò)安全漏洞第3名位置,對互聯(lián)網(wǎng)安全形成嚴(yán)重威脅。目前大多數(shù)檢測方案無法兼顧反射型、存儲型和基于文檔對象模型的XSS漏洞。為提高檢測準(zhǔn)確率,設(shè)計一種結(jié)合黑盒測試與動態(tài)污點分析技術(shù)的XSS漏洞檢測方案并優(yōu)化XSS攻擊向量選擇策略。該策略首先篩選XSS攻擊向量模版,檢測時對應(yīng)不同注入點實時生成不同XSS攻擊向量,并根據(jù)過濾規(guī)則集測試結(jié)果進(jìn)行反過濾變換。對比實驗表明,該方案可以提高XSS漏洞檢測能力,同時檢測時間開銷較小。

關(guān)鍵詞:跨站腳本漏洞;漏洞檢測;黑盒測試;動態(tài)污點分析技術(shù)

DOI:10. 11907/rjdk. 181944

中圖分類號:TP309文獻(xiàn)標(biāo)識碼:A文章編號:1672-7800(2019)003-0162-06

0 引言

目前,互聯(lián)網(wǎng)已滲透列各行各業(yè),為客戶提供快捷服務(wù)的同時,也暴露出越來越嚴(yán)重的安全問題,其中Web應(yīng)用程序安全問題尤為突出。伴隨“Web 2.0”概念[1]的提出,動態(tài)網(wǎng)頁逐漸取代靜態(tài)網(wǎng)頁,改進(jìn)了用戶與Web應(yīng)用程序的交互體驗,動態(tài)網(wǎng)頁允許用戶修改內(nèi)容后返回客戶端瀏覽器,但是如果服務(wù)器對用戶提交的內(nèi)容不進(jìn)行有效過濾,攻擊者可利用該漏洞攻擊服務(wù)器端和客戶端,這是XSS產(chǎn)生攻擊的主要原因[2]。社交網(wǎng)站一直是XSS攻擊的重災(zāi)區(qū),國外大型社交網(wǎng)站如Facebook、Twitter等也不能幸免[3]。XSS攻擊破壞力和影響力極強(qiáng),給企業(yè)和普通用戶帶來重大損失。

傳統(tǒng)做法按照“是否把數(shù)據(jù)存儲在服務(wù)器端”的標(biāo)準(zhǔn)進(jìn)行分類,將XSS分為反射型和存儲型XSS[4],前者簡單地把XSS代碼“反射”給瀏覽器,后者則把XSS代碼存儲在服務(wù)器端,等訪客訪問該網(wǎng)頁時即刻觸發(fā)XSS攻擊,具有更持久的破壞力,但是DOM型XSS不依賴客戶端向服務(wù)器端發(fā)送XSS代碼,以文檔對象模型為基礎(chǔ),即利用DOM樹執(zhí)行代碼,因此對于DOM型XSS漏洞的檢測更加復(fù)雜和困難[5]。

國內(nèi)外專家提出各種檢測XSS漏洞的方法,黑盒測試和白盒測試是其中最常見的兩種,前者是基于運行目標(biāo)代碼對象的漏洞檢測技術(shù)[6],后者是基于源代碼對象的漏洞檢測技術(shù)[7]。Gupta & Gupta[8]提出一種通過逆向分析數(shù)據(jù)流的靜態(tài)分析方法,應(yīng)用于基于Java的Web應(yīng)用程序XSS漏洞檢測,該方法對于XSS漏洞檢測效率較高,缺點是只能應(yīng)用于基于Java的Web應(yīng)用程序,且需要Web應(yīng)用程序源碼。Liu & Zhao等[9]提出基于動態(tài)分析的最優(yōu)攻擊向量庫XSS漏洞檢測方法。該方法自動生成一個攻擊向量庫,并使用優(yōu)化模式不斷優(yōu)化攻擊向量庫,然后自動檢測Web應(yīng)用程序中的XSS漏洞,但其中機(jī)器學(xué)習(xí)算法還需進(jìn)一步優(yōu)化,才能提高攻擊向量庫完整性和有效性。李潔、俞研等[10]提出基于動態(tài)污點傳播模型的檢測方法。該方法主要使用函數(shù)劫持技術(shù)檢測污點數(shù)據(jù),根據(jù)檢測情況分析是否產(chǎn)生漏洞,該方法比以往DOM型XSS檢測在準(zhǔn)確率和效率方面有明顯提升,但需繼續(xù)完善污點數(shù)據(jù)集、進(jìn)一步提高自動化程度。李楠[11]提出一種灰盒測試的檢測方法,該方法運用編譯原理技術(shù)構(gòu)建源代碼抽象語法樹和程序控制流圖,審查所有被調(diào)用的敏感函數(shù),然后跟蹤和分析以上函數(shù)中敏感參數(shù)數(shù)據(jù)流,最后進(jìn)行動態(tài)驗證,檢查是否存在XSS漏洞,同時利用污點分析技術(shù)檢測DOM型XSS漏洞。該方法對PHP語言編寫的網(wǎng)站XSS漏洞檢測效果較好,但該方法需獲知Web應(yīng)用程序源碼,由于限制了編程語言,所以該方法局限性較大。Wang &Xu等[12]提出基于客戶端污點跟蹤的檢測方法,建立了基于該方法的動態(tài)檢測框架,通過重寫所有JavaScript特性和DOM相關(guān)API,在瀏覽器渲染過程完成后標(biāo)記和追蹤污點數(shù)據(jù),該方法對于DOM型XSS檢測準(zhǔn)確率較高,但需進(jìn)一步提高XSS攻擊向量生成效率。Pan &Mao[13]提出一種結(jié)合靜態(tài)分析和動態(tài)分析的檢測方法。該方法使用一個采用兩階段混合分析的檢測框架,第一階段由文本過濾器和抽象語法樹分析器組成輕量級靜態(tài)分析,第二階段執(zhí)行動態(tài)符號。該檢測框架對于DOM型XSS漏洞檢測準(zhǔn)確率高、誤報率低,缺點是僅能檢測DOM型XSS漏洞。

綜上所述,雖然國內(nèi)外關(guān)于XSS漏洞檢測已積累較豐富的研究成果,但還存在一些不完善的地方。基于白盒測試的檢測方法通過分析系統(tǒng)源代碼實現(xiàn)XSS漏洞檢測,研究證明其對XSS漏洞檢測準(zhǔn)確率較高,但由于需獲得Web應(yīng)用程序系統(tǒng)源代碼,且限定開發(fā)語言或腳本語言,因此該方法局限性較高。而基于黑盒測試的方法雖不需要程序內(nèi)部結(jié)構(gòu)和源碼,但普遍存在攻擊向量針對性不強(qiáng)的缺點,部分基于黑盒測試的方法存在無法檢測或僅能檢測DOM型XSS漏洞的缺點。本文基于現(xiàn)有檢測方法存在的不足,設(shè)計一種結(jié)合黑盒測試和動態(tài)污點分析的XSS漏洞檢測方案,該方案可高效、全面檢測XSS漏洞。

1 設(shè)計思路

雖然白盒測試比黑盒測試檢測效率高,但對被檢測網(wǎng)站要求較高,且自動化程度較低,因此普適性較差。本文檢測方案設(shè)計目標(biāo)是高效且全面地檢測XSS漏洞,可滿足大多數(shù)待檢測網(wǎng)站的檢測需求,因此黑盒測試更適合本方案。傳統(tǒng)黑盒測試對于反射型和存儲型XSS漏洞檢測準(zhǔn)確率較高,而DOM型XSS漏洞和其它漏洞最大區(qū)別在于對其攻擊不需要服務(wù)器返回提交的XSS代碼,由瀏覽器接收并由解釋器執(zhí)行,因此傳統(tǒng)黑盒測試無法找到對應(yīng)的XSS代碼,從而導(dǎo)致無法檢測DOM型XSS漏洞。動態(tài)污點分析可以追蹤Web應(yīng)用程序運行時瀏覽器如何操作數(shù)據(jù)流,并且記錄操作過程中數(shù)據(jù)流傳播路線,通過實時監(jiān)測判斷敏感數(shù)據(jù)流是否有被泄漏的可能性[14],從而找到DOM型XSS漏洞注入點,繼而可發(fā)現(xiàn)是否存在DOM型XSS漏洞。因此動態(tài)污點分析可有效檢測DOM型XSS漏洞,但無法有效檢測反射型和存儲型XSS漏洞。本方案在黑盒測試的基礎(chǔ)上,同時結(jié)合動態(tài)污點分析,使兩者優(yōu)勢互補(bǔ),提高準(zhǔn)確率的同時降低誤報率。

本方案首先獲取待檢測網(wǎng)站的Web網(wǎng)頁源碼,分析其使用的動態(tài)污點,對污點數(shù)據(jù)源進(jìn)行標(biāo)記、追蹤和檢測,并按照注入點判別依據(jù)查找DOM型XSS漏洞注入點;另外,使用傳統(tǒng)黑盒測試中字符串匹配的方法,按照注入點判別依據(jù)查找反射型和存儲型XSS漏洞注入點;然后,對每個注入點生成相應(yīng)XSS攻擊向量,并利用黑盒測試對3種注入點進(jìn)行注入攻擊;最后,根據(jù)服務(wù)器響應(yīng)信息判斷是否存在漏洞,輸出XSS漏洞檢測結(jié)果。

2 關(guān)鍵技術(shù)分析與改進(jìn)

因為XSS攻擊向量的選擇直接影響檢測能力和效率,所以黑盒測試對于XSS攻擊向量的要求較高,目前關(guān)于XSS攻擊向量的選擇有兩種常用策略。

(1)直接選擇現(xiàn)有的XSS攻擊向量庫進(jìn)行變換后使用。該策略的優(yōu)點是可減少工作量,可以應(yīng)對大部分檢測需求,缺點是過于依賴該XSS攻擊向量庫完備性。

(2)選擇基本的XSS攻擊向量模版,檢測時實時生成XSS攻擊向量。該策略的優(yōu)點是針對性強(qiáng),可減少無意義的注入攻擊,提高XSS攻擊向量的執(zhí)行成功率,從而提高系統(tǒng)檢測效率,但缺點是依賴于基本的XSS攻擊向量模版選擇,且合成和變換規(guī)則的優(yōu)劣直接影響檢測能力。

本文方案使用第二種策略,針對其中的不足,對關(guān)鍵技術(shù)進(jìn)行改進(jìn),優(yōu)化XSS攻擊向量的選擇策略,使XSS攻擊向量更符合實際檢測需求。首先進(jìn)行預(yù)處理,收集足夠多的原始XSS攻擊向量,對其篩選后處理生成XSS攻擊向量模版,形成完備性較高和冗余度較低的XSS攻擊向量模版庫;在漏洞檢測過程中,根據(jù)注入點的輸出點上下文提取XSS攻擊向量合成規(guī)則,該規(guī)則包括生成XSS攻擊向量時選擇何種XSS攻擊向量模版、閉合塊、額外塊,然后對待檢測網(wǎng)站進(jìn)行過濾規(guī)則集測試,形成相應(yīng)的過濾規(guī)則集,最后按照XSS攻擊向量合成規(guī)則對XSS攻擊向量模版進(jìn)行補(bǔ)齊,使之成為完整的XSS攻擊向量,再利用反過濾規(guī)則集變換規(guī)則,生成最終有效的XSS攻擊向量。根據(jù)注入點情況動態(tài)生成有針對性的XSS攻擊向量,使注入攻擊能更容易地得到有效的檢測結(jié)果。關(guān)鍵技術(shù)的改進(jìn)示意如圖1所示。

2.1 XSS攻擊向量模版生成

現(xiàn)有大多數(shù)選取策略根據(jù)主觀判斷從常見的XSS攻擊向量模版中選擇一部分,帶有較強(qiáng)主觀性,影響了選擇有效性,但如果選擇全部則影響后續(xù)檢測效率。為提高XSS攻擊向量模版有效性,首先收集足夠多的XSS攻擊向量,再經(jīng)過聚類算法處理,最后以等價類測試和人工篩選的方法選擇XSS攻擊向量模版,以達(dá)到使該XSS攻擊向量模版可兼顧檢測能力和檢測效率的目的。

聚類算法的目的是將大量數(shù)據(jù)劃分為不同的類,使用劃分方法的聚類算法是最合適的。劃分方法的聚類算法中K-means算法邏輯簡單、算法時耗小、復(fù)雜度低,適合頻繁調(diào)試和測試 [15],K-means算法如式(1)所示。

XSS攻擊向量模版生成流程如下:

(1)首先對收集到的原始XSS攻擊向量進(jìn)行反過濾規(guī)則集過濾的逆向處理,把XSS攻擊向量還原成未進(jìn)行過濾規(guī)則集變換的形態(tài)。

(2)依據(jù)對輸出點位置分類的分析,選擇K個XSS攻擊向量樣本,作為最原始的聚類中心。

(3)對于在XSS攻擊向量庫的每一條XSS攻擊向量,計算其與每個聚類中心Ck的Levenshtein距離[16]。

(4)根據(jù)聚類最近的原則,分別將它們分配給最相似的聚類中心代表的類。

(5)計算每個類中所有XSS攻擊向量Levenshtein距離均值,作為該類新聚類中心。

(6)計算所有XSS攻擊向量到其所屬聚類中心的Levenshtein距離平方和J(C)值。

(7)判斷聚類中心和J(C)值是否變化改變,如果是,則跳轉(zhuǎn)到步驟(3);如果否,繼續(xù)跳轉(zhuǎn)到步驟(8)。

(8)人工分析和評估結(jié)果,分析聚類算法的局部最優(yōu)解是否符合XSS漏洞檢測需要,并檢查生成的聚類中心是否符合邏輯。

(9)對結(jié)果評估是否認(rèn)同,如果是,則跳轉(zhuǎn)到步驟(10);如果否,根據(jù)對結(jié)果的分析重新選擇K(K可變化)個XSS攻擊向量作為初始樣本,跳轉(zhuǎn)到步驟(3)。

(10)通過等價類測試和人工篩選,剔除相同作用的XSS攻擊向量。

(11)根據(jù)步驟(10)的結(jié)果對XSS攻擊向量進(jìn)行處理,刪去用作閉合前面標(biāo)簽、屬性的閉合塊(例如:““>”、“>”)和用作閉合后面標(biāo)簽、屬性的額外塊(例如:“<”、“<””),生成XSS攻擊向量模版。

具體流程如圖2所示。

2.2 XSS攻擊向量合成規(guī)則提取

首先找到注入點的輸出點位置,判斷輸出點的類型,選擇對應(yīng)的注入點所使用的對應(yīng)XSS攻擊向量模版,再根據(jù)輸出點的上下文環(huán)境判斷閉合塊、額外塊的規(guī)則,XSS攻擊向量模版、閉合塊、額外塊即是XSS攻擊向量合成規(guī)則,最后根據(jù)合成規(guī)則組合成XSS攻擊向量。此策略相比較常用的選取策略,既能使XSS攻擊向量符合注入攻擊需求,減少了后續(xù)無效的注入攻擊,又能保證XSS攻擊向量在輸出點輸出后,上下文語法一致,從而使得XSS攻擊向量更容易執(zhí)行成功,繼而提高準(zhǔn)確率。

提取XSS攻擊向量合成規(guī)則流程如下:

(1)待提取隊列是否空,如果是,則結(jié)束,如果否,則跳轉(zhuǎn)到步驟(1)。

(2)找到注入點對應(yīng)輸出點的輸出位置,遍歷網(wǎng)頁源碼向前查找是否首次出現(xiàn)“=”,如果是跳轉(zhuǎn)到步驟(5),如果否則跳轉(zhuǎn)到步驟(3)。

(3)網(wǎng)頁源碼的位置往前查找首先出現(xiàn)“>”,判斷“<”和“>”中間的字符串。

(4)根據(jù)字符串判斷,如果是如果是HTML常規(guī)標(biāo)簽字符串則輸出點在HTML常規(guī)標(biāo)簽間,如果是HTML特殊標(biāo)簽字符串則輸出點在HTML特殊標(biāo)簽間,如果是“script”則輸出點在JavaScript中,如果是“style”則輸出點在CSS中。

(5)在網(wǎng)頁源碼中往前查找直到第一次出現(xiàn)空格,判斷空格和“=”之間的字符串。

(6)根據(jù)字符串判斷,如果是“value”則輸出點在HTML標(biāo)簽屬性中,如果是以“on”開頭的事件屬性字符串則輸出點在HTML事件屬性內(nèi),如果是“dynsrc”、“src”、“href”等屬性字符串則輸出點在JavaScript偽協(xié)議中,如果是“style”則輸出點在CSS中,如果都不是則繼續(xù)往前查找,找到“<”后面是“script”,則輸出點在JavaScript中。判斷結(jié)束后,將相關(guān)數(shù)據(jù)記錄,跳轉(zhuǎn)到步驟(7)。

(7)判斷輸出點類型,如果是在HTML標(biāo)簽屬性中、HTML事件屬性內(nèi)、JavaScript偽協(xié)議中、JavaScript中的輸出點,則從輸出點位置往前尋找“<”、“<””等字符串,根據(jù)對應(yīng)關(guān)系選擇“>”、“”>”等閉合塊,如果是在HTML特殊標(biāo)簽間的輸出點,其閉合塊為“”,如果是在JavaScript中的輸出點,則從輸出點往后尋找“>”、“”>”等字符串,根據(jù)對應(yīng)關(guān)系選擇“<”、“<””等額外塊。判斷結(jié)束后,將相關(guān)數(shù)據(jù)記錄,跳轉(zhuǎn)到步驟(1)。

具體流程如圖3所示。

2.3 過濾規(guī)則集測試

不同的網(wǎng)站對潛在XSS代碼的過濾不同,但其過濾形式、方法、規(guī)則及技術(shù)等相似,且均適用于有限的代碼[17]。常見的過濾規(guī)則集主要分為5類,分別是對敏感詞的操作、對內(nèi)容重編碼操作、服務(wù)器端對字符書寫方式操作、對編碼格式識別操作、對占位符的識別操作。

XSS代碼變換處理策略通常將XSS攻擊向量遍歷反過濾規(guī)則集變換,即無論服務(wù)器端使用何種過濾規(guī)則集,總是對每一條XSS攻擊向量進(jìn)行所有反過濾規(guī)則集變換,直到測試出XSS漏洞或者遍歷完畢。實際上絕大多數(shù)服務(wù)器采用的過濾規(guī)則集均基于固定模式,且過濾規(guī)則集有限,并不需要對于每一條XSS攻擊向量都進(jìn)行反過濾規(guī)則集變換。因此本文提出使用過濾規(guī)則集測試,當(dāng)獲知待測試網(wǎng)站服務(wù)器使用的過濾規(guī)則集,后續(xù)則采取對應(yīng)的反過濾規(guī)則集變換,使XSS攻擊向量變換更有針對性,減少注入攻擊次數(shù),從而提高檢測效率。

根據(jù)常見過濾規(guī)則集,構(gòu)造對應(yīng)的探子向量和XSS敏感詞組成的字符串,依次對注入點進(jìn)行注入攻擊測試,根據(jù)測試結(jié)果判斷采用何種過濾規(guī)則,經(jīng)過一系列測試得出目標(biāo)測試網(wǎng)站過濾規(guī)則集。

過濾規(guī)則集測試流程如下:

(1)構(gòu)造一條探子向量和XSS敏感詞組成的字符串,對該注入點進(jìn)行注入攻擊測試,定義該系列測試為M1,x。

(2)構(gòu)造一條探子向量和十進(jìn)制編碼的XSS敏感詞組成的字符串,對該注入點進(jìn)行注入攻擊測試,再構(gòu)造一條探子向量和十六進(jìn)制編碼的XSS敏感詞組成的字符串,對該注入點進(jìn)行注入攻擊測試,定義該系列測試為M2,x。

(3)構(gòu)造一條探子向量和小寫、大寫混寫的XSS敏感詞組成的字符串,對該注入點進(jìn)行注入攻擊測試,再構(gòu)造一條探子向量和半角、全角字符混寫的XSS敏感詞組成的字符串,對注入點進(jìn)行注入攻擊測試,定義該系列測試為M3,x。

(4)構(gòu)造一條探子向量和空格隨意插入的XSS敏感詞組成的字符串,對該注入點進(jìn)行注入攻擊測試,再依次構(gòu)造探子向量和Tab、回車及其它特殊占位符隨意插入的XSS敏感詞組成的字符串,對注入點進(jìn)行注入攻擊測試,定義該系列測試為M4,x。

(5)構(gòu)造一條探子向量和UTF-8編碼的XSS敏感詞組成的字符串,對該注入點進(jìn)行注入攻擊測試,再依次構(gòu)造探子向量和UTF-16、Unicode等編碼的XSS敏感詞組成的字符串,再對該注入點進(jìn)行注入攻擊測試,定義該系列測試為M5,x。

具體流程圖如圖4所示。

經(jīng)過以上測試后,根據(jù)測試結(jié)果確定過濾規(guī)則集,生成XSS攻擊向量時只需采取對應(yīng)的反過濾規(guī)則集變換即可使XSS攻擊向量有效繞過服務(wù)器端的過濾。

2.4 XSS攻擊向量生成

XSS攻擊向量生成需要根據(jù)注入點的XSS攻擊向量合成規(guī)則,選擇對應(yīng)的XSS攻擊向量模版,并合成為完整的XSS攻擊向量,再根據(jù)過濾規(guī)則集測試結(jié)果,進(jìn)行反過濾規(guī)則集變換規(guī)則[17],構(gòu)成有效的XSS攻擊向量,從而使其繞過服務(wù)器端的過濾后成功執(zhí)行。

生成XSS攻擊向量流程如下:

(1)根據(jù)輸出點類型,選取對應(yīng)類型標(biāo)識的XSS攻擊向量模版。

(2)根據(jù)XSS攻擊向量合成規(guī)則,選取對應(yīng)輸出點類型的XSS攻擊向量模版并對其進(jìn)行合成處理,再組合相應(yīng)的閉合塊和額外塊,使其成為完整的XSS攻擊向量,具體包括:①若出現(xiàn)在HTML常規(guī)標(biāo)簽間,XSS攻擊向量合成為[XSS攻擊向量模版];②若出現(xiàn)在HTML特殊標(biāo)簽間,XSS攻擊向量合成為[閉合塊]+[XSS攻擊向量模版];③若出現(xiàn)在標(biāo)簽之內(nèi),XSS攻擊向量合成為[閉合塊]+[XSS攻擊向量模版];④若出現(xiàn)在HTML事件屬性內(nèi),XSS攻擊向量合成為[XSS攻擊向量模版]或[閉合塊]+[XSS攻擊向量模版];⑤若出現(xiàn)在JavaScript偽協(xié)議中,XSS攻擊向量合成為[閉合塊]+[XSS攻擊向量模版];+//或[閉合塊]+[XSS攻擊向量模版];+a=”或[閉合塊]+[XSS攻擊向量模版];+運算符;⑥若出現(xiàn)在JavaScript中,XSS攻擊向量合成為 [XSS攻擊向量模版]或[閉合塊]+[XSS攻擊向量模版]或+[XSS攻擊向量模版]+[額外塊];⑦若出現(xiàn)在CSS中,XSS攻擊向量合成為[XSS攻擊向量模版]。

(3)如果是DOM型XSS漏洞注入點則流程結(jié)束,如果是反射型和存儲型XSS漏洞的注入點,即帶參數(shù)的URL和Form表單,則需根據(jù)過濾規(guī)則集選擇與其對應(yīng)的反過濾規(guī)則集變換規(guī)則 ,依次對完整的XSS攻擊向量進(jìn)行反過濾變換操作,得到最終的XSS攻擊向量。

3 XSS漏洞檢測系統(tǒng)設(shè)計

3.1 系統(tǒng)結(jié)構(gòu)

本文設(shè)計的XSS漏洞檢測系統(tǒng)采用多線程技術(shù),系統(tǒng)整體結(jié)構(gòu)分為三大部分,分別是注入點分析模塊、攻擊與分析模塊、數(shù)據(jù)庫。注入點分析模塊主要用于獲取XSS漏洞相關(guān)數(shù)據(jù),采用網(wǎng)絡(luò)爬蟲廣度優(yōu)先搜索策略,該模塊分為爬蟲子模塊和網(wǎng)頁分析子模塊;攻擊與分析模塊主要用于對XSS漏洞相關(guān)數(shù)據(jù)生成XSS攻擊向量,并對注入點進(jìn)行注入攻擊,通過接收服務(wù)器的響應(yīng)判斷是否存在XSS漏洞,該模塊分為模擬分析子模塊和漏洞檢測分析子模塊;數(shù)據(jù)庫保存XSS漏洞相關(guān)數(shù)據(jù)。系統(tǒng)結(jié)構(gòu)見圖5。

3.2 工作流程

首先輸入待檢測網(wǎng)站的URL,并且設(shè)定一個最深爬取深度,初始爬取深度為0,在數(shù)據(jù)庫中新建爬蟲URL表并將相關(guān)數(shù)據(jù)存入。爬蟲子模塊將根據(jù)URL下載網(wǎng)頁源碼,下載完成后更新爬蟲URL表中相關(guān)數(shù)據(jù),并將網(wǎng)頁源碼傳給網(wǎng)頁分析子模塊;網(wǎng)頁分析子模塊接收網(wǎng)頁源碼后渲染其JavaScript代碼,同時查找污點數(shù)據(jù)注入點并提取其XSS攻擊向量合成規(guī)則,在數(shù)據(jù)庫中新建待測試表并將相關(guān)數(shù)據(jù)存入數(shù)據(jù)庫,然后提取網(wǎng)頁源碼中的URL,經(jīng)過URL補(bǔ)全、非同源URL刪除、URL去重依次處理,在數(shù)據(jù)庫中新建爬蟲URL表并將相關(guān)數(shù)據(jù)存入,再將其爬取深度設(shè)為當(dāng)前爬取深度加1,同時提取帶參數(shù)的URL和Form表單,在數(shù)據(jù)庫中新建待測試表并與相關(guān)數(shù)據(jù)存入其中,完成一次循環(huán)。反復(fù)循環(huán)直到待下載隊列為空,或者當(dāng)前爬取深度大于等于最深爬取深度,結(jié)束注入點分析模塊運行。

XSS攻擊向量模版管理模塊將對數(shù)據(jù)庫中的模版進(jìn)行增加、刪除和修改。模擬攻擊子模塊首先從數(shù)據(jù)庫中選擇類型為帶參數(shù)的URL和Form表單的待測試表,對其注入點使用探子向量模擬攻擊,查找響應(yīng)的網(wǎng)頁進(jìn)行探子向量,從而查找注入點和輸出點的對應(yīng)關(guān)系,同時提取其XSS攻擊向量合成規(guī)則,更新其待測試表中相關(guān)數(shù)據(jù),循環(huán)直到該類待測試表遍歷完畢,然后選取一條注入點進(jìn)行過濾規(guī)則集測試,測試對應(yīng)網(wǎng)站過濾規(guī)則集。最后從所有待測試表中依次取出注入點數(shù)據(jù),根據(jù)其XSS攻擊向量合成規(guī)則,再選取對應(yīng)的XSS攻擊向量模版,對其進(jìn)行XSS攻擊向量合成和反過濾規(guī)則集變換,成為有效的XSS攻擊向量,使用XSS攻擊向量對注入點進(jìn)行注入攻擊,注入攻擊后,漏洞檢測分析子模塊接收服務(wù)器響應(yīng),進(jìn)行本地瀏覽器渲染,判斷是否存在XSS漏洞,如果存在則在數(shù)據(jù)庫中新建檢測結(jié)果表并存入相關(guān)數(shù)據(jù),如果不存在則繼續(xù)下一條XSS攻擊向量,直到該注入點的XSS攻擊向量全部測試完畢或者測試出其存在XSS漏洞。注入攻擊循環(huán)遍歷完成所有待測試表,此時所有注入點的XSS漏洞已測試完畢,最后生成檢測報告。

系統(tǒng)工作流程如圖6所示。

4 對比實驗

為驗證本系統(tǒng)漏洞檢測性能,搭建測試環(huán)境,其由兩個部分組成:一個是服務(wù)器端,用于部署搭建被測試網(wǎng)站;另一個是客戶端,用于部署本檢測系統(tǒng),通過和服務(wù)器端交互數(shù)據(jù)達(dá)到檢測目的,測試環(huán)境軟件和硬件見表1。

測試樣本是由Google和米蘭理工大學(xué)一起合作研發(fā)的Firing Range[18],該項目為測試自動化掃描軟件能力搭建一個測試環(huán)境,驗證軟件檢測能力。測試對比系統(tǒng)為Burp Suite 1.7.27[19]、Acunetix Web Vulnerability Scanner 10.0[20](AWVS),均為較成熟的XSS漏洞檢測工具。將本系統(tǒng)和Burp Suite、AWVS的實驗測試結(jié)果匯總,如表2所示。

分別計算Burp Suite、AWVS和本系統(tǒng)檢測的準(zhǔn)確率和誤報率,如表3所示。

由表2、表3可看出,Burp Suite對于反射型和存儲型XSS漏洞檢測效果較好,其無法檢測的漏洞多數(shù)是DOM型,Burp Suite誤報了4個漏洞,其中包括3種XSS漏洞,并且時間開銷較大;AWVS對于3種XSS漏洞檢測效果均較好,對于反射型和存儲型XSS漏洞檢測效果和本系統(tǒng)基本持平,但對DOM型檢測效果相比本系統(tǒng)相差較明顯,AWVS對于DOM型檢測準(zhǔn)確率較高,誤報率同樣較高,但其時間開銷較小;而本系統(tǒng)相對Burp Suite、AWVS漏洞檢測效果均有提升,對于3種XSS漏洞檢測的準(zhǔn)確率均有提高且漏報率均有所降低,其中對于DOM型的準(zhǔn)確率有明顯提升,且本系統(tǒng)時間開銷最小。綜上所述,本系統(tǒng)相較于Burp Suite、AWVS,在準(zhǔn)確率、誤報率方面有一定優(yōu)勢,時間開銷相比Burp Suite有所降低,但和AWVS基本持平,因此在時間開銷方面優(yōu)勢較小。

5 結(jié)語

本文設(shè)計了一種結(jié)合黑盒測試和動態(tài)污點分析的方案,優(yōu)化了其中涉及XSS攻擊向量選擇的關(guān)鍵技術(shù),設(shè)計并實現(xiàn)了該方案原型系統(tǒng),通過對比實驗發(fā)現(xiàn)本文設(shè)計的系統(tǒng)可高效、全面檢測3種不同XSS漏洞。但系統(tǒng)依然存在一些不足,一些反射型XSS會引起DOM型XSS,還無法檢測客戶端和服務(wù)器代碼混合的情況,下一步將更加深入研究XSS攻擊向量,完善系統(tǒng)使其可對該類情況進(jìn)行有效檢測。

參考文獻(xiàn):

[1] O'REILLY T. What is Web 2.0: design patterns and business models for the next generation of software[J]. Communications & Strategies ,2007, 97(7):253-259.

[2] SHANMUGAM J, PONNAVAIKKO M. XSS application worms: New internet infestation and optimized protective measures[C]. Eighth ACIS International Conference on Software Engineering, Artificial Intelligence, Networking, and Parallel/Distributed Computing, 2007:1164-1169.

[3] WANG X, ZHANG W. Cross-site scripting attacks procedure and prevention strategies[C]. MATEC Web of Conferences,2016:1-3.

[4] WASSERMANN G. Static detection of cross-site scripting vulnerabilities[C]. ACM/IEEE International Conference on Software Engineering, 2008:171-180.

[5] HOLM H. Performance of automated network vulnerability scanning at remediating security issues[J]. Computers & Security, 2012, 31(2):164-175.

[6] 王希忠, 黃俊強(qiáng). 漏洞挖掘技術(shù)研究[J]. 信息安全與技術(shù), 2014(6):32-35.

[7] GUPTA S, GUPTA B B. PHP-sensor:a prototype method to discover workflow violation and XSS vulnerabilities in PHP web applications[C]. Proceedings of the 12th ACM International Conference on Computing Frontiers,2015:1-8.

[8] LIU Y, ZHAO W, WANG D, et al. A XSS vulnerability detection approach based on simulating browser behavior[C]. International Conference on Information Science and Security,2015:1-4.

[9] 李潔,俞研,吳家順. 基于動態(tài)污點分析的DOM XSS漏洞檢測算法[J]. 計算機(jī)應(yīng)用, 2016, 36(5):1246-1249.

[10] 李楠. 一種XSS漏洞灰盒檢測方案的設(shè)計與實現(xiàn)[D]. 成都:電子科技大學(xué),2017.

[11] WANG R, XU G, ZENG X, et al. TT-XSS: a novel taint tracking based dynamic detection framework for DOM cross-site scripting[J]. Journal of Parallel & Distributed Computing, 2017,118(8):100-106.

[12] PAN J,MAO X. Detecting DOM-sourced cross-site scripting in browser extensions[C]. IEEE International Conference on Software Maintenance and Evolution, 2017:24-34.

[13] LEEK T R,BAKER G Z,BROWN R E, et al. Coverage maximization using dynamic taint tracing[J]. American Journal of Orthodontics & Dentofacial Orthopedics,2007, 103(413):571.

[14] HARTIGAN J A. A K-means clustering algorithm[J]. Application of Statistics, 1979, 28(1):100-108.

[15] MILLER F P, VANDOME A F, MCBREWSTER J. Levenshtein distance[M]. London:Alpha Press,2009.

[16] LIU B W. XSS vulnerability scanning algorithm based on anti-filtering rules[C]. 2017 International Conference on Computer, Electronics and Communication Engineering,2017:5.

[17] 吳子敬,張憲忠,管磊,等. 基于反過濾規(guī)則集和自動爬蟲的XSS漏洞深度挖掘技術(shù)[J]. 北京理工大學(xué)學(xué)報,2012,32(4):395-401.

[18] ANOMITY. Firing range[EB/OL]. https://github.com/google/firing- range.

[19] ANOMITY. Burp suite[EB/OL]. https://portswigger.net/burp/.

[20] ACUNETIX. Acunetix web vulnerability scanner[EB/OL]. https://www.acunetix.com/vulnerability-scanner/.

(責(zé)任編輯:江 艷)

主站蜘蛛池模板: 国产va欧美va在线观看| 丁香六月综合网| 欧美中文字幕在线播放| 亚洲精品图区| 欧美一级夜夜爽| 强乱中文字幕在线播放不卡| 韩日免费小视频| 亚洲午夜福利在线| 欧美伊人色综合久久天天| 2021最新国产精品网站| 一本久道久久综合多人| 亚洲浓毛av| 亚洲一区波多野结衣二区三区| 免费人成黄页在线观看国产| 精品午夜国产福利观看| 午夜欧美理论2019理论| 高清码无在线看| 91无码国产视频| 国产91全国探花系列在线播放| 国产精品嫩草影院视频| 国产精品密蕾丝视频| 日日噜噜夜夜狠狠视频| 欧美日韩中文国产va另类| 国产不卡一级毛片视频| 综合五月天网| 免费看的一级毛片| 91美女视频在线观看| 噜噜噜久久| 欧美a级完整在线观看| 国产欧美专区在线观看| 免费一看一级毛片| 国产成人精品亚洲77美色| 午夜福利在线观看成人| 自拍偷拍欧美日韩| 亚洲成人动漫在线观看| 久久男人视频| 国产97视频在线观看| 免费国产小视频在线观看| 国产理论精品| 欧美激情网址| 免费在线看黄网址| 亚洲美女一级毛片| 四虎影视无码永久免费观看| 99在线观看视频免费| 亚洲精品无码久久毛片波多野吉| 色偷偷一区二区三区| 极品国产在线| 国产免费人成视频网| AV无码一区二区三区四区| 免费 国产 无码久久久| 国产香蕉国产精品偷在线观看| 国产亚洲欧美日韩在线观看一区二区| 国产在线视频二区| 亚洲综合经典在线一区二区| 人人91人人澡人人妻人人爽| 国产精品美女自慰喷水| 亚洲日本中文字幕天堂网| 国产91丝袜在线播放动漫| 国产精品色婷婷在线观看| 青青久久91| 国产你懂得| 丁香五月亚洲综合在线| 日韩欧美综合在线制服| 人妻中文久热无码丝袜| 日韩欧美国产三级| 日韩欧美视频第一区在线观看| 久久久久亚洲AV成人网站软件| 久久久精品国产SM调教网站| 亚洲大尺码专区影院| 91精品视频播放| 四虎永久免费地址| 有专无码视频| 欧美日韩v| 国产成人精品高清不卡在线| 青青草国产在线视频| 国产精品网曝门免费视频| 亚洲一区二区三区在线视频| 四虎永久在线精品国产免费| 亚洲欧美在线精品一区二区| 91精品国产麻豆国产自产在线| 欧美一级99在线观看国产| 精品综合久久久久久97超人该|