• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

      趙躍華 吳東耀

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

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

      DOI:10. 11907/rjdk. 181944

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

      0 引言

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

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

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

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

      1 設(shè)計(jì)思路

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

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

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

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

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

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

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

      2.1 XSS攻擊向量模版生成

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

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

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

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

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

      (3)對(duì)于在XSS攻擊向量庫(kù)的每一條XSS攻擊向量,計(jì)算其與每個(gè)聚類(lèi)中心Ck的Levenshtein距離[16]。

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

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

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

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

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

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

      (10)通過(guò)等價(jià)類(lèi)測(cè)試和人工篩選,剔除相同作用的XSS攻擊向量。

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

      具體流程如圖2所示。

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

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

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

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

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

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

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

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

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

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

      具體流程如圖3所示。

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

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

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

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

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

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

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

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

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

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

      具體流程圖如圖4所示。

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

      2.4 XSS攻擊向量生成

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

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

      (1)根據(jù)輸出點(diǎn)類(lèi)型,選取對(duì)應(yīng)類(lèi)型標(biāo)識(shí)的XSS攻擊向量模版。

      (2)根據(jù)XSS攻擊向量合成規(guī)則,選取對(duì)應(yīng)輸出點(diǎn)類(lèi)型的XSS攻擊向量模版并對(duì)其進(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事件屬性?xún)?nèi),XSS攻擊向量合成為[XSS攻擊向量模版]或[閉合塊]+[XSS攻擊向量模版];⑤若出現(xiàn)在JavaScript偽協(xié)議中,XSS攻擊向量合成為[閉合塊]+[XSS攻擊向量模版];+//或[閉合塊]+[XSS攻擊向量模版];+a=”或[閉合塊]+[XSS攻擊向量模版];+運(yùn)算符;⑥若出現(xiàn)在JavaScript中,XSS攻擊向量合成為 [XSS攻擊向量模版]或[閉合塊]+[XSS攻擊向量模版]或+[XSS攻擊向量模版]+[額外塊];⑦若出現(xiàn)在CSS中,XSS攻擊向量合成為[XSS攻擊向量模版]。

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

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

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

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

      3.2 工作流程

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

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

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

      4 對(duì)比實(shí)驗(yàn)

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

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

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

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

      5 結(jié)語(yǔ)

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

      參考文獻(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] 李潔,俞研,吳家順. 基于動(dòng)態(tài)污點(diǎn)分析的DOM XSS漏洞檢測(cè)算法[J]. 計(jì)算機(jī)應(yīng)用, 2016, 36(5):1246-1249.

      [10] 李楠. 一種XSS漏洞灰盒檢測(cè)方案的設(shè)計(jì)與實(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ò)濾規(guī)則集和自動(dòng)爬蟲(chóng)的XSS漏洞深度挖掘技術(shù)[J]. 北京理工大學(xué)學(xué)報(bào),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é)任編輯:江 艷)

      香港 | 乐至县| 莱西市| 内江市| 新蔡县| 凌源市| 涿鹿县| 宜宾县| 定兴县| 高密市| 水城县| 卢氏县| 上高县| 尼木县| 嘉义县| 临沂市| 金门县| 安阳县| 象山县| 霍山县| 西安市| 镇宁| 喀喇| 泽州县| 延吉市| 竹山县| 同江市| 云和县| 定陶县| 柏乡县| 伊宁县| 通城县| 龙江县| 抚宁县| 宜君县| 永康市| 甘南县| 黄龙县| 巴中市| 元谋县| 鄢陵县|