本發(fā)明涉及Web應(yīng)用測試技術(shù)領(lǐng)域,尤其涉及一種基于虛擬解析的漏洞檢測方法及其裝置。
背景技術(shù):
近年來,隨著Web應(yīng)用的廣泛使用,Web安全問題也日益突出。其中,XSS(Cross-site scripting,跨站腳本攻擊)漏洞已成為Web應(yīng)用程序中最常見的漏洞之一,因此,對XSS漏洞的自動化檢測也成為了一項重要的技術(shù)。
目前,一般采用XSS檢測工具來檢測XSS漏洞,其具體過程如下:(1)XSS檢測工具捕獲客戶端(瀏覽器)所發(fā)送的http請求;(2)XSS檢測工具構(gòu)造帶有特征值的請求;(3)XSS檢測工具將帶有特征值的請求發(fā)送至Web服務(wù)器,Web服務(wù)器響應(yīng)該請求;(4)XSS檢測工具在該請求響應(yīng)的頁面源代碼中檢測特征值,若在某處檢測到特征值,則認為此處為一個XSS漏洞。
但是,上述漏洞檢測方法中未對可能的XSS輸出點進行定位,從而檢測的準(zhǔn)確性較低。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例所要解決的技術(shù)問題是:提供一種基于虛擬解析的漏洞檢測方法,以提高檢測的準(zhǔn)確性。
為解決上述技術(shù)問題,本發(fā)明實施例采用的技術(shù)方案如下:
提供一種基于虛擬解析的漏洞檢測方法,包括:
接收客戶端所發(fā)送的用戶請求;
對所述用戶請求插入探針以獲取目標(biāo)注入?yún)?shù)、目標(biāo)輸出點、所述目標(biāo)輸出點的上下文信息及所述目標(biāo)輸出點的XPath;
根據(jù)所述目標(biāo)輸出點的上下文信息構(gòu)造目標(biāo)特征值;
針對所述目標(biāo)注入?yún)?shù),向Web服務(wù)器發(fā)送帶有所述目標(biāo)特征值的檢測請求;
接收所述Web服務(wù)器對所述檢測請求的第一響應(yīng)結(jié)果,所述第一響應(yīng)結(jié)果包括頁面源代碼;
根據(jù)虛擬解析器對所述頁面源代碼進行解析以得到第一解析頁面;
根據(jù)所述目標(biāo)輸出點的XPath對所述第一解析頁面進行特征值檢測以得到XSS漏洞。
具體地,所述用戶請求中包括至少一個參數(shù),對所述用戶請求插入探針以獲取目標(biāo)注入?yún)?shù)、目標(biāo)輸出點、所述目標(biāo)輸出點的上下文信息及所述目標(biāo)輸出點的XPath具體包括:
對每一個所述參數(shù)構(gòu)造所述探針并發(fā)送帶有所述探針的第一請求至Web服務(wù)器,且所述探針具有唯一性;
接收所述Web服務(wù)器針對所述第一請求的第二響應(yīng)結(jié)果,并根據(jù)所述第二響應(yīng)結(jié)果獲取所述目標(biāo)注入?yún)?shù)、目標(biāo)輸出點、所述目標(biāo)輸出點的上下文信息及所述目標(biāo)輸出點的XPath。
可選地,所述第二響應(yīng)結(jié)果包括頁面源代碼,根據(jù)所述第二響應(yīng)結(jié)果獲取所述目標(biāo)注入?yún)?shù)、目標(biāo)輸出點、所述目標(biāo)輸出點的上下文信息及所述目標(biāo)輸出點的XPath具體包括:
檢測所述頁面源代碼中是否存在所述探針;
若存在,則確定所述探針?biāo)诘奈恢脼樗瞿繕?biāo)輸出點,同時確定所述探針?biāo)鶎?yīng)的參數(shù)為所述目標(biāo)注入?yún)?shù),同時確定所述探針?biāo)鶎?yīng)的參數(shù)為所述目標(biāo)注入?yún)?shù),并獲取所述目標(biāo)輸出點的上下文信息及所述目標(biāo)輸出點的XPath。
可選地,所述第二響應(yīng)結(jié)果包括頁面源代碼,根據(jù)所述第二響應(yīng)結(jié)果獲取所述目標(biāo)注入?yún)?shù)、目標(biāo)輸出點、所述目標(biāo)輸出點的上下文信息及所述目標(biāo)輸出點的XPath具體包括:
根據(jù)所述虛擬解析器對所述頁面源代碼進行解析以得到第二解析界面;
檢測所述第二解析界面中是否存在所述探針;
若存在,則確定所述探針?biāo)诘奈恢脼樗瞿繕?biāo)輸出點,同時確定所述探針?biāo)鶎?yīng)的參數(shù)為所述目標(biāo)注入?yún)?shù),同時確定所述探針?biāo)鶎?yīng)的參數(shù)為所述目標(biāo)注入?yún)?shù),并獲取所述目標(biāo)輸出點的上下文信息及所述目標(biāo)輸出點的XPath。
具體地,該用戶請求為http請求。
相應(yīng)地,本發(fā)明實施例還提供了一種基于虛擬解析的漏洞檢測裝置,包括:
接收模塊,用于接收客戶端所發(fā)送的用戶請求;
獲取模塊,用于對所述用戶請求插入探針以獲取目標(biāo)注入?yún)?shù)、目標(biāo)輸出點、所述目標(biāo)輸出點的上下文信息及所述目標(biāo)輸出點的XPath;
構(gòu)造模塊,用于根據(jù)所述目標(biāo)輸出點的上下文信息構(gòu)造目標(biāo)特征值;
發(fā)送模塊,用于針對所述目標(biāo)注入?yún)?shù),向Web服務(wù)器發(fā)送帶有所述目標(biāo)特征值的檢測請求;
所述接收模塊還用于接收所述Web服務(wù)器對所述檢測請求的第一響應(yīng)結(jié)果,所述第一響應(yīng)結(jié)果包括頁面源代碼;
解析模塊,用于根據(jù)虛擬解析器對所述頁面源代碼進行解析以得到第一解析頁面;
檢測模塊,用于根據(jù)所述目標(biāo)輸出點的XPath對所述第一解析頁面進行特征值檢測以得到XSS漏洞。
具體地,所述用戶請求中包括至少一個參數(shù),所述獲取模塊具體用于:
對每一個所述參數(shù)構(gòu)造所述探針并發(fā)送帶有所述探針的第一請求至Web服務(wù)器,且所述探針具有唯一性;
接收所述Web服務(wù)器針對所述第一請求的第二響應(yīng)結(jié)果,并根據(jù)所述第二響應(yīng)結(jié)果獲取所述目標(biāo)注入?yún)?shù)、目標(biāo)輸出點、所述目標(biāo)輸出點的上下文信息及所述目標(biāo)輸出點的XPath。
可選地,所述第二響應(yīng)結(jié)果包括頁面源代碼,所述獲取模塊具體用于:
檢測所述頁面源代碼中是否存在所述探針;
若存在,則確定所述探針?biāo)诘奈恢脼樗瞿繕?biāo)輸出點,同時確定所述探針?biāo)鶎?yīng)的參數(shù)為所述目標(biāo)注入?yún)?shù),同時確定所述探針?biāo)鶎?yīng)的參數(shù)為所述目標(biāo)注入?yún)?shù),并獲取所述目標(biāo)輸出點的上下文信息及所述目標(biāo)輸出點的XPath。
可選地,所述第二響應(yīng)結(jié)果包括頁面源代碼,所述獲取模塊具體用于:
根據(jù)所述虛擬解析器對所述頁面源代碼進行解析以得到第二解析界面;
檢測所述第二解析界面中是否存在所述探針;
若存在,則確定所述探針?biāo)诘奈恢脼樗瞿繕?biāo)輸出點,同時確定所述探針?biāo)鶎?yīng)的參數(shù)為所述目標(biāo)注入?yún)?shù),同時確定所述探針?biāo)鶎?yīng)的參數(shù)為所述目標(biāo)注入?yún)?shù),并獲取所述目標(biāo)輸出點的上下文信息及所述目標(biāo)輸出點的XPath。
具體地,該用戶請求為http請求。
與現(xiàn)有技術(shù)相比,本發(fā)明實施例中基于虛擬解析的漏洞檢測方法及其裝置,先對客戶端所發(fā)送的用戶請求插入探針,以獲取目標(biāo)注入?yún)?shù)、目標(biāo)輸出點、目標(biāo)輸出點的上下文信息及目標(biāo)輸出點的XPath,再根據(jù)目標(biāo)輸出點的上下文信息構(gòu)造目標(biāo)特征值,之后,針對目標(biāo)注入?yún)?shù),向Web服務(wù)器發(fā)送帶有所述目標(biāo)特征值的處理請求,接收Web服務(wù)器對處理請求的第一響應(yīng)結(jié)果,并根據(jù)虛擬解析器對頁面源代碼進行解析以得到第一解析頁面,最后根據(jù)目標(biāo)輸出點的XPath對第一解析頁面進行特征值檢測以得到XSS漏洞。即,本發(fā)明實施例提出了一種結(jié)合探針預(yù)檢測技術(shù)定位輸出點XPath,并在響應(yīng)檢測階段通過XPath精確確認XSS漏洞的機制,從而提高了漏洞檢測的準(zhǔn)確性。
通過以下的描述并結(jié)合附圖,本發(fā)明將變得更加清晰,這些附圖用于解釋本發(fā)明的實施例。
附圖說明
圖1為本發(fā)明基于虛擬解析的漏洞檢測方法第一實施例的流程圖。
圖2為本發(fā)明基于虛擬解析的漏洞檢測方法第二實施例的流程圖。
圖3為jsp示例代碼界面圖。
圖4為經(jīng)虛擬解析的一示例界面圖。
圖5為經(jīng)虛擬解析的另一示例界面圖。
圖6為經(jīng)虛擬解析的再一示例界面圖。
圖7為發(fā)明基于虛擬解析的漏洞檢測裝置第一實施例的結(jié)構(gòu)圖。
具體實施方式
現(xiàn)在參考附圖描述本發(fā)明的實施例,附圖中類似的元件標(biāo)號代表類似的元件。
為了更好地理解本發(fā)明,先對本發(fā)明的原理做如下說明:本發(fā)明是一種基于虛擬解析的XSS檢測技術(shù),提出一種結(jié)合探針預(yù)檢測技術(shù)定位輸出點XPath,并在響應(yīng)檢測階段通過XPath精確確認XSS漏洞的機制。具體包括:(1)探針預(yù)檢測階段;(2)精確構(gòu)造特征值并發(fā)送檢測請求階段;(3)響應(yīng)檢測階段。
請參考圖1,是本發(fā)明第一實施例的基于虛擬解析漏洞檢測方法流程圖。如圖所示,該方法可以包括如下步驟:
S101,接收客戶端所發(fā)送的用戶請求,該用戶請求中包括至少一個參數(shù)。
具體地,客戶端(瀏覽器)先將XSS檢測工具(即下文中所描述的漏洞檢測裝置)設(shè)置為代理,以用于后續(xù)代理客戶端向Web服務(wù)器發(fā)送請求。之后,客戶端向XSS檢測工具發(fā)送用戶請求(http請求),XSS檢測工具接收該http請求、保存該請求的信息。進一步地,XSS檢測工具將http請求發(fā)送至Web服務(wù)器。
S102,對用戶請求插入探針以獲取目標(biāo)注入?yún)?shù)、目標(biāo)輸出點、所述目標(biāo)輸出點的上下文信息及所述目標(biāo)輸出點的XPath。
具體地,用戶請求中包括至少一個參數(shù),XSS檢測工具對每一個參數(shù)插入一探針,并結(jié)合探測技術(shù)獲取目標(biāo)注入?yún)?shù)、目標(biāo)輸出點、目標(biāo)輸出點的上下文信息及目標(biāo)輸出點的XPath。例如,目標(biāo)輸出點的XPath為html/body/div[@id=’containerDiv’]/a。進一步地,該部分的具體實施過程將在下一實施例中進行詳述,故在此不再贅述。
S103,根據(jù)目標(biāo)輸出點的上下文信息構(gòu)造目標(biāo)特征值。
具體地,XSS檢測工具根據(jù)目標(biāo)輸出點的上下文信息構(gòu)造目標(biāo)特征值,如?!?'><div id='999982118890' name='xssTester1001001'>XSSTester</div><a>”
S104,針對目標(biāo)注入?yún)?shù),向Web服務(wù)器發(fā)送帶有目標(biāo)特征值的檢測請求。
具體地,針對步驟S102中所得到的目標(biāo)注入?yún)?shù),XSS檢測工具向Web服務(wù)器發(fā)送帶有目標(biāo)特征值的檢測請求。
S105,接收Web服務(wù)器對檢測請求的第一響應(yīng)結(jié)果,該第一響應(yīng)結(jié)果包括頁面源代碼。
具體地,Web服務(wù)器接收檢測請求,并對其進行響應(yīng),進一步地,將響應(yīng)結(jié)果返回至XSS檢測工具。
S106,根據(jù)虛擬解析器對頁面源代碼進行解析以得到第一解析頁面。
具體地,XSS檢測工具采用虛擬解析器(即類瀏覽器的解析技術(shù))對Web服務(wù)器所返回的響應(yīng)結(jié)果進行虛擬解析,從而可以得到第一解析界面。其中,第一解析界面可參考圖2。
S107,根據(jù)目標(biāo)輸出點的XPath對第一解析頁面進行特征值檢測以得到XSS漏洞。
具體地,XSS檢測工具根據(jù)目標(biāo)輸出點的XPath對第一解析頁面進行特征值檢測以得到XSS漏洞。
本發(fā)明實施例中基于虛擬解析的漏洞檢測方法,先對客戶端所發(fā)送的用戶請求插入探針,以獲取目標(biāo)注入?yún)?shù)、目標(biāo)輸出點、目標(biāo)輸出點的上下文信息及目標(biāo)輸出點的XPath,再根據(jù)目標(biāo)輸出點的上下文信息構(gòu)造目標(biāo)特征值,之后,針對目標(biāo)注入?yún)?shù),向Web服務(wù)器發(fā)送帶有所述目標(biāo)特征值的處理請求,接收Web服務(wù)器對處理請求的第一響應(yīng)結(jié)果,并根據(jù)虛擬解析器對頁面源代碼進行解析以得到第一解析頁面,最后根據(jù)目標(biāo)輸出點的XPath對第一解析頁面進行特征值檢測以得到XSS漏洞。即,本發(fā)明實施例提出了一種結(jié)合探針預(yù)檢測技術(shù)定位輸出點XPath,并在響應(yīng)檢測階段通過XPath精確確認XSS漏洞的機制,從而提高了漏洞檢測的準(zhǔn)確性。
請參考圖2,是本發(fā)明第二實施例的基于虛擬解析漏洞檢測方法流程圖。如圖所示,該方法可以包括如下步驟:
S201,接收客戶端所發(fā)送的用戶請求,該用戶請求中包括至少一個參數(shù)。
具體地,客戶端(瀏覽器)先將XSS檢測工具設(shè)置為代理,以用于后續(xù)代理客戶端向Web服務(wù)器發(fā)送請求。之后,客戶端向XSS檢測工具發(fā)送用戶請求(http請求),XSS檢測工具接收該http請求、保存該請求的信息。進一步地,XSS檢測工具將http請求發(fā)送至Web服務(wù)器。
S202,對每一個參數(shù)構(gòu)造檢測探針并發(fā)送帶有檢測探針的第一請求至Web服務(wù)器,且檢測探針具有唯一性。
需要說明的是,檢測探針的本質(zhì)也是一種檢測特征值,它的構(gòu)造符合以下幾條規(guī)則:(1)全局唯一性;(2)具有一定規(guī)則,以便于發(fā)現(xiàn)存儲型的XSS問題;(3)盡量避免web應(yīng)用的參數(shù)輸入校驗,減少與檢測的失敗率。例如,可以采用數(shù)字字符作為探針,如“99993679123”,其中“9999”是探針前綴,表示這是個探針,“3679123”是隨機數(shù),避免探針值之間產(chǎn)生沖突。
具體地,XSS檢測工具對用戶請求中的每一個參數(shù)都構(gòu)造一個唯一的探針,并發(fā)送帶有探針的第一請求至Web服務(wù)器。例如,用戶請求中有5個參數(shù),則分別為其構(gòu)造的檢測探針可表示為:探針1、探針2、探針3、探針4及探針5,且探針的表現(xiàn)形式如前所述。
S203,接收Web服務(wù)器針對第一請求的第二響應(yīng)結(jié)果,并根據(jù)第二響應(yīng)結(jié)果獲取目標(biāo)注入?yún)?shù)、目標(biāo)輸出點、目標(biāo)輸出點的上下文信息及目標(biāo)輸出點的XPath。
具體地,在本實施例中,響應(yīng)結(jié)果包括頁面源代碼。Web服務(wù)器接收到帶有探針的第一請求之后,將會對其做出響應(yīng),并將響應(yīng)結(jié)果返回至XSS檢測工具。進一步地,XSS檢測工具會先根據(jù)虛擬解析器對頁面源代碼進行解析以得到解析界面,再對解析界面進行分析。如果在頁面源代碼中檢測到探針,則標(biāo)記此處為可能的XSS輸出點(即確定探針?biāo)诘奈恢脼槟繕?biāo)輸出點),同時標(biāo)記該注入的參數(shù)為可能注入的參數(shù)(即確定探針?biāo)鶎?yīng)的參數(shù)為目標(biāo)注入?yún)?shù)),并獲取目標(biāo)輸出點的上下文信息及目標(biāo)輸出點的XPath。
其中,XPath即為XML路徑語言,它是一種用來確定XML(標(biāo)準(zhǔn)通用標(biāo)記語言的子集)文檔中某部分位置的語言。XPath基于XML的樹狀結(jié)構(gòu),提供在數(shù)據(jù)結(jié)構(gòu)樹中找尋節(jié)點的能力。XPath雖然是被設(shè)計用來搜尋XML文檔的,不過它也能很好的在HTML文檔中工作,并且大部分瀏覽器也支持通過XPath來查詢節(jié)點。
需要說明的是,現(xiàn)有的XSS漏洞檢測方法是對頁面源代碼進行特征值檢測,其不能檢測到web頁面中嵌入的JavaScript、CSS動態(tài)生成的元素的XSS漏洞。而基于類瀏覽器虛擬解析技術(shù)的XSS漏洞檢測方法解決了這一問題。但是,基于類瀏覽器虛擬解析技術(shù)的XSS漏洞檢測方法僅僅通過對虛擬解析后的響應(yīng)結(jié)果進行文本搜索的方式來查找和確認XSS漏洞。如果輸出點做了XSS輸出編碼保護,經(jīng)過類瀏覽器虛擬解析后,得到的將是未做編碼前的原文,此時通過對響應(yīng)結(jié)果進行文本搜索的方式來進行特征檢測,將會產(chǎn)生大量的XSS誤報。因此,本實施例中先結(jié)合探針預(yù)檢測技術(shù)定位出輸出點的XPath,為后續(xù)響應(yīng)檢測階段通過XPath精確確認XSS漏洞提供基礎(chǔ)。
還需要說明的是,虛擬解析技術(shù)可以模擬瀏覽器運行,相當(dāng)于無界面的瀏覽器,可以對http請求響應(yīng)的源代碼做JavaScript、html和css的解析。由于其運行不需要界面,運行速度非常迅速。目前業(yè)界已經(jīng)有較為成熟的開源軟件庫,大多運用在Web應(yīng)用的自動化測試領(lǐng)域。
進一步地,以下以一個簡單的示例說明虛擬解析技術(shù)的作用。請參考圖3,其是一段簡單的jsp示例代碼。假設(shè)參數(shù)傳入url的探針值為’www.demo.com’,經(jīng)過第一步的探針預(yù)檢測過程,頁面響應(yīng)經(jīng)過虛擬解析后,可以得到如圖4所示下的html頁面。從該圖中可以得到目標(biāo)輸出點的XPath為html/body/div[@id=’containerDiv’]/a。此外,經(jīng)過探針預(yù)檢測后還可以得到輸出點的上下文信息。
可選地,在發(fā)明實施例的其它可選方式中,步驟S203具體包括對頁面源代碼進行分析。如果在頁面源代碼中檢測到檢測探針,則標(biāo)記此處為可能的XSS輸出點(即確定檢測探針?biāo)诘奈恢脼槟繕?biāo)輸出點),同時標(biāo)記該注入的參數(shù)為可能注入的參數(shù)(即確定檢測探針?biāo)鶎?yīng)的參數(shù)為目標(biāo)注入?yún)?shù)),并獲取目標(biāo)輸出點的上下文信息及目標(biāo)輸出點的XPath。
S204,根據(jù)目標(biāo)輸出點的上下文信息構(gòu)造目標(biāo)特征值。
具體地,XSS檢測工具根據(jù)目標(biāo)輸出點的上下文信息構(gòu)造目標(biāo)特征值,如“''><div id='999982118890' name='xssTester1001001'>XSSTester</div><a>”
S205,針對目標(biāo)注入?yún)?shù),向Web服務(wù)器發(fā)送帶有目標(biāo)特征值的檢測請求。
具體地,針對步驟S102中所得到的目標(biāo)注入?yún)?shù),XSS檢測工具向Web服務(wù)器發(fā)送帶有目標(biāo)特征值的檢測請求。
S206,接收Web服務(wù)器對檢測請求的第一響應(yīng)結(jié)果,該第一響應(yīng)結(jié)果包括頁面源代碼。
具體地,Web服務(wù)器接收檢測請求,并對其進行響應(yīng),進一步地,將響應(yīng)結(jié)果返回至XSS檢測工具。
S207,根據(jù)虛擬解析器對頁面源代碼進行解析以得到第一解析頁面。
具體地,XSS檢測工具采用類瀏覽器的解析技術(shù)對Web服務(wù)器所返回的響應(yīng)結(jié)果進行虛擬解析,從而可以得到第一解析界面。其中,第一解析界面可參考圖4。
S208,根據(jù)目標(biāo)輸出點的XPath對第一解析頁面進行特征值檢測以得到XSS漏洞。
具體地,XSS檢測工具根據(jù)目標(biāo)輸出點的XPath對第一解析頁面進行特征值檢測以得到XSS漏洞。本步驟即發(fā)明原理部分所提及的響應(yīng)檢測階段。
請參考圖5及圖6,分別為未做XSS編碼保護的、經(jīng)虛擬解析的界面以及已做XSS編碼保護的、經(jīng)虛擬解析的界面。如果輸出點沒有做XSS輸出編碼保護,則特征值將成功注入,如圖5所示。如果輸出點做了輸出編碼保護,則響應(yīng)經(jīng)過虛擬解析后得到頁面的如圖6所示,其中第9行中被標(biāo)注的部分為一個完整的字符串。通過比較圖5和圖6可以發(fā)現(xiàn),如果僅僅對虛擬解析后的響應(yīng)做特征值的文本搜索,將不能區(qū)分該輸出點是否有做XSS輸出編碼。
雖然在虛擬解析后的頁面通過文本搜索特征值的方式不能確認輸出點是否做了輸出編碼,但html結(jié)構(gòu)中注入的特征值在做了輸出編碼和未做輸出編碼的情況下將是不同的節(jié)點。如果輸出點做了輸出編碼,特征值將出現(xiàn)在文本節(jié)點;如果輸出點未做輸出編碼,特征值將出現(xiàn)在標(biāo)簽節(jié)點。
本發(fā)明實施例將利用這一特性,在響應(yīng)檢測階段,使用先前探針定位到的XPath,即html/body/div[@id=’containerDiv’]/a,分別得到<a>標(biāo)簽的outerHTML和outerText。如果在outerHTML中檢測到了注入的div標(biāo)簽,則說明注入的特征值已經(jīng)成功注入并生成了div標(biāo)簽。如果在outerHTML中沒檢測到注入的div標(biāo)簽,而在outerText中檢測到了該段特征文本,則說明特征值沒有注入成功,即沒有發(fā)現(xiàn)XSS漏洞。
本發(fā)明實施例中基于虛擬解析的漏洞檢測方法,先對客戶端所發(fā)送的用戶請求插入探針,以獲取目標(biāo)注入?yún)?shù)、目標(biāo)輸出點、目標(biāo)輸出點的上下文信息及目標(biāo)輸出點的XPath,再根據(jù)目標(biāo)輸出點的上下文信息構(gòu)造目標(biāo)特征值,之后,針對目標(biāo)注入?yún)?shù),向Web服務(wù)器發(fā)送帶有所述目標(biāo)特征值的處理請求,接收Web服務(wù)器對處理請求的第一響應(yīng)結(jié)果,并根據(jù)虛擬解析器對頁面源代碼進行解析以得到第一解析頁面,最后根據(jù)目標(biāo)輸出點的XPath對第一解析頁面進行特征值檢測以得到XSS漏洞。即,本發(fā)明實施例提出了一種結(jié)合探針預(yù)檢測技術(shù)定位輸出點XPath,并在響應(yīng)檢測階段通過XPath精確確認XSS漏洞的機制,從而提高了漏洞檢測的準(zhǔn)確性。
請參考圖7,是本發(fā)明第一實施例的基于虛擬解析漏洞檢測裝置的結(jié)構(gòu)圖。如圖所示,該漏洞檢測裝置可以包括:
接收模塊10,用于接收客戶端所發(fā)送的用戶請求;
獲取模塊11,用于對用戶請求插入探針以獲取目標(biāo)注入?yún)?shù)、目標(biāo)輸出點、目標(biāo)輸出點的上下文信息及目標(biāo)輸出點的XPath;
構(gòu)造模塊12,用于根據(jù)目標(biāo)輸出點的上下文信息構(gòu)造目標(biāo)特征值;
發(fā)送模塊13,用于針對目標(biāo)注入?yún)?shù),向Web服務(wù)器發(fā)送帶有目標(biāo)特征值的檢測請求;
接收模塊10還用于接收Web服務(wù)器對檢測請求的第一響應(yīng)結(jié)果,第一響應(yīng)結(jié)果包括頁面源代碼;
解析模塊14,用于根據(jù)虛擬解析器對頁面源代碼進行解析以得到第一解析頁面;
檢測模塊15,用于根據(jù)目標(biāo)輸出點的XPath對第一解析頁面進行特征值檢測以得到XSS漏洞。
具體地,用戶請求中包括至少一個參數(shù),獲取模塊11具體用于:
對每一個參數(shù)構(gòu)造所述探針并發(fā)送帶有探針的第一請求至Web服務(wù)器,且探針具有唯一性;
接收Web服務(wù)器針對所述第一請求的第二響應(yīng)結(jié)果,并根據(jù)第二響應(yīng)結(jié)果獲取目標(biāo)注入?yún)?shù)、目標(biāo)輸出點、目標(biāo)輸出點的上下文信息及目標(biāo)輸出點的XPath。
可選地,第二響應(yīng)結(jié)果包括頁面源代碼,獲取模塊11具體用于:
檢測頁面源代碼中是否存在探針;
若存在,則確定探針?biāo)诘奈恢脼槟繕?biāo)輸出點,同時確定探針?biāo)鶎?yīng)的參數(shù)為目標(biāo)注入?yún)?shù),同時確定探針?biāo)鶎?yīng)的參數(shù)為目標(biāo)注入?yún)?shù),并獲取目標(biāo)輸出點的上下文信息及目標(biāo)輸出點的XPath。
可選地,第二響應(yīng)結(jié)果包括頁面源代碼,獲取模塊11具體用于:
根據(jù)虛擬解析器對頁面源代碼進行解析以得到第二解析界面;
檢測第二解析界面中是否存在探針;
若存在,則確定探針?biāo)诘奈恢脼槟繕?biāo)輸出點,同時確定探針?biāo)鶎?yīng)的參數(shù)為目標(biāo)注入?yún)?shù),同時確定探針?biāo)鶎?yīng)的參數(shù)為目標(biāo)注入?yún)?shù),并獲取目標(biāo)輸出點的上下文信息及目標(biāo)輸出點的XPath。
本發(fā)明實施例中基于虛擬解析的漏洞檢測裝置,先通過接收模塊10接收客戶端所發(fā)送的用戶請求,通過獲取模塊11插入探針以獲取目標(biāo)注入?yún)?shù)、目標(biāo)輸出點、目標(biāo)輸出點的上下文信息及目標(biāo)輸出點的XPath,再通過構(gòu)造模塊12根據(jù)目標(biāo)輸出點的上下文信息構(gòu)造目標(biāo)特征值,之后,針對目標(biāo)注入?yún)?shù),通過發(fā)送模塊13向Web服務(wù)器發(fā)送帶有目標(biāo)特征值的處理請求,接著,通過接收模塊10接收Web服務(wù)器對處理請求的第一響應(yīng)結(jié)果,并通過解析模塊14根據(jù)虛擬解析器對頁面源代碼進行解析以得到第一解析頁面,最后通過檢測模塊15根據(jù)目標(biāo)輸出點的XPath對第一解析頁面進行特征值檢測以得到XSS漏洞。即,本發(fā)明實施例提出了一種結(jié)合探針預(yù)檢測技術(shù)定位輸出點XPath,并在響應(yīng)檢測階段通過XPath精確確認XSS漏洞的機制,從而提高了漏洞檢測的準(zhǔn)確性。
需要說明的是,本發(fā)明實施例裝置的具體工作流程已在前述方法流程部分做了像是,故在此不再贅述。
以上結(jié)合最佳實施例對本發(fā)明進行了描述,但本發(fā)明并不局限于以上揭示的實施例,而應(yīng)當(dāng)涵蓋各種根據(jù)本發(fā)明的本質(zhì)進行的修改、等效組合。