基于文檔對(duì)象模型的跨站腳本攻擊漏洞檢測(cè)方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別涉及一種基于文檔對(duì)象模型(Document ObjectModel, DOM)的跨站腳本攻擊(Cross Site Script,XSS)漏洞檢測(cè)方法及裝置、終端。
【背景技術(shù)】
[0002]XSS漏洞是當(dāng)今互聯(lián)網(wǎng)最為普遍的漏洞,可以在IE, Chrome, FireFox等各個(gè)瀏覽器觸發(fā),危害十分巨大。
[0003]通常情況下,XSS是惡意攻擊者通過在網(wǎng)頁(yè)中加入惡意代碼并誘使用戶訪問,當(dāng)訪問者瀏覽網(wǎng)頁(yè)時(shí)惡意代碼會(huì)在用戶機(jī)器上執(zhí)行,從而導(dǎo)致惡意攻擊者盜取用戶信息,或者在用戶機(jī)器上進(jìn)行掛馬攻擊并遠(yuǎn)程獲得用戶機(jī)器的控制權(quán)。普通反射型XSS在返回頁(yè)面源碼中具有明顯的回顯特征,比較容易檢測(cè)。DOM XSS是一種DOM XSS漏洞。與普通反射型XSS不同的是,DOM XSS是在瀏覽器執(zhí)行JavaScript (簡(jiǎn)稱JS)代碼并改變頁(yè)面DOM樹時(shí)發(fā)生的,惡意代碼并不在返回頁(yè)面源碼中回顯?,F(xiàn)有技術(shù)公開了一種DOM XSS漏洞檢測(cè)方案,其主要是向網(wǎng)頁(yè)可接收的參數(shù)值中插入特征JS腳本,訪問網(wǎng)頁(yè)獲取動(dòng)態(tài)網(wǎng)頁(yè)內(nèi)容并轉(zhuǎn)化為DOM模型,然后利用JS腳本解析引擎執(zhí)行腳本,如果通過參數(shù)值插入的特征腳本被執(zhí)行,則認(rèn)為所述網(wǎng)頁(yè)中對(duì)該參數(shù)的處理存在XSS漏洞。
[0004]在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:現(xiàn)有的DOM XSS漏洞檢測(cè)方案,要觸發(fā)執(zhí)行所插入的特征JS腳本才能發(fā)現(xiàn)XSS漏洞,且只有在插入的特征JS腳本與動(dòng)態(tài)網(wǎng)頁(yè)內(nèi)容的上下文語(yǔ)法完全吻合時(shí)才有可能觸發(fā)執(zhí)行特征JS腳本,這就導(dǎo)致需要嘗試足夠多類型的特征JS腳本,而且每次嘗試執(zhí)行JS腳本都需花費(fèi)大量時(shí)間,這大大降低了漏洞發(fā)現(xiàn)能力與檢測(cè)效率。
【發(fā)明內(nèi)容】
[0005]為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實(shí)施例提供了一種基于文檔對(duì)象模型的跨站腳本攻擊漏洞檢測(cè)方法及裝置、終端。所述技術(shù)方案如下:
[0006]一方面,提供了一種基于文檔對(duì)象模型的跨站腳本攻擊漏洞檢測(cè)方法,所述方法包括:
[0007]獲取待檢測(cè)網(wǎng)頁(yè)的原始網(wǎng)址中的參數(shù)值對(duì)集合,所述參數(shù)值對(duì)集合中包括至少一個(gè)參數(shù)值對(duì);
[0008]對(duì)所述參數(shù)值對(duì)集合中的每個(gè)所述參數(shù)值對(duì),采用特征腳本替換所述參數(shù)值,形成所述待檢測(cè)網(wǎng)頁(yè)的測(cè)試網(wǎng)址;所述特征腳本為包含有惡意字符且能在所述待檢測(cè)網(wǎng)頁(yè)的文檔對(duì)象模型樹中唯一標(biāo)識(shí)的惡意代碼;
[0009]獲取所述測(cè)試網(wǎng)址的頁(yè)面內(nèi)容;
[0010]將所述頁(yè)面內(nèi)容轉(zhuǎn)化為文檔對(duì)象模型樹;
[0011]根據(jù)所述文檔對(duì)象模型樹和所述特征腳本檢測(cè)當(dāng)前的所述參數(shù)值對(duì)是否存在跨站腳本攻擊漏洞。
[0012]另一方面,提供了一種基于文檔對(duì)象模型的跨站腳本攻擊漏洞檢測(cè)裝置,所述裝置包括:
[0013]獲取模塊,用于獲取待檢測(cè)網(wǎng)頁(yè)的原始網(wǎng)址中的參數(shù)值對(duì)集合,所述參數(shù)值對(duì)集合中包括至少一個(gè)參數(shù)值對(duì);
[0014]替換模塊,用于對(duì)所述參數(shù)值對(duì)集合中的每個(gè)所述參數(shù)值對(duì),采用特征腳本替換所述參數(shù)值,形成所述待檢測(cè)網(wǎng)頁(yè)的測(cè)試網(wǎng)址;所述特征腳本為包含有惡意字符且能在所述待檢測(cè)網(wǎng)頁(yè)的文檔對(duì)象模型樹中唯一標(biāo)識(shí)的惡意代碼;
[0015]所述獲取模塊,還用于獲取所述測(cè)試網(wǎng)址的頁(yè)面內(nèi)容;
[0016]轉(zhuǎn)化模塊,用于將所述頁(yè)面內(nèi)容轉(zhuǎn)化為文檔對(duì)象模型樹;
[0017]檢測(cè)模塊,用于根據(jù)所述文檔對(duì)象模型樹和所述特征腳本檢測(cè)當(dāng)前的所述參數(shù)值對(duì)是否存在跨站腳本攻擊漏洞。
[0018]再一方面,還提供了一種終端,所述終端上設(shè)置有如上所述的基于文檔對(duì)象模型的跨站腳本攻擊漏洞檢測(cè)裝置。
[0019]本發(fā)明實(shí)施例提供的基于文檔對(duì)象模型的跨站腳本攻擊漏洞檢測(cè)方法及裝置、終端,通過采用上述方案,只需在轉(zhuǎn)化的DOM樹中尋找插入的特征腳本,而不需要讓特征腳本觸發(fā)執(zhí)行就能有效發(fā)現(xiàn)DOM XSS漏洞,大大提高了漏洞發(fā)現(xiàn)能力及檢測(cè)效率。
【附圖說(shuō)明】
[0020]為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0021]圖1為本發(fā)明一實(shí)施例提供的DOM XSS漏洞檢測(cè)方法的流程圖。
[0022]圖2為本發(fā)明另一實(shí)施例提供的DOM XSS漏洞檢測(cè)方法的流程圖。
[0023]圖3為本發(fā)明實(shí)施例的DOM XSS漏洞檢測(cè)方案的檢測(cè)結(jié)果實(shí)例圖。
[0024]圖4為圖3所示實(shí)施例的DOM XSS漏洞的使用場(chǎng)景圖。
[0025]圖5為本發(fā)明一實(shí)施例提供的DOM XSS漏洞檢測(cè)裝置的結(jié)構(gòu)示意圖。
[0026]圖6為本發(fā)明另一實(shí)施例提供的DOM XSS漏洞檢測(cè)裝置的結(jié)構(gòu)示意圖。
[0027]圖7是本發(fā)明實(shí)施例提供的一種終端結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0028]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
[0029]圖1為本發(fā)明一實(shí)施例提供的DOM XSS漏洞檢測(cè)方法的流程圖。即本實(shí)施例的基于文檔對(duì)象模型(Document Object Model, DOM)的跨站腳本攻擊(Cross Site Script,XSS)漏洞檢測(cè)方法直接簡(jiǎn)稱為DOM XSS漏洞檢測(cè)方法。如圖1所示,本實(shí)施例的DOM XSS漏洞檢測(cè)方法,具體可以包括如下步驟:
[0030]100、獲取待檢測(cè)網(wǎng)頁(yè)的原始網(wǎng)址中的參數(shù)值對(duì)集合;
[0031]本實(shí)施例的參數(shù)值對(duì)集合中包括至少一個(gè)參數(shù)值對(duì)。
[0032]本實(shí)施例中待檢測(cè)網(wǎng)頁(yè)可能是存在DOM XSS的網(wǎng)頁(yè),存在DOM XSS的網(wǎng)頁(yè)可能是帶參數(shù)的通用網(wǎng)關(guān)接口(Common Gateway Interface ;CGI),也可能是無(wú)參數(shù)的靜態(tài)頁(yè)面,只要是用戶能夠控制輸入地方都可以是一個(gè)參數(shù)值對(duì),也就是需要檢測(cè)的目標(biāo)點(diǎn)。比如對(duì)于靜態(tài)頁(yè)面a.html,其參數(shù)值對(duì)可以是a.html#XXX或者a.html?XXX。對(duì)于動(dòng)態(tài)頁(yè)面a.php?b=l&c=2,參數(shù)值對(duì)可以是 b=XXX 和 c=XXX。
[0033]101、對(duì)參數(shù)值對(duì)集合中的每個(gè)參數(shù)值對(duì),采用特征腳本替換參數(shù)值,形成待檢測(cè)網(wǎng)頁(yè)的測(cè)試網(wǎng)址;
[0034]本實(shí)施例的特征腳本為包含有惡意字符且能在待檢測(cè)網(wǎng)頁(yè)的DOM樹中唯一標(biāo)識(shí)的惡意代碼,該特征腳本也可以稱為JS特征腳本。其中惡意字符可以為根據(jù)現(xiàn)有的XSS漏洞檢測(cè)方案得來(lái)的惡意字符,例如可以為字符〈、字符 >、字符“、字符”、字符‘、字符’以及字符/等等。
[0035]上述XXX即為需要用特征腳本替換的參數(shù)值,如〈img src=x onerror=alert (/dom-xss/)/>是一個(gè)嘗試在網(wǎng)頁(yè)DOM樹中插入標(biāo)簽的特征腳本。需要說(shuō)明的是特征腳本可以有若干個(gè),每個(gè)特征腳本需要順序獨(dú)立的檢測(cè)。顯然,特征腳本越多,漏洞發(fā)現(xiàn)能力越強(qiáng),但整體檢測(cè)效率越慢,在保證足夠發(fā)現(xiàn)能力的同時(shí)嚴(yán)格控制特征腳本的數(shù)目以保證檢測(cè)效率。本實(shí)施例中以一個(gè)特征腳本為例來(lái)描述本發(fā)明的技術(shù)方案,對(duì)于每一個(gè)特征腳本可以采用類似的方案進(jìn)行檢測(cè),在此不再一一舉例贅述。
[0036]本實(shí)施例中對(duì)參數(shù)值對(duì)集合中的每個(gè)參數(shù)值對(duì),采用特征腳本替換參數(shù)值,形成待檢測(cè)網(wǎng)頁(yè)的測(cè)試網(wǎng)址時(shí),可以按照每個(gè)參數(shù)值對(duì)在待檢測(cè)網(wǎng)頁(yè)的原始網(wǎng)址中的先后順序,一一進(jìn)行測(cè)試,以保證可以對(duì)每個(gè)參數(shù)值對(duì)進(jìn)行測(cè)試,而且對(duì)每個(gè)參數(shù)值對(duì)進(jìn)行測(cè)試時(shí),可以采用多個(gè)特征腳本一一進(jìn)行測(cè)試,以保證測(cè)試的效率。本發(fā)明實(shí)施例的特征腳本可以為根據(jù)經(jīng)驗(yàn)預(yù)先設(shè)置的。
[0037]102、獲取測(cè)試網(wǎng)址的頁(yè)面內(nèi)容;
[0038]例如可以從測(cè)試網(wǎng)址的網(wǎng)站服務(wù)器中獲取該測(cè)試網(wǎng)址的頁(yè)面內(nèi)容。
[0039]本實(shí)施例中的頁(yè)面內(nèi)容是指網(wǎng)址對(duì)應(yīng)的網(wǎng)頁(yè)中所包括的所有信息,可以包括文字、圖片等等資源。該測(cè)試網(wǎng)址的頁(yè)面內(nèi)容即是指該測(cè)試網(wǎng)址對(duì)應(yīng)的網(wǎng)頁(yè)中所包括的所有信息。
[0040]103、將頁(yè)面內(nèi)容轉(zhuǎn)化為DOM樹;
[0041]DOM樹是頁(yè)面內(nèi)容中頁(yè)面上數(shù)據(jù)和結(jié)構(gòu)的一個(gè)樹形的表示,而頁(yè)面內(nèi)容是DOM樹中的數(shù)據(jù)和結(jié)構(gòu)的表現(xiàn)方式,DOM樹和頁(yè)面內(nèi)容是數(shù)據(jù)和結(jié)構(gòu)的兩種表現(xiàn)方式,根據(jù)兩者的對(duì)應(yīng)關(guān)系,可以進(jìn)行互相轉(zhuǎn)換。例如具體轉(zhuǎn)換時(shí),可以將網(wǎng)頁(yè)內(nèi)容的源代碼中的所有標(biāo)簽節(jié)點(diǎn)按照各節(jié)點(diǎn)之間的父子關(guān)系,將各標(biāo)簽節(jié)點(diǎn)展示出來(lái),即得到了該頁(yè)面內(nèi)容的DOM樹結(jié)構(gòu)。
[0042]104、根據(jù)DOM樹和特征腳本檢測(cè)當(dāng)前的參數(shù)值對(duì)是否存在XSS漏洞。
[0043]例如當(dāng)以〈imgsrc=x onerror=alert (/dom-xss/)/> 為一個(gè)嘗試在網(wǎng)頁(yè)DOM 樹中插入標(biāo)簽的特征腳本時(shí),可以向測(cè)試網(wǎng)址的網(wǎng)站服務(wù)器請(qǐng)求參數(shù)值對(duì)為a.php?b=<imgsrc=x onerror=alert (/dom-xss/) />&c=2的頁(yè)面內(nèi)容,并將頁(yè)面內(nèi)容轉(zhuǎn)化為DOM樹,從而根據(jù)DOM樹和特征腳本“〈img src=x onerror=alert (/dom-xss/)/>”檢測(cè)每一個(gè)參數(shù)值對(duì)是否存在XSS漏洞。
[0044]本實(shí)施例的DOM XSS漏洞檢測(cè)方法的執(zhí)行主體為DOM XSS漏洞檢測(cè)裝置,該裝置具體可以為通過軟件集成得到,例如可以為一個(gè)軟件集成的工具。
[0045]本實(shí)施例的DOM XSS漏洞檢測(cè)方法,通過采用上述方案,只需在轉(zhuǎn)化的DOM樹中尋找插入的特征腳本,而不需要讓特征腳本觸發(fā)執(zhí)行就能有效發(fā)現(xiàn)DOM XSS漏洞,大大提高了漏洞發(fā)現(xiàn)能力及檢測(cè)效率。
[0046]進(jìn)一步可選地,在上述實(shí)施例的技術(shù)方案的基礎(chǔ)上,其中步驟104 “根據(jù)DOM樹和特征腳本檢測(cè)當(dāng)前的參數(shù)值對(duì)是否存在XSS漏洞”,具體可以包括:判斷DOM樹中是否包括特征腳本,當(dāng)包括時(shí),確定當(dāng)前的參數(shù)值對(duì)存在XSS漏洞;否則當(dāng)