王丹,顧明昌,趙文兵
(北京工業(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.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è),如
基于此,攻擊向量就成為
。
表3 輸出點(diǎn)分類
考慮合適的攻擊向量與非法的攻擊向量語法方面的差別,本文使用HMM模型對攻擊向量進(jìn)行優(yōu)化:用通過正常訓(xùn)練樣本集學(xué)習(xí)的語法M代表合適的行為模式,與語法M有較高符合度的測試樣本就被認(rèn)為是合適的攻擊向量;否則判斷為非法的攻擊向量。樣本特征提取和樣本分類基于HMM語法檢測的兩個(gè)過程,特征提取結(jié)果是樣本的異常測度評估a,異常測度a高的樣本被認(rèn)為是非法的攻擊向量。對樣本的分類則是基于a和分類閾值a0:a≤a0的樣本為合適的攻擊向量,加入攻擊向量庫中。
為提高檢測效果,本文首先對初步生成的攻擊向量進(jìn)行分類處理,使用的是決策樹分類算法[10]。這樣一來,在使用探子技術(shù)檢測到輸出點(diǎn)種類后,即可根據(jù)輸出點(diǎn)的類型開展測試,因此減少了不必要的測試。構(gòu)建決策樹的前提是創(chuàng)建其測試樣本,本文以攻擊向量分類策略來選取特征屬性及其取值,并用一個(gè)二維數(shù)組對象來表示特征值,每條待分類的樣本數(shù)用數(shù)組中的行表示,行中元素的值為該樣本對應(yīng)屬性的取值。另外,需要將結(jié)果輸入到?jīng)Q策樹中作為決策樹分類學(xué)習(xí)的依據(jù),因?yàn)橛糜跇?gòu)建決策樹的樣本的分類是已知的。決策樹的構(gòu)建采用遞歸方式完成。首先找到一個(gè)劃分值,基于該劃分值判斷節(jié)點(diǎn)是否為葉子節(jié)點(diǎn),然后對非葉子節(jié)點(diǎn)進(jìn)行劃分。
而后就可以使用構(gòu)建的決策樹對已優(yōu)化后的攻擊向量自動(dòng)分類,產(chǎn)生攻擊向量庫。表4即為使用優(yōu)化模型之后生成的攻擊向量部分例子。
對于婚禮攝影師來說,考察拍攝環(huán)境是非常必要的,環(huán)境中的各種線條、框架、光線都可以為我所用。線條明晰、有特色的建筑結(jié)構(gòu)是不可錯(cuò)過的好場景。應(yīng)該要多嘗試不同的構(gòu)圖方案,使畫面產(chǎn)生趣味性,同時(shí)利用線條、明暗、遠(yuǎn)近、虛實(shí),來增強(qiáng)環(huán)境的空間感,并形成內(nèi)容上的對比、呼應(yīng)。此外,人物的位置非常關(guān)鍵,我喜歡把人放在視覺滅點(diǎn)或是明暗交界的地方,畫面的色調(diào)也盡可能純粹,同時(shí)盡量不要用閃光燈,保留自然的光影關(guān)系??刂坪萌伺c環(huán)境的主次、輕重、比例,化繁為簡,確保最終畫面是“透氣”的。
表4 攻擊向量舉例
1.5攻擊向量混淆生成策略
XSS漏洞攻擊經(jīng)常利用代碼混淆技術(shù)將惡意代碼加以注入。常用的漏洞攻擊檢測方法多采用特征檢測識(shí)別的方式對腳本語言是否包含跨站腳本攻擊的惡意特征進(jìn)行檢測。然而,針對HTML語言經(jīng)過代碼混淆后并不能完全直接展示惡意代碼的特征,而是隱藏在代碼邏輯中,使得傳統(tǒng)的檢測方法無法工作,增加了對XSS攻擊的檢測難度。通過對跨站腳本種子攻擊向量的變形可產(chǎn)生攻擊向量的多個(gè)變種,變形方法主要有編碼、混合編碼、插入特殊字符等。使用URL編碼等變形算法后最終生成的攻擊向量,舉例如下:
x′>
x-->
> Click
x>
對使用Ajax技術(shù)的Web應(yīng)用的漏洞注入點(diǎn)查找,就是增量地構(gòu)建Ajax應(yīng)用狀態(tài)流圖的過程,通過比較事件觸發(fā)前后的DOM結(jié)構(gòu)來判斷是否產(chǎn)生新的Ajax 應(yīng)用狀態(tài),并將新狀態(tài)和轉(zhuǎn)換添加到狀態(tài)圖中。當(dāng)DOM狀態(tài)發(fā)生改變時(shí),檢測Web響應(yīng)頁面是否出現(xiàn)與注入數(shù)據(jù)相關(guān)的反饋數(shù)據(jù)來判定注入漏洞的存在。
2.2 URL去重
由于相同功能的表單可能會(huì)位于一個(gè)Web應(yīng)用的不同頁面中,例如,完成搜索功能的標(biāo)簽等,因此無需對這些表單中的注入點(diǎn)進(jìn)行重復(fù)檢測。本文使用Bloom Filter算法對已提取的注入點(diǎn)進(jìn)行去重處理。Bloom Filter的初始狀態(tài)是用一個(gè)包含m位的位數(shù)組itemVector表示,每個(gè)位置的值都設(shè)置成0。為了將URL或注入點(diǎn)ID映射到itemVector中,本文采取5個(gè)hash函數(shù),分別是:RSHash、SDBMHash、BKDRHash、ELFHash和JSHash,利用這5個(gè)獨(dú)立的hash函數(shù)對任意一個(gè)URL或注入點(diǎn)id進(jìn)行hash運(yùn)算,共得到5個(gè)hash值:hash1、hash2、hash3、hash4、hash5。然后,將這5個(gè)hash值映射到itemVector數(shù)組的索引,并將該索引位置的數(shù)組元素值設(shè)置為1。后續(xù)的URL或注入點(diǎn)ID映射時(shí),判斷映射的位置的元素是否全為1,若元素不全為1,則該URL或注入點(diǎn)ID不重復(fù),將其添加到對應(yīng)的URL列表或注入點(diǎn)列表,并將該索引位置的元素設(shè)置為1。若映射位置的元素全為1,則該URL或注入點(diǎn)ID已經(jīng)存在。基于Bloom Filter的URL去重算法描述如算法1所示。
算法1 Bloom Filter去重算法
輸入:原始URL或注入點(diǎn)ID隊(duì)列
輸出:去重后的URL或注入點(diǎn)ID隊(duì)列
1)創(chuàng)建初始位數(shù)組itemVector[m],并將每個(gè)元素值初始化為0;
2)從URL或注入點(diǎn)ID隊(duì)列中取出一條數(shù)據(jù)item;
3)將item分別經(jīng)過RSHash、SDBMHash、BKDRHash、ELFHash和JSHash這5個(gè)hash函數(shù)運(yùn)算,得到5個(gè)hash1、hash2、hash3、hash4、hash5;
4)將這5個(gè)hash值與itemVector數(shù)組長度m做模運(yùn)算,可得到五個(gè)索引index1、index2、index3、index4、index5;
5)判斷5個(gè)索引位置的元素是否全為1,若全為1,則該URL或注入點(diǎn)ID已經(jīng)位于URL或注入點(diǎn)ID隊(duì)列,直接舍棄;
6)若不全為1,則將URL或注入點(diǎn)ID加入相應(yīng)的去重后的隊(duì)列中,并且將itemVector數(shù)組中對應(yīng)索引位置不為1的元素值更新為1;
7)重復(fù)步驟2)~6),直到原始URL或注入點(diǎn)ID隊(duì)列元素全部判斷完為止;
8)返回去重后的相應(yīng)隊(duì)列,算法結(jié)束。
3.1響應(yīng)過程
XSS漏洞攻擊檢測過程就是不斷取出注入點(diǎn)、生成攻擊向量并發(fā)送HTTP請求,然后分析響應(yīng)頁面信息并生成漏洞檢測報(bào)告的過程[13-14]。為減少逐條使用攻擊向量模擬攻擊行為引發(fā)的與服務(wù)器的交互次數(shù),本文先通過發(fā)送探子請求,再根據(jù)探測結(jié)果決定是否有進(jìn)一步。在對響應(yīng)探子請求的頁面分析時(shí),采用DOM路徑定位技術(shù)對輸出點(diǎn)的類型予以分析。而后,從對應(yīng)類型的攻擊向量庫中逐條取出攻擊向量對注入點(diǎn)進(jìn)行檢測。確定該注入點(diǎn)是否存在XSS漏洞攻擊的依據(jù)是響應(yīng)頁面中若存在與攻擊向量相同的字符串,就斷定存在XSS漏洞攻擊,然后記錄相關(guān)的檢測點(diǎn)和攻擊向量信息,結(jié)束檢測;否則,繼續(xù)逐條對攻擊向量庫的攻擊向量進(jìn)行分析檢測,直至攻擊向量庫為空。
需要說明的是,存儲(chǔ)型XSS的輸出可能不在響應(yīng)頁面中,而是位于其他頁面,這時(shí)要確定注入點(diǎn)是否為Form表單。當(dāng)為Form表單時(shí),再進(jìn)行如下過程的存儲(chǔ)型XSS攻擊檢測:找到Form表單提交后的響應(yīng)頁面,這需要遍歷所有的頁面。為提高效率,本文對Form-stored隊(duì)列中的每一個(gè)Form表單采用唯一的一個(gè)合法向量進(jìn)行探子請求,即采用java.util.UUID類的randomUUID()方法來生成。之后,從hash值發(fā)生變化的文件中查找對應(yīng)的合法向量,基于合法向量與Form表單間的對應(yīng)關(guān)系,就可生成Form表單及其響應(yīng)頁面的對應(yīng)集合。最后,再依次提交攻擊向量對每個(gè)Form表單進(jìn)行測試。
3.2兩次探子請求
探子請求技術(shù)是用來判斷有無后續(xù)檢測的必要,以降低無效檢測引發(fā)的額外服務(wù)器壓力,提高檢測效率。本文中,采用UUID(Universally Unique Identifier)作為探子請求字符串,它是一個(gè)128位的16進(jìn)制表示的數(shù)。在完成提交該請求字符串后,若響應(yīng)頁面返回了該字符串,且注入點(diǎn)不是Form表單,則可認(rèn)為該注入點(diǎn)不存在XSS漏洞,停止攻擊向量測試。若無返回字符串,但注入點(diǎn)存在于Form表單,就將該注入點(diǎn)加入Form-stored隊(duì)列中,繼續(xù)開展存儲(chǔ)型攻擊向量檢測[8];若注入點(diǎn)不存在于Form表單中,則分析并記錄該探子字符串的DOM路徑,為后續(xù)漏洞檢測和結(jié)果分析提供支持。然后第二次使用探子請求技術(shù),本次探子請求字符串在上次的探子字符串基礎(chǔ)上添加alert(111)
,來判斷Web服務(wù)端是否對“<”進(jìn)行了過濾或編碼。
使用兩次探子主要是為了提高漏洞檢測效率,減輕服務(wù)器的測試壓力。第一次探子請求主要用來判定是否有對某個(gè)注入點(diǎn)進(jìn)行后續(xù)檢測的必要,以及記錄探子字符串的DOM路徑,提高后續(xù)漏洞檢測中結(jié)果分析的效率;第二次探子請求主要是用來判斷Web站點(diǎn)是否對特殊字符進(jìn)行編碼過濾,若服務(wù)端對特殊字符進(jìn)行了編碼,那么在選擇攻擊向量庫時(shí)就不必使用未進(jìn)行代碼混淆處理的攻擊向量。
3.3 XPath路徑定位方法
在響應(yīng)分析階段,若每次檢測都使用靜態(tài)頁面分析技術(shù)來查找響應(yīng)頁面的話,效率會(huì)比較低,本文使用XPath路徑定位技術(shù)來提升分析效率。作為一種表達(dá)式語言,XPath的返回值是以節(jié)點(diǎn)、節(jié)點(diǎn)集合、原子值以及節(jié)點(diǎn)和原子值的混合等形式出現(xiàn),用于對XML文檔節(jié)點(diǎn)樹中的節(jié)點(diǎn)定位。采用探子請求技術(shù)之后,針對服務(wù)器返回的頁面繼續(xù)采用正則表達(dá)式來確定該頁面是否包含探子請求字符串。若存在,則繼續(xù)采用Xpath路徑定位技術(shù)解析該HTML文件,也就是記錄該探子請求字符串的DOM路徑,實(shí)際上是記錄從該文件的根節(jié)點(diǎn)到探子請求字符串所在的標(biāo)簽節(jié)點(diǎn)的路徑字符串,然后將該路徑字符串保存下來。在后續(xù)的檢測中,為了分析檢測結(jié)果,直接使用Xpath定位技術(shù),按路徑字符串所標(biāo)識(shí)的路徑來解析HTML文件,查看該路徑下是否存在本次檢測所使用的攻擊向量。這樣就避免了每次檢測時(shí)都需對HTML響應(yīng)頁面進(jìn)行分析而影響響應(yīng)效率的問題。
本文的實(shí)驗(yàn)系統(tǒng)的設(shè)計(jì)如圖1所示。實(shí)驗(yàn)結(jié)果采用以下四個(gè)指標(biāo),分別是檢測的漏洞個(gè)數(shù)、漏報(bào)率、誤報(bào)率和響應(yīng)時(shí)間來進(jìn)行分析。
圖1 測試系統(tǒng)Fig.1 Testing system
4.1漏洞檢測系統(tǒng)功能測試與分析
OWASP的開源項(xiàng)目提供了很多用于測試的網(wǎng)站,且XSSed.com網(wǎng)站也發(fā)布了存在XSS漏洞且尚未修復(fù)的網(wǎng)站,本文選擇其中XSSer、Paros Proxy和本文設(shè)計(jì)的系統(tǒng)。XSSer則是基于滲透測試的XSS漏洞的檢測工具,可繞過某些過濾;Paros Proxy是一個(gè)Web應(yīng)用程序漏洞評估的代理程序,通過網(wǎng)站攻擊掃描器實(shí)現(xiàn)XSS漏洞檢測。
三種檢測方法的對比如表5所示。被檢測樣本來自于XSSed.com網(wǎng)站,100個(gè)是存在XSS漏洞且未被修復(fù)的樣本,50是個(gè)修復(fù)漏洞后的樣本。表6為與OWASP開源項(xiàng)目WebGoat-6.0.1站點(diǎn)的比對分析。
表5 選取XSSed.com樣本的檢測結(jié)果
從對比結(jié)果來看,Paros Proxy的誤報(bào)率和漏報(bào)率極低,響應(yīng)時(shí)間短。XSSer誤報(bào)率較高,未能全部檢測出存儲(chǔ)型XSS漏洞。本文的方法在一定程度上降低了響應(yīng)時(shí)間和漏報(bào)率,提高了性能,反應(yīng)了對攻擊向量進(jìn)行分類整理的措施是有效的。
4.2攻擊向量自動(dòng)化生成方法的測試與分析
為測試本文提出的攻擊向量自動(dòng)化生成方法的有效性,我們分別選取了自建的攻擊向量庫以及收集的手動(dòng)的攻擊向量庫,使用這兩種攻擊向量分別進(jìn)行測試,比較分析本文提出的攻擊向量自動(dòng)化生成優(yōu)化分類方法是否有效。我們從XSSed.com網(wǎng)站選取200個(gè)發(fā)布的XSS漏洞的樣本,分別使用兩種攻擊向量庫,對這些樣本進(jìn)行測試,以被發(fā)現(xiàn)的XSS漏洞個(gè)數(shù)作為評估標(biāo)準(zhǔn)來驗(yàn)證本文提出的攻擊向量生成方法的有效性。使用手動(dòng)攻擊向量庫檢測的漏洞個(gè)數(shù)為163個(gè),而使用自動(dòng)攻擊向量檢測的漏洞個(gè)數(shù)為171個(gè),兩種方式攻擊向量的表現(xiàn)基本持平,說明本文的自動(dòng)化攻擊向量生成方式是有效的。當(dāng)然這和手動(dòng)攻擊向量的選取范圍也有一定的關(guān)系。從檢測效果來看,由于自動(dòng)生成攻擊向量的設(shè)計(jì)中加入了攻擊向量的分類,提高了檢測效率。
表6 OWASP開源系統(tǒng)WebGoat檢測結(jié)果
1)基于HMM模型和決策樹的漏洞攻擊測試向量的生成、描述和優(yōu)化方法,能夠有效識(shí)別XSS漏洞注入點(diǎn)和漏洞攻擊模式,可優(yōu)化漏洞攻擊向量的自動(dòng)生成。
2)使用探子請求技術(shù)對輸出點(diǎn)進(jìn)行DOM路徑定位改進(jìn)了漏洞檢測中攻擊向量逐條注入檢測帶來的效率低下問題。根據(jù)輸出點(diǎn)類型來選擇相應(yīng)類型的攻擊向量庫,減少了漏洞檢測中不必要的測試請求,提高了檢測效率。
本文的方法尚未考慮DOM型XSS漏洞,無法對其進(jìn)行有效檢測,將在后續(xù)的工作中繼續(xù)研究。
[1] VAN DEURSEN A, MESBAH A, NEDERLOF A. Analysis of web applications: prospects and challenges[J]. Science of computer programming, 2015, 97: 173-180.
[2] DEEPA G, THILAGAM, SANTHI P. Securing web applications from injection and logic vulnerabilities: approaches and challenges[J]. Information & software technology, 2016(74): 160-180.
[3] OSWAP. Types of cross-site scripting[EB/OL]. https://www.owasp.org/index.php/Types of Cross-Site Scripting, 2017.
[4] GUPTA S, GUPTA B. B.JS-SAN: Defense mechanism for HTML5-based web applications against javascript code injection vulnerabilities[J]. Security and communication networks, 2016(9): 11: 1477-1495.
[5] SAXENA P, MOLNAR D, LIVSHITS B. SCRIPTGARD: automatic context-sensitive sanitization for large-scale legacy web applications[C]// Proceedings of Computer & Communications Security, 2011: 601-614.
[6] 程誠,周彥暉. 基于模糊測試和遺傳算法的XSS漏洞挖掘[J].計(jì)算機(jī)科學(xué), 2016, 43(6A): 328-331.
CHENG Cheng, ZHOU Yanhui. Finding XSS vulnerabilities based on fuzzing test and generation algorithm[J]. Computer science, 2016, 43(6A): 328-331.
[7] STOCK B, BEN S. Precise client-side protection against dom-based cross-site scripting[C]// Proceedings of the 23rd USENIX security symposium, 2014: 655-670.
[8] 王云. 基于爬蟲和模糊測試的XSS漏洞檢測工具設(shè)計(jì)與實(shí)現(xiàn)[D]. 廣州:華南理工大學(xué), 2015: 28-30.
WANG Yun. Design and implementation of XSS vulnerability detection based on crawler and fuzzing test[D]. Guangzhou: South China University of Technology, 2015: 28-30.
[9] 李冰, 趙逢禹. Stored-XSS 漏洞檢測的研究與設(shè)計(jì)[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2013, 30(3): 17-21.
LI Bing,ZHAO Fengyu. Study and design of stored-XSS vulnerability detection[J]. Computer application and software, 2013, 30(3): 17-21.
[10] 莫勇. 基于決策樹算法的Web客戶端腳本安全檢測研究[D]. 北京:北京林業(yè)大學(xué), 2015: 21-25.
MO Yong. Research on security detection of Web client script based on decision tree[D]. Beijing: Beijing Forestry University, 2015: 21-25.
[11] GUPTA S, GUPTA B B. Cross-site scripting (XSS) attacks and defense mechanisms: classification and state-of-the-art[J]. International journal of system assurance engineering and management, 2015: 1-19.
[12] 張偉偉.基于特征注入的 XSS 漏洞檢測模型研究[D]. 蘭州: 蘭州理工大學(xué), 2016: 17-18.
ZHANG Weiwei. Research on XSS vulnerability detection model based on feature injection[D]. Lanzhou: Lanzhou University of Technology, 2016: 17-18.
[13] ROCHA T S, SOUTO E. ETSSDetector: A tool to automatically detect cross-site scripting vulnerabilities[C]// Proceedings of 13th International Symposium on Net Work Computing and Applications. IEEE Computer Society, 2014: 306-309.
[14] FABIEN D, ROLAN G, SANJAY R, et al. XSS vulnerability detection using model inference assisted evolutionary fuzzing[C]// Proceedings of Fifth International Conference on Software Testing, Verification and Validation. IEEE Computer Society, 2012: 815-817.
本文引用格式:
王丹,顧明昌,趙文兵. 跨站腳本漏洞滲透測試技術(shù)[J]. 哈爾濱工程大學(xué)學(xué)報(bào), 2017, 38(11): 1769 -1774.
WANG Dan, GU Mingchang, ZHAO Wenbing. Cross-site script vulnerability penetration testing technology[J]. Journal of Harbin Engineering University, 2017, 38(11): 1769 -1774.
Cross-sitescriptvulnerabilitypenetrationtestingtechnology
WANG Dan, GU Mingchang, ZHAO Wenbing
(College of Computer Science, Beijing University of Technology, Beijing 100124, China)
To improve the detection results of cross-site scripting (XSS) vulnerability, a dynamic attack vector generation and optimization scheme was proposed based on hidden Markov model. The mutated attack vector was generated by using decision tree model to classify the attack vectors and the code confusion strategy to deform the attack vector. To reduce the interactions between the test phase and the web server, an injection point de-duplication and probe algorithm are designed to remove web pages that do not include XSS vulnerabilities and to avoid detecting the same injection point in different web pages. XPath path location technology was adopted to improve the analysis efficiency for vulnerability detection results. Experimental results show that the proposed method can reduce the response time and the miss report, and improve the detection efficiency.
cross site scripting; penetration test; hidden Markov model(HMM); attack vector; injection point
10.11990/jheu.201606044
http://www.cnki.net/kcms/detail/23.1390.u.20170427.1544.148.html
TP309
A
1006-7043(2017)11-1769-06
2016-06-16.
網(wǎng)絡(luò)出版日期:2017-04-27.
國家自然科學(xué)基金重大研究計(jì)劃培育項(xiàng)目(91546111);北京市自然科學(xué)基金項(xiàng)目(4173072);信息網(wǎng)絡(luò)安全公安部重點(diǎn)實(shí)驗(yàn)室開放課題項(xiàng)目.
王丹(1969-), 女, 教授,博士生導(dǎo)師;
顧明昌(1986-), 男, 碩士研究生.
顧明昌,E-mail: hnzzgmc@163.com.