左丹丹 王 丹 付利華
(北京工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 北京 100124)
?
一種XSS漏洞檢測方法的設(shè)計(jì)與實(shí)現(xiàn)
左丹丹王 丹付利華
(北京工業(yè)大學(xué)計(jì)算機(jī)學(xué)院北京 100124)
摘要跨站腳本(XSS)漏洞是近年來較為流行的一種漏洞,隨著Ajax技術(shù)的廣泛應(yīng)用,其危害性及快速的傳播能力也越來越強(qiáng)?,F(xiàn)有的漏洞檢測技術(shù)沒有充分對該類漏洞的漏洞注入點(diǎn)進(jìn)行研究,使用的漏洞檢測技術(shù)也沒有充分考慮測試請求后響應(yīng)的頁面,導(dǎo)致漏洞檢測率相對較低。針對現(xiàn)有漏洞檢測技術(shù)的不足之處,加強(qiáng)對隱含頁面的DOM結(jié)構(gòu)分析,提出基于DOM狀態(tài)改變的方式查找漏洞注入點(diǎn)的方法。在此基礎(chǔ)上提出基于頁面交互點(diǎn)相關(guān)的漏洞檢測方法,設(shè)計(jì)并實(shí)現(xiàn)了漏洞檢測原型系統(tǒng)。實(shí)驗(yàn)證明,該原型系統(tǒng)能夠找到更多的漏洞注入點(diǎn),能有效地提高漏洞檢測率。
關(guān)鍵詞跨站腳本漏洞漏洞注入點(diǎn)隱含頁面漏洞檢測
0引言
Web應(yīng)用程序的漏洞已經(jīng)成為互聯(lián)網(wǎng)最嚴(yán)重的安全隱患之一。SANS研究所最新的數(shù)據(jù)顯示高達(dá)60%互聯(lián)網(wǎng)攻擊都來自于Web應(yīng)用程序[1]。常見的漏洞攻擊包括跨站腳本漏洞、SQL注入漏洞、跨路請求偽造攻擊,而跨站腳本漏洞是其中最突出的一種。在2013年OWASP公布的Web漏洞榜單中,跨站腳本漏洞(XSS)位居第三名[2]。
增強(qiáng)Web應(yīng)用系統(tǒng)漏洞檢測能力、減少漏報(bào)的關(guān)鍵問題之一是如何充分地對漏洞注入點(diǎn)進(jìn)行分析、識(shí)別和提取。然而,由于JavaScript語言的動(dòng)態(tài)特性[3],隱含頁面內(nèi)容的大量存在[4],導(dǎo)致漏洞注入點(diǎn)并不能充分地被查找到用來進(jìn)行漏洞的檢測?,F(xiàn)有的XSS漏洞檢測針對漏洞注入點(diǎn)的查找主要關(guān)注的是當(dāng)前檢測的靜態(tài)頁面,關(guān)注的對象一般都是表單輸入和超鏈接[5-8],并沒有考慮那些隱含頁面可能存在的漏洞注入點(diǎn)。此外,現(xiàn)有的漏洞測試技術(shù)一般都是通過分析服務(wù)器響應(yīng)后的頁面進(jìn)行漏洞檢測的判斷[9],實(shí)際上這種方法是有待改進(jìn)的。因?yàn)閷τ诖嬖诖鎯?chǔ)型跨站腳本漏洞的網(wǎng)頁來說,該方法的測試用例對應(yīng)的輸出結(jié)果不一定顯示在服務(wù)器響應(yīng)后的跳轉(zhuǎn)頁面或當(dāng)前測試請求注入的頁面,也有可能在整個(gè)Web應(yīng)用的其他相關(guān)頁面,因此存在漏報(bào)。
本文提出基于DOM狀態(tài)改變[10]的方式進(jìn)行漏洞注入點(diǎn)的查找方法。這種查找漏洞注入點(diǎn)的方法的特點(diǎn)是不僅考慮當(dāng)前指定URL的靜態(tài)頁面,還考慮了其對應(yīng)的隱含頁面。 同時(shí),本文提出基于頁面交互點(diǎn)相關(guān)的漏洞檢測方法,充分分析了測試請求注入Web應(yīng)用后相關(guān)的頁面。該方法對于存儲(chǔ)型跨站腳本漏洞檢測比較明顯。
本文的主要貢獻(xiàn)如下:
(1) 提出了基于DOM狀態(tài)改變的方式進(jìn)行XSS漏洞注入點(diǎn)的查找方法,能夠查找到更多的隱含頁面的漏洞注入點(diǎn)。
(2) 提出了基于頁面交互點(diǎn)相關(guān)的方法進(jìn)行漏洞的檢測,該方法主要是針對存儲(chǔ)型跨站腳本漏洞,能夠減少漏洞漏報(bào)率。
(3) 基于上述理論設(shè)計(jì)并實(shí)現(xiàn)了XSS漏洞檢測工具的原型系統(tǒng),并對原型系統(tǒng)做了真實(shí)的實(shí)驗(yàn)評估,效果良好。
1相關(guān)工作
一般將XSS漏洞分為三類:包括反射性跨站腳本漏洞、存儲(chǔ)型跨站腳本漏洞、基于DOM的跨站腳本漏洞。
(1) 反射型跨站腳本漏洞(Reflected XSS),也稱作非持久性跨站腳本漏洞。這種類型的跨站腳本漏洞最常見的形式是攻擊者通過特定手法,誘使用戶去訪問包含惡意代碼的URL。當(dāng)受害者瀏覽這些超鏈接時(shí),惡意代碼就會(huì)在受害者的瀏覽器上執(zhí)行。
(2) 存儲(chǔ)型跨站腳本漏洞(Stored XSS),是指通過提交惡意數(shù)據(jù)到存儲(chǔ)器,當(dāng)包含這些惡意數(shù)據(jù)的網(wǎng)頁被用戶瀏覽到時(shí),用戶便會(huì)受到漏洞攻擊。Stored XSS一般出現(xiàn)在網(wǎng)站的留言、評論、博客日志等交互處。
(3) 基于DOM型的跨站腳本漏洞(DOM based XSS),一般稱之為本地跨站腳本的攻擊,是指客戶端的腳本程序可以通過DOM(Document Object Model)動(dòng)態(tài)地檢查和修改頁面內(nèi)容。瀏覽器用戶可以操縱DOM中的對象,比如URL、Location、refer等。如果用戶在客戶端輸入的數(shù)據(jù)包含了惡意腳本,而這些數(shù)據(jù)沒有經(jīng)過有效的輸入驗(yàn)證機(jī)制,就可能會(huì)產(chǎn)生基于DOM的XSS漏洞。
在Web 2.0環(huán)境下的漏洞注入點(diǎn)的查找方面,文獻(xiàn)[5-8]認(rèn)為漏洞的注入點(diǎn)為表單和含有參數(shù)的URL。文獻(xiàn)[11-13]漏洞注入點(diǎn)提取的思路主要是通過基于URL的廣度爬蟲算法獲取相關(guān)頁面,并通過正則表達(dá)式提出相關(guān)注入點(diǎn)。 文獻(xiàn)[6,7]認(rèn)為造成漏洞的值空間(相當(dāng)于本文中的漏洞注入點(diǎn))不僅包括表單輸入數(shù)據(jù)、URL類數(shù)據(jù),還包括客戶端與服務(wù)器交互過程中交換的數(shù)據(jù)信息。與以上文獻(xiàn)相比,本文提出的基于DOM狀態(tài)改變的方式查找漏洞注入點(diǎn)的方法不僅考慮了待測頁面的漏洞注入點(diǎn),還考慮了其隱含頁面的漏洞注入點(diǎn)。
在相關(guān)的漏洞測試方法研究方面,文獻(xiàn)[11,13]使用的漏洞測試模塊主要是通過構(gòu)造數(shù)據(jù)包發(fā)送到服務(wù)器,然后分析返回的代碼從而判定Web的安全性。文獻(xiàn)[12]為了減少不必要的漏洞測試請求,使用了探子請求技術(shù)。與上述文獻(xiàn)相比,本文提出了基于頁面交互點(diǎn)相關(guān)的漏洞檢測方法,充分分析了測試請求注入Web應(yīng)用后相關(guān)的頁面,能夠有效檢測漏洞,尤其是針對Stored XSS漏洞。
2漏洞注入點(diǎn)的查找與漏洞檢測
為了更好地表述本文所提出的方法,本文給出如下幾個(gè)定義。
定義1隱含頁面——通過觸發(fā)頁面標(biāo)簽綁定的事件進(jìn)入的URL并沒有改變的頁面。需要注意本文所指的隱含頁面不包括通過超鏈接所指向的其他頁面,也就是說當(dāng)進(jìn)入隱含頁面時(shí),頁面的URL并沒有改變。
定義2特征字符串——一個(gè)漏洞測試用例所對應(yīng)的能表現(xiàn)存在漏洞的字符串。例如,該測試用例的特征字符串是頁面彈框彈出的XSS字符串。
定義3漏洞特征——經(jīng)過測試用例請求后響應(yīng)的頁面有彈框輸出或者出現(xiàn)測試用例對應(yīng)的特征字符串。例如,測試用例出現(xiàn)的漏洞特征是頁面出現(xiàn)彈框且特征字符串為XSS。
定義4頁面交互點(diǎn)相關(guān)的頁面——當(dāng)前頁面通過標(biāo)簽、按鈕等交互點(diǎn)能夠跳轉(zhuǎn)到的任何其他頁面,包括隱含頁面、和當(dāng)前頁面URL不同的頁面。
為了提高漏洞檢測率,減少漏洞漏報(bào),本文主要從提高漏洞注入點(diǎn)查找數(shù)目和改進(jìn)漏洞檢測技術(shù)這兩個(gè)方面來進(jìn)行研究。本文針對XSS漏洞檢測,主要分為以下兩個(gè)方面:(1)漏洞注入點(diǎn)查找,主要完成待測頁面的漏洞注入點(diǎn)的查找,包括待測URL的靜態(tài)頁面和隱含頁面兩個(gè)方面。漏洞注入點(diǎn)主要包括表單輸入和含有參數(shù)的超鏈接。(2)漏洞檢測,主要是針對已經(jīng)查找的漏洞注入點(diǎn),使用基于頁面交互點(diǎn)相關(guān)的漏洞檢測方法進(jìn)行漏洞的檢測。圖1為本文的系統(tǒng)架構(gòu)。
圖1 系統(tǒng)架構(gòu)圖
2.1漏洞注入點(diǎn)查找
本文主要從靜態(tài)頁面和隱含頁面這兩個(gè)方面來進(jìn)行漏洞注入點(diǎn)的查找。
在針對靜態(tài)頁面的漏洞注入點(diǎn)的查找方面,漏洞注入點(diǎn)的查找原理是通過獲取當(dāng)前頁面的DOM結(jié)構(gòu),然后通過標(biāo)簽屬性獲取頁面的相關(guān)漏洞注入點(diǎn)。具體來說,漏洞注入點(diǎn)的提取主要分為兩個(gè)部分。
(1) 表單輸入類漏洞注入點(diǎn)提取。表單輸入主要是通過表單的input屬性獲取的。通過頁面的DOM結(jié)構(gòu),根據(jù)input標(biāo)簽,如果input的type屬性為text、textarea等,就認(rèn)為是表單輸入,并使用一個(gè)Vector容器保存起來。
需要注意的是,當(dāng)頁面嵌入iframe標(biāo)簽時(shí),需要考慮獲取ifame的相關(guān)的DOM結(jié)構(gòu),并獲取其相關(guān)的漏洞注入點(diǎn),這樣可以保證找到更多的漏洞注入點(diǎn)。
在隱含頁面的漏洞注入點(diǎn)查找方面,主要是通過加強(qiáng)對隱含頁面的DOM結(jié)構(gòu)的分析處理。不過關(guān)鍵問題是需要進(jìn)入不同DOM結(jié)構(gòu)的隱含頁面,再使用靜態(tài)頁面的漏洞注入點(diǎn)查找思路在隱含頁面查找漏洞注入點(diǎn)。所以本文提出了基于DOM狀態(tài)改變的方式進(jìn)行漏洞注入點(diǎn)的查找方法,通過模擬DOM狀態(tài)的改變進(jìn)入不同的隱含頁面進(jìn)行漏洞注入點(diǎn)的查找。
模擬DOM狀態(tài)的改變進(jìn)入隱含頁面的具體方法是先定義頁面的交互點(diǎn)(本文初步認(rèn)為頁面的交互點(diǎn)包括:a標(biāo)簽、div標(biāo)簽、span標(biāo)簽、button按鈕等),然后模擬頁面交互點(diǎn)綁定的事件從而達(dá)到新的DOM結(jié)構(gòu)。需要注意的是,頁面標(biāo)簽綁定的事件可能包括鼠標(biāo)單擊、雙擊以及拖拽等事件,本文目前僅模擬鼠標(biāo)單擊事件。如果新的DOM結(jié)構(gòu)的URL沒有改變但是DOM結(jié)構(gòu)改變了,則認(rèn)為該頁面是隱含頁面,并在該頁面進(jìn)行漏洞注入點(diǎn)的查找;否則需要回到初始頁面模擬下一個(gè)交互點(diǎn)綁定的事件。具體的基于DOM狀態(tài)改變的方式查找隱含頁面的算法如下:
輸入:待測頁面的URL
輸出:隱含頁面的DOM結(jié)構(gòu)
1.訪問當(dāng)前URL;
2.獲取頁面所有的交互點(diǎn)存入隊(duì)列ClickList;
3.獲取頁面的DOM結(jié)構(gòu)為initDom;
晉元莊路口南北方向允許車輛掉頭,這對南北直行車輛行駛造成嚴(yán)重影響,不但會(huì)降低車速,還會(huì)降低交叉口的通行能力.
4.如果ClickList隊(duì)列為空,結(jié)束,否則執(zhí)行步驟5;
5.從ClickList隊(duì)里取出一個(gè)交互點(diǎn)出隊(duì)列,模擬事件;
6.獲取當(dāng)前DOM結(jié)構(gòu)的currentURL;
7.比較currentURL和URL是否相同,如果相同執(zhí)行步驟8,否則執(zhí)行步驟10;
8.獲取當(dāng)前的DOMcurrentDom;
9. 比較initDom和currentDOM是否相同,如果相同執(zhí)行步驟10,否則執(zhí)行步驟11;
10.回到初始頁面,執(zhí)行步驟4;
11.currentDom就是尋找的隱含頁面DOM結(jié)構(gòu),保存,執(zhí)行步驟4。
2.2漏洞檢測
為了提高漏洞檢測率,本文主要采用基于頁面交互點(diǎn)相關(guān)的漏洞檢測方法進(jìn)行漏洞檢測。
常見的檢測方法是通過將測試用例注入漏洞注入點(diǎn),然后分析響應(yīng)后的頁面進(jìn)行漏洞檢測的判斷。這種測試思路是不完善的,理由是注入測試用例后,測試用例的特征字符串不一定出現(xiàn)在服務(wù)器響應(yīng)后的跳轉(zhuǎn)頁面中或測試用例注入的頁面,也可能出現(xiàn)在Web應(yīng)用的其他頁面。本文將分析頁面范圍擴(kuò)大至當(dāng)前測試請求注入的頁面,測試請求響應(yīng)后的頁面以及跳轉(zhuǎn)頁面的交互點(diǎn)相關(guān)的頁面,這樣可以提高漏洞檢測率。
圖2是基于頁面交互點(diǎn)相關(guān)的漏洞檢測方法的流程。
圖2 基于頁面交互點(diǎn)相關(guān)的漏洞檢測方法
具體的方法步驟如下:
(1) 將漏洞注入點(diǎn)查找模塊輸出的漏洞注入點(diǎn)進(jìn)行參數(shù)化并保存在隊(duì)列中。
針對含有參數(shù)的超鏈接,將含參數(shù)的超鏈接進(jìn)行分割處理,分割成為域名和參數(shù),并定義一個(gè)URL實(shí)體類保存。
class URL{
long id;
String domain;
//保存URL域名
String[] params;
//保存對應(yīng)的參數(shù)名稱
}
針對表單輸入,定義一個(gè)Input實(shí)體類保存。
class Input{
long id;
String type;
//表單輸入類型
String value;
//表單輸入對應(yīng)的名稱
}
(2) 從隊(duì)列中取出待測漏洞注入點(diǎn)。注意的是使用測試用例作為URL類注入點(diǎn)的params屬性所對應(yīng)的值,表單輸入類的value屬性所對應(yīng)的值。
(3) 使用一個(gè)3~8位的普通字符串(字母和數(shù)字隨機(jī)組合)作為測試用例進(jìn)行測試請求。
(4) 查看測試用例注入頁面是否有該普通字符串。
(5) 查看服務(wù)器響應(yīng)后的跳轉(zhuǎn)頁面是否存在該普通字符串。
(6) 查看跳轉(zhuǎn)頁面的交互點(diǎn)相關(guān)的頁面是否存在該普通字符串。在跳轉(zhuǎn)頁面提取該頁面相關(guān)的交互點(diǎn),這個(gè)頁面交互點(diǎn)包括超鏈接、按鈕以及其他任何導(dǎo)致當(dāng)前頁面跳轉(zhuǎn)到其他頁面的交互點(diǎn)。模擬頁面交互點(diǎn)綁定的事件,進(jìn)入該頁面交互點(diǎn)的相關(guān)頁面,查看是否有該普通字符串。
(7) 如果(4)-(6)三個(gè)步驟均未發(fā)現(xiàn)該普通字符串,則認(rèn)為該漏洞注入點(diǎn)無漏洞,沒有必要進(jìn)行后續(xù)的測試請求,繼續(xù)測試下一個(gè)漏洞注入點(diǎn)。否則,轉(zhuǎn)(9)。
(8) 認(rèn)為該漏洞注入點(diǎn)存在漏洞注入的可能,分別使用測試用例數(shù)據(jù)包的測試用例進(jìn)行漏洞的檢測。本文選擇的測試用例數(shù)據(jù)包是由國外著名安全工程師Rsnake總結(jié)的XSS cheat sheet。該XSS cheat sheet幾乎涵蓋了目前所有可能觸發(fā)XSS的測試用例。
(9) 如果使用測試用例數(shù)據(jù)包的測試用例進(jìn)行測試后,測試用例注入頁面、服務(wù)器響應(yīng)后的跳轉(zhuǎn)頁面、跳轉(zhuǎn)頁面的交互點(diǎn)相關(guān)的頁面均未出現(xiàn)測試用例對應(yīng)的漏洞特征,認(rèn)為該漏洞注入點(diǎn)不存在漏洞,繼續(xù)下一個(gè)漏洞注入點(diǎn)的測試;否則,認(rèn)為該漏洞注入點(diǎn)存在漏洞。
3實(shí)驗(yàn)分析
為了驗(yàn)證本文提出的方法的有效性,本文進(jìn)行了原型系統(tǒng)的實(shí)現(xiàn)。開發(fā)過程中使用的是64位Win 7操作系統(tǒng),集成環(huán)境為Java+Eclipse,該原型系統(tǒng)是基于Ajax爬蟲系統(tǒng)CrawlJax進(jìn)行二次開發(fā)實(shí)現(xiàn)的,漏洞檢測過程中使用了Selenium安全測試框架模擬瀏覽器的事件操作。
為了檢測本文提出的方法以及實(shí)現(xiàn)的原型系統(tǒng)的有效性,本文針對真實(shí)的互聯(lián)網(wǎng)網(wǎng)站進(jìn)行了漏洞檢測,并與其他的漏洞檢測軟件做了對比。其中,網(wǎng)站一是個(gè)人博客網(wǎng)站,具有個(gè)人博客管理功能,未使用Ajax技術(shù)開發(fā)。網(wǎng)站二、網(wǎng)站三均是使用Ajax技術(shù)開發(fā)的網(wǎng)站,分別是某搜索網(wǎng)站和某微博網(wǎng)站。
下面給出一個(gè)實(shí)例。如圖3是測試網(wǎng)站一的個(gè)人博客的添加文章頁面。這里我們向文章內(nèi)容對應(yīng)的文本框注入測試用例,文章標(biāo)題對應(yīng)的內(nèi)容為ss。
圖3 測試網(wǎng)站頁面
圖4是用戶添加文章成功后跳轉(zhuǎn)的頁面,發(fā)現(xiàn)頁面并沒有彈框輸出。
圖4 測試用例注入后調(diào)整的頁面
然而當(dāng)我們點(diǎn)擊文章標(biāo)題ss查看時(shí)(這里是一個(gè)超鏈接,也就是頁面的交互點(diǎn)),就會(huì)發(fā)現(xiàn)如圖5所示的漏洞彈框出現(xiàn)。
圖5 漏洞檢測結(jié)果
通過上述過程可以發(fā)現(xiàn)測試網(wǎng)站頁面存在XSS漏洞,實(shí)際上該漏洞是一個(gè)Stored XSS漏洞。如果通過查看服務(wù)器響應(yīng)后的頁面進(jìn)行漏洞檢測的判斷, 并不能發(fā)現(xiàn)上面例子的漏洞。我們需要在跳轉(zhuǎn)后的頁面模擬交互點(diǎn)的操作,查看頁面交互點(diǎn)相關(guān)的頁面,從而發(fā)現(xiàn)漏洞。
本文具體的XSS漏洞檢測結(jié)果如表1-表3所示。其中,URL代表含參數(shù)的站內(nèi)鏈接,表單代表表單輸入,漏洞指的是檢測XSS漏洞的數(shù)目。
表1 網(wǎng)站一的XSS漏洞檢測結(jié)果
表2 網(wǎng)站二的XSS漏洞檢測結(jié)果
表3 網(wǎng)站三的XSS漏洞檢測結(jié)果
實(shí)驗(yàn)檢測過程中發(fā)現(xiàn)本方法在網(wǎng)站一中未發(fā)現(xiàn)隱含頁面,漏洞的發(fā)現(xiàn)是采用基于頁面交互點(diǎn)相關(guān)的漏洞檢測方法。本方法在網(wǎng)站二的隱含頁面發(fā)現(xiàn)一個(gè)URL類注入點(diǎn),且存在漏洞。本方法在網(wǎng)站三的隱含頁面發(fā)現(xiàn)一個(gè)URL類注入點(diǎn)、一個(gè)表單類注入點(diǎn),檢測表明該URL類注入點(diǎn)不存在漏洞,表單類注入點(diǎn)存在漏洞。通過上述發(fā)現(xiàn)可以總結(jié)出:本方法能夠在隱含頁面查找到漏洞注入點(diǎn),且利用這些漏洞注入點(diǎn)能夠發(fā)現(xiàn)漏洞。針對相同的漏洞注入點(diǎn),本文所采用的漏洞檢測方法能夠檢測到其他方法不可以檢測到的Stored XSS漏洞。
通過實(shí)驗(yàn)數(shù)據(jù),將本文設(shè)計(jì)的原型系統(tǒng)與其他工具相比較可以得出以下幾點(diǎn):(1)XSS-Me是針對單個(gè)頁面的測試,且僅支持當(dāng)前靜態(tài)頁面的表單類注入點(diǎn)的查找。本方法考慮了隱含頁面的漏洞注入的查找。(2)Wapiti主要考慮的漏洞注入點(diǎn)包括:腳本和表單輸入,并沒有考慮含有參數(shù)的超鏈接,而含有參數(shù)的超鏈接也是造成跨站腳本漏洞的原因之一,這樣會(huì)造成漏洞漏報(bào)。(3)Paros3.2.11主要是通過代理服務(wù)器的方式攔截或修改客戶端和服務(wù)器之間傳送的數(shù)據(jù)信息(包括cookie信息和表單信息)發(fā)現(xiàn)漏洞。但是該工具使用的測試用例數(shù)據(jù)包較少,造成對漏洞注入點(diǎn)分析不足,產(chǎn)生漏洞。(4)本方法目前也僅支持網(wǎng)站的單個(gè)頁面的漏洞的檢測,不支持框架式網(wǎng)站。
實(shí)驗(yàn)證明本文提出的基于DOM狀態(tài)改變的方式進(jìn)行漏洞注入點(diǎn)的查找方法能夠在隱含頁面查找到漏洞注入點(diǎn),并且針對這些漏洞注入點(diǎn)進(jìn)行測試用例請求,能夠檢測到漏洞。此外,通過基于頁面交互點(diǎn)相關(guān)的漏洞檢測技術(shù)對這些漏洞注入點(diǎn)進(jìn)行檢測,由于充分考慮了服務(wù)器響應(yīng)的頁面,提高了存儲(chǔ)型XSS漏洞檢測個(gè)數(shù)。
4結(jié)語
針對現(xiàn)有的Web應(yīng)用程序中的隱含頁面的大量存在造成的漏洞注入點(diǎn)比較隱蔽以及漏洞檢測率低的問題,本文提出了基于DOM狀態(tài)改變的方式進(jìn)行漏洞注入點(diǎn)的查找方法以及基于頁面交互點(diǎn)相關(guān)的漏洞檢測方法,并在實(shí)際應(yīng)用中取得了很好的效果。在后續(xù)實(shí)驗(yàn)中,為了進(jìn)一步提高漏洞檢測效率,本文將考慮基于漏洞攻擊位置的不同,使用不同的測試用例進(jìn)行漏洞檢測。本方法目前發(fā)現(xiàn)存在以下問題:表單輸入達(dá)到新的DOM狀態(tài),必須是要有意義的輸入,否則無法達(dá)到某些新的狀態(tài);對于含有賬號輸入的Web應(yīng)用爬蟲效果不是很好,一般總
會(huì)重定向到首頁;漏洞注入點(diǎn)是否可以進(jìn)一步去重,提高漏洞檢測效率。為了進(jìn)一步提高實(shí)驗(yàn)的效果,后續(xù)工作將從以上三個(gè)方面來考慮。
參考文獻(xiàn)
[1] Scholte T,Balzarotti D,Kirda E.Have things changed now? An empirical study on input validation vulnerabilities in web applications[J].Computers & Security,2012,31(3):344-356.
[2] Williams J,Wichers D.OWASP Top 10-2013 rcl-the ten most critical web application security risks[J].The open wep application security project,2013.
[3] Wei S,Ryder B G.Practical blended taint analysis for JavaScript[C]//Proceedings of the 2013 International Symposium on Software Testing and Analysis.ACM,2013:336-346.
[4] Behfarshad Z,Mesbah A.Hidden-web induced by client-side scripting:An empirical study[M]//Web Engineering.Springer Berlin Heidelberg,2013:52-67.
[5] Duchene F,Rawat S,Richier J L,et al.LigRE:Reverse-engineering of control and data flow models for black-box XSS detection[C]//Reverse Engineering (WCRE),2013 20th Working Conference on.IEEE,2013:252-261.
[6] Saxena P,Akhawe D,Hanna S,et al.A symbolic execution framework for javascript[C]//Security and Privacy (SP),2010 IEEE Symposium on.IEEE,2010:513-528.
[7] Saxena P,Hanna S,Poosankam P,et al.FLAX:Systematic Discovery of Client-side Validation Vulnerabilities in Rich Web Applications[C]//NDSS.2010.
[8] Chufeng Z,Qingxian W.Systematical Vulnerability Detection in Browser Validation Mechanism[C]//Computational Intelligence and Security (CIS),2011 Seventh International Conference on.IEEE,2011:831-836.
[9] Antunes N,Vieira M.Enhancing penetration testing with attack signatures and interface monitoring for the detection of injection vulnerabilities in web services[C]//Services Computing (SCC),2011 IEEE International Conference on.IEEE,2011:104-111.
[10] Mesbah A,van Deursen A,Lenselink S.Crawling Ajax-based web applications through dynamic analysis of user interface state changes[J].ACM Transactions on the Web (TWEB),2012,6(1):3.
[11] 陳建青,張玉清.Web 跨站腳本漏洞檢測工具的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2010,36(6):152-154.
[12] 王強(qiáng),蔡皖東,姚燁.基于滲透測試的跨站腳本漏洞檢測方法研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013,23(3):147-151.
[13] 沈壽忠,張玉清.基于爬蟲的 XSS 漏洞檢測工具設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2009,35(21):151-154.
收稿日期:2015-03-04。國家自然科學(xué)基金項(xiàng)目(61202074)。左丹丹,碩士生,主研領(lǐng)域:Web安全。王丹,教授。付利華,講師。
中圖分類號TP391
文獻(xiàn)標(biāo)識(shí)碼A
DOI:10.3969/j.issn.1000-386x.2016.07.063
DESIGNING AND APPLICATION OF AN XSS VULNERABILITY DETECTION METHOD
Zuo DandanWang DanFu Lihua
(SchoolofComputerScience,BeijingUniversityofTechnology,Beijing100124,China)
AbstractCross-site scripting (XSS) vulnerability is the one more popular in recent years,along with the wide use of Ajax technology,its harmfulness and rapid dissemination capability are getting increasingly serious.Existing vulnerability detection techniques do not sufficiently focus on studying the vulnerability injection points of XSS vulnerability,and the vulnerability detection techniques used do not fully consider the response pages after requesting the tests as well,which leads to the relatively low vulnerability detection rate.For the shortcomings mentioned above,we enhanced the analysis of DOM structure of the hidden webpage,and proposed the method to search vulnerability injection points based on the way of DOM status changing.According to that we also proposed a new vulnerability detection method which is based on the correlation of webpage interaction points,and designed and implemented the vulnerability detection prototype system.Experimental results showed that this prototype system could effectively find more vulnerability injection points and could effectively improve vulnerability detection rate.
KeywordsCross-site scripting(XSS) vulnerabilityVulnerability injection pointHidden webpageVulnerability detection