国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

跨站腳本漏洞滲透測試技術(shù)

2017-12-06 06:46王丹顧明昌趙文兵
關(guān)鍵詞:字符串表單漏洞

王丹,顧明昌,趙文兵

(北京工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院, 北京 100124)

跨站腳本漏洞滲透測試技術(shù)

王丹,顧明昌,趙文兵

(北京工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院, 北京 100124)

為提升跨站腳本(XSS)漏洞檢測方法的檢測效果,本文提出了基于隱馬爾科夫模型(HMM)的攻擊向量動(dòng)態(tài)生成和優(yōu)化方法。采用決策樹模型和代碼混淆策略對攻擊向量進(jìn)行分類和變形,獲得測試用攻擊向量。使用注入點(diǎn)去重處理和探子技術(shù)去除一部分不存在XSS漏洞的Web頁面,避免重復(fù)檢測不同Web頁面中相同的漏洞注入點(diǎn),減少測試階段與Web服務(wù)器的交互次數(shù);進(jìn)一步采用XPath路徑定位技術(shù)提高漏洞檢測結(jié)果分析的效率。對比實(shí)驗(yàn)結(jié)果表明,本文提出的方法降低了響應(yīng)時(shí)間和漏報(bào)率,提高了檢測效率。

跨站腳本漏洞; 滲透測試; 隱馬爾科夫模型; 攻擊向量; 注入點(diǎn)

當(dāng)用戶訪問Web頁面時(shí),如果瀏覽器執(zhí)行了攻擊者向Web頁面中插入的惡意腳本代碼時(shí),就會(huì)引發(fā)跨站腳本(cross site script,XSS)漏洞攻擊,造成竊取用戶敏感信息、劫持用戶瀏覽器等安全問題[1-2]。XSS漏洞攻擊屬于代碼注入式漏洞攻擊,根據(jù)開放式Web應(yīng)用程序安全項(xiàng)目(open web application security project,OWASP)[3]發(fā)布的Web應(yīng)用安全漏洞統(tǒng)計(jì),XSS漏洞已連續(xù)幾年均列十大安全漏洞前三名。目前,隨著JavaScript語言和Ajax技術(shù)的普遍使用,動(dòng)態(tài)交互的網(wǎng)絡(luò)應(yīng)用在豐富網(wǎng)絡(luò)內(nèi)容、增加用戶體驗(yàn)的同時(shí),也容易引發(fā)較嚴(yán)重的網(wǎng)絡(luò)安全問題,因?yàn)槿魏文軌蛱峁┯脩粜畔⒔换サ牡胤蕉伎赡艹蔀閄SS攻擊者提交惡意攻擊腳本的載體,成為漏洞的注入點(diǎn)[4]。如果Web應(yīng)用系統(tǒng)未對輸入的內(nèi)容進(jìn)行有效驗(yàn)證,也沒有嚴(yán)格的過濾機(jī)制對可能含有惡意腳本的內(nèi)容進(jìn)行過濾,就可能引發(fā)XSS漏洞攻擊[5]。滲透測試技術(shù)通過模擬攻擊和對Web響應(yīng)進(jìn)行分析來檢測安全漏洞,已成為動(dòng)態(tài)發(fā)現(xiàn)Web漏洞的有效手段之一[6-7]。如何有效發(fā)現(xiàn)漏洞注入點(diǎn)、并構(gòu)造測試有效的攻擊向量以提升漏洞檢測效率和覆蓋率是滲透測試需要研究解決的關(guān)鍵問題之一,尤其是XSS漏洞攻擊本身具有復(fù)雜的攻擊方式,檢測效果在很大程度上依賴于漏洞注入點(diǎn)發(fā)現(xiàn)的全面性和漏洞攻擊向量設(shè)計(jì)的完整性。

本文提出了基于隱馬爾科夫模型(hidden Markov model,HMM)的攻擊向量動(dòng)態(tài)生成和優(yōu)化方法,并基于數(shù)據(jù)的輸出位置對攻擊向量進(jìn)行了分類,設(shè)計(jì)并實(shí)現(xiàn)了基于滲透測試的XSS漏洞檢測的原型系統(tǒng)。

1 攻擊向量生成及優(yōu)化

1.1種子攻擊向量

目前,在使用攻擊向量進(jìn)行XSS漏洞動(dòng)態(tài)檢測過程中,絕大多數(shù)都是使用基于XSS Cheat Sheet的攻擊向量集,并在此基礎(chǔ)上進(jìn)行相關(guān)的變形,作為最后的攻擊向量。在此過程中,種子攻擊向量的選擇一般都來自現(xiàn)有的攻擊向量集合,包括XSS Cheat Sheet攻擊腳本,以及根據(jù)xssed網(wǎng)站中發(fā)布的XSS攻擊所采用的腳本。

種子攻擊向量是對攻擊變量進(jìn)行變形的基礎(chǔ),它被從攻擊向量隊(duì)列中讀出之后經(jīng)過如下幾種操作,如URL編碼、HTML實(shí)體替換、UTF-8編碼、Base64編碼、Hex編碼以及用String.fromCharCode()函數(shù)和插入特殊字符、隨機(jī)字符的大小寫變形等,產(chǎn)生多種變形后成為新的攻擊向量,隨后再經(jīng)過對重復(fù)的攻擊向量的篩除,繼續(xù)作為下一次攻擊向量種子,最后通過響應(yīng)函數(shù)prifix()函數(shù)引入的前綴符號(hào),如 “;”、“〉”、“&”、“′〉”、“+〉”、“>”和“>”等,與Web頁面中的“<”,“+”閉合,使上述攻擊向量成為能夠被瀏覽器解析執(zhí)行的自由腳本。

1.2攻擊向量結(jié)構(gòu)

引發(fā)XSS攻擊的攻擊向量有很多種,它們本身有一定的組成規(guī)則:1)它所包含的惡意腳本被瀏覽器加載執(zhí)行;2)能夠執(zhí)行具有特定目的攻擊動(dòng)作;3)符合HTML語義邏輯。本文基于語法規(guī)則,將攻擊向量的語法分為備選符號(hào)集、攻擊向量形式說明、變形規(guī)則說明三部分,分析如下。

1)備選符號(hào)集。如HTML中標(biāo)簽、JavaScript的敏感詞和CSS的敏感符號(hào),即可能出現(xiàn)于攻擊向量中的語法符號(hào)。參考并整理文獻(xiàn)[8-9],本文涉及的備選符號(hào)集分為如表1所示的三部分。

表1 備選符號(hào)集分類

2)攻擊向量形式說明。通過相關(guān)的文獻(xiàn)和收集的攻擊向量發(fā)現(xiàn):攻擊向量主要由分隔符、HTML標(biāo)簽、一個(gè)或者多個(gè)屬性的組合,表2給出部分示例。

3)變形規(guī)則說明。通過編碼、混編大小寫、添加空白字符等變形操作而繞過代碼過濾,是攻擊向量常用的一種策略。攻擊向量的變異就是通過使用變形規(guī)則自動(dòng)生成攻擊向量,達(dá)到繞過Web站點(diǎn)中過濾器的目的。

表2 攻擊向量的組合形式

1.3攻擊向量分類

本文以合法請求向量在Web頁面中的輸出點(diǎn)為依據(jù),對攻擊向量進(jìn)行分類,達(dá)到減少訪問XSS注入點(diǎn)、減少與服務(wù)器交互次數(shù)、提高效率的目的。輸出點(diǎn)分類如表3所示。

1.4攻擊向量生成

本文攻擊向量自動(dòng)化生成方法的基本過程是:根據(jù)前文攻擊向量的結(jié)構(gòu)分析中選取一種攻擊向量的組合形式,然后從攻擊向量符號(hào)集中選擇一個(gè)備選字符集的值,并且隨機(jī)選取惡意符號(hào)功能集和分隔符集中的元素值,最后根據(jù)組合規(guī)則組合生成一個(gè)基本的攻擊向量?;竟粝蛄拷Y(jié)構(gòu)定義如下:

Class BasicAttackVector{

String vectorType;//基本攻擊向量組合形式

String vectorPattern; //攻擊向量符號(hào)集類型

String vectorValue; //攻擊向量備選字符}

下面給出一個(gè)攻擊向量生成實(shí)例:

1)vectorType:基本攻擊向量組合形式。假設(shè)為。為了生成攻擊向量,首先選取該種攻擊向量的組合形式。

2)vectorPattern:HTML備選字符集。以組合形式為基礎(chǔ),分別從HTML_TAG、HTML_EVENT集中選取HTML標(biāo)簽和事件屬性,并且從惡意功能符號(hào)集中選擇JS_S類型,組成基本的攻擊向量。

3)vectorValue:備選符號(hào)集的值。根據(jù)步驟2)中的符號(hào)集,選取對應(yīng)符號(hào)集備選值中的任意一個(gè),如