本發(fā)明涉及Web應用測試技術(shù)領(lǐng)域,尤其涉及一種漏洞檢測方法及其裝置。
背景技術(shù):
近年來,隨著Web應用的廣泛使用,Web安全問題也日益突出。其中,XSS(Cross-site scripting,跨站腳本攻擊)漏洞已成為Web應用程序中最常見的漏洞之一,因此,對XSS漏洞的自動化檢測也成為了一項重要的技術(shù)。
目前,一般采用XSS檢測工具來檢測XSS漏洞,其具體過程如下:(1)XSS檢測工具捕獲客戶端(瀏覽器)所發(fā)送的http請求;(2)XSS檢測工具構(gòu)造帶有特征值的請求;(3)XSS檢測工具將帶有特征值的請求發(fā)送至Web服務器,Web服務器響應該請求;(4)XSS檢測工具在該請求響應的頁面源代碼中檢測特征值,若在某處檢測到特征值,則認為此處為一個XSS漏洞。
進一步地,隨著Web 2.0技術(shù)的發(fā)展,Web應用的頁面不僅具有展示靜態(tài)內(nèi)容的功能,還具有與用戶進行交互的功能。其中,這些交互功能通常通過在Web頁面嵌入大量JavaScript和CSS腳本來實現(xiàn)。具體地,通過執(zhí)行嵌入的JavaScript和CSS腳本,可以動態(tài)的增加、刪除和修改各種Web頁面元素。然而,上述漏洞檢測方法由于僅僅檢測了請求響應的源代碼,這部分動態(tài)生成的頁面元素由于頁面中的JavaScript和CSS腳本沒有執(zhí)行而無法被檢測,即無法檢測動態(tài)頁面生成元素的XSS漏洞。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是:提供一種漏洞檢測方法,以檢測出動態(tài)頁面生成元素的XSS漏洞。
為解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案如下:
提供一種漏洞檢測方法,包括:
接收Web服務器對處理請求的響應結(jié)果,該處理請求包括特征值,該響應結(jié)果包括頁面源代碼;
根據(jù)虛擬解析器對頁面源代碼進行解析以得到解析結(jié)果,該解析結(jié)果包括html頁面;
對html頁面進行特征值檢測以得到XSS漏洞,該XSS漏洞對應于動態(tài)頁面生成元素;其中,動態(tài)頁面指的是執(zhí)行JavaScript腳本和CSS腳本后的頁面。
具體地,該XSS漏洞包括JavaScript腳本和CSS腳本執(zhí)行后生成的漏洞。
可選地,接收Web服務器對處理請求的響應結(jié)果之后,該方法還包括:
對頁面源代碼進行特征值檢測以得到XSS漏洞,該XSS漏洞對應于靜態(tài)頁面生成元素。其中,靜態(tài)頁面指的是未執(zhí)行JavaScript腳本和CSS腳本的頁面。
較佳地,接收Web服務器對處理請求的響應結(jié)果之前,該方法還包括:
接收客戶端所發(fā)送的用戶請求,并將用戶請求發(fā)送至Web服務器;
接收Web服務器對用戶請求的響應結(jié)果;
構(gòu)造處理請求,并將處理請求發(fā)送至Web服務器。
具體地,該用戶請求包括http請求。
相應地,本發(fā)明還提供了一種漏洞檢測裝置,包括:
接收模塊,用于接收Web服務器對處理請求的響應結(jié)果,該處理請求包括特征值,該響應結(jié)果包括頁面源代碼;
解析模塊,用于根據(jù)虛擬解析器對頁面源代碼進行解析以得到解析結(jié)果,該解析結(jié)果包括html頁面;以及
檢測模塊,用于對html頁面進行特征值檢測以得到XSS漏洞,該XSS漏洞對應于動態(tài)頁面生成元素。其中,動態(tài)頁面指的是執(zhí)行JavaScript腳本和CSS腳本后的頁面。
具體地,該XSS漏洞包括JavaScript腳本和CSS腳本執(zhí)行后生成的漏洞。
可選地,接收Web服務器對處理請求的響應結(jié)果之后,該檢測模塊還用于:
對頁面源代碼進行特征值檢測以得到XSS漏洞,該XSS漏洞對應于靜態(tài)頁面生成元素。其中,靜態(tài)頁面指的是未執(zhí)行JavaScript腳本和CSS腳本的頁面。
較佳地,接收Web服務器對處理請求的響應結(jié)果之前,該接收模塊還用于:
接收客戶端所發(fā)送的用戶請求,并將用戶請求發(fā)送至Web服務器;
接收Web服務器對用戶請求的響應結(jié)果;
該漏洞檢測裝置還包括構(gòu)造模塊,用于構(gòu)造處理請求并將處理請求發(fā)送至Web服務器。
具體地,該用戶請求包括http請求。
與現(xiàn)有技術(shù)相比,本發(fā)明中的漏洞檢測方法及其裝置,先接收Web服務器對包括特征值的處理請求的響應結(jié)果,該響應結(jié)果包括頁面源代碼,再根據(jù)虛擬解析器對頁面源代碼進行解析以得到包括html頁面的解析結(jié)果,最后對html頁面進行特征值檢測以得到XSS漏洞,該XSS漏洞對應于動態(tài)頁面生成元素。即,本發(fā)明引入了類瀏覽器虛擬解析技術(shù)對Web服務器響應的頁面源代碼進行解析,從而得到了最終生成的HTML結(jié)構(gòu)(即html頁面),進一步地對該頁面進行特征值檢測便實現(xiàn)了對動態(tài)頁面生成元素的XSS漏洞檢測的目的。
通過以下的描述并結(jié)合附圖,本發(fā)明將變得更加清晰,這些附圖用于解釋本發(fā)明的實施例。
附圖說明
圖1為本發(fā)明漏洞檢測方法第一實施例的流程圖。
圖2為本發(fā)明漏洞檢測方法第二實施例的流程圖。
圖3為jsp示例代碼界面圖。
圖4為Web請求響應源代碼的界面圖。
圖5為Web請求響應源代碼經(jīng)虛擬解析后的界面圖。
圖6為發(fā)明漏洞檢測裝置第一實施例的結(jié)構(gòu)圖。
圖7為發(fā)明漏洞檢測裝置第一實施例的結(jié)構(gòu)圖。
具體實施方式
現(xiàn)在參考附圖描述本發(fā)明的實施例,附圖中類似的元件標號代表類似的元件。
請參考圖1,是本發(fā)明第一實施例的漏洞檢測方法流程圖。如圖所示,該方法可以包括如下步驟:
S101,接收Web服務器對處理請求的響應結(jié)果。
具體地,XSS檢測工具(即下文中所描述的漏洞檢測裝置)先向Web服務器發(fā)送處理請求,其中,該處理請求是由XSS檢測工具所構(gòu)造的、帶有特征值的請求。Web服務器接收該處理請求,并對其進行響應以得到響應結(jié)果,進一步地將該響應結(jié)果返回至XSS檢測工具。其中,該響應結(jié)果包括頁面源代碼。
需要說明的是,特征值一般都是一些包含特殊字符的字符串,用于破壞當前輸出點的上下文html或者JavaScript結(jié)構(gòu),從而達到成功注入的目的。以下是兩個特征值的示例:
<div name='xss10001001' id="101482402907">I am tester</div>
<script name='xss10001001' id="101483090516">alert(1)</script>
S102,根據(jù)虛擬解析器對頁面源代碼進行解析以得到解析結(jié)果,該解析結(jié)果包括html頁面。
具體地,XSS檢測工具利用虛擬解析技術(shù),對頁面源代碼進行解析,從而可以獲得最終生成的HTML結(jié)構(gòu)(即html頁面)。
S103,對html頁面進行特征值檢測以得到XSS漏洞,該XSS漏洞對應于動態(tài)頁面生成元素。其中,動態(tài)頁面指的是執(zhí)行JavaScript腳本和CSS腳本后的頁面。
具體地,XSS檢測工具對解析所得到的html頁面進行特征值檢測,如果在經(jīng)過解析的請求響應(即html頁面)中檢測到了特征值,則可以判斷所檢測到的特征值所在的位置即為一個XSS漏洞。且,此處的XSS漏洞對應于動態(tài)頁面生成元素,該XSS漏洞主要指的是JavaScript腳本和CSS腳本執(zhí)行后生成的漏洞。
從以上描述可以看出,本發(fā)明實施例中,先接收Web服務器對包括特征值的處理請求的響應結(jié)果,該響應結(jié)果包括頁面源代碼,再根據(jù)虛擬解析器對頁面源代碼進行解析以得到包括html頁面的解析結(jié)果,最后對html頁面進行特征值檢測以得到XSS漏洞,該XSS漏洞對應于動態(tài)頁面生成元素。即,本發(fā)明實施例引入了類瀏覽器虛擬解析技術(shù)對Web服務器響應的頁面源代碼進行解析,從而得到了最終生成的HTML結(jié)構(gòu)(即html頁面),進一步地對該頁面進行特征值檢測便實現(xiàn)了對動態(tài)頁面生成元素的XSS漏洞檢測的目的。
請參考圖2,是本發(fā)明第二實施例的漏洞檢測方法流程圖。如圖所示,該方法可以包括如下步驟:
S201,接收客戶端所發(fā)送的用戶請求,并將用戶請求發(fā)送至Web服務器。
具體地,客戶端(瀏覽器)先將XSS檢測工具設置為代理,以用于后續(xù)代理客戶端向Web服務器發(fā)送請求。之后,客戶端向XSS檢測工具發(fā)送用戶請求(http請求),XSS檢測工具接收該http請求、保存該請求的信息。進一步地,XSS檢測工具將http請求發(fā)送至Web服務器。
S202,接收Web服務器對用戶請求的響應結(jié)果。
具體地,Web服務器接收http請求,對其做出響應,并將響應結(jié)果返回至XSS檢測工具。XSS檢測工具接收來自Web服務器對http請求的響應結(jié)果,并將其返回至客戶端。
S203,構(gòu)造處理請求,并將處理請求發(fā)送至Web服務器。
具體地,XSS檢測工具根據(jù)http請求構(gòu)造帶有特征值的處理請求,并將其發(fā)送至Web服務器。需要說明的是,例如某個http請求包含10個參數(shù),為了達到成功注入的目的,每個參數(shù)可能都需要注入10種不同的特征值,則XSS檢測工具會一共構(gòu)造10*10=100個處理請求。
S204,接收Web服務器對處理請求的響應結(jié)果。
具體地,Web服務器接收XSS檢測工具所發(fā)送的處理請求,并對其進行響應以得到響應結(jié)果,進一步地將該響應結(jié)果返回至XSS檢測工具。其中,該響應結(jié)果包括頁面源代碼。
需要說明的是,特征值一般都是一些包含特殊字符的字符串,用于破壞當前輸出點的上下文html或者JavaScript結(jié)構(gòu),從而達到成功注入的目的。以下是兩個特征值的示例:
<div name='xss10001001' id="101482402907">I am tester</div>
<script name='xss10001001' id="101483090516">alert(1)</script>
S205,對頁面源代碼進行特征值檢測以得到XSS漏洞,該XSS漏洞對應于靜態(tài)頁面生成元素。其中,靜態(tài)頁面指的是未執(zhí)行JavaScript腳本和CSS腳本的頁面。
具體地,XSS檢測工具對頁面源代碼進行特征值檢測,如果檢測到了特征值,則可以判斷所檢測到的特征值所在的位置即為一個XSS漏洞。且,此處的XSS漏洞對應于靜態(tài)頁面生成元素。需要說明的是,步驟S201至S205描述的即是現(xiàn)有的XSS漏洞檢測方法。也就是說,到步驟S205為止,僅能檢測靜態(tài)頁面生成元素所對應的XSS漏洞,而動態(tài)頁面元素所對應的XSS漏洞由于未被執(zhí)行,是無法被檢測的。因此,需要進行如下步驟以檢測出動態(tài)頁面元素所對應的XSS漏洞。
S206,根據(jù)虛擬解析器對頁面源代碼進行解析以得到解析結(jié)果,該解析結(jié)果包括html頁面。
虛擬解析技術(shù)可以模擬瀏覽器運行,相當于無界面的瀏覽器,可以對http請求響應的源代碼做JavaScript、html和css的解析。由于其運行不需要界面,運行速度非常迅速。目前業(yè)界已經(jīng)有較為成熟的開源軟件庫,大多運用在Web應用的自動化測試領(lǐng)域。
具體地,該步驟中,XSS檢測工具利用虛擬解析技術(shù),對http請求響應的源代碼進行解析,可以獲得Web請求響應最終生成的HTML結(jié)構(gòu),從而可以解決傳統(tǒng)XSS檢測工具不能夠發(fā)現(xiàn)這種通過腳本動態(tài)生成的元素的XSS漏洞的問題。
進一步地,以下以一個簡單的示例說明虛擬解析技術(shù)的作用。請參考圖3,其是一段簡單的jsp示例代碼,第14行的代碼將會把http請求參數(shù)name的值放到<a></a>中,再將完整的<a>動態(tài)的添加到頁面的Div內(nèi)。
如果請求參數(shù)的name值為‘peter’,則現(xiàn)有XSS檢測工具分析的響應源代碼將是如圖4中第14行所顯示的代碼。但根據(jù)虛擬解析器對頁面源代碼進行解析后,XSS檢測工具中可得到如圖5所示的界面。從圖中可以看出,頁面中的JavaScript代碼已經(jīng)執(zhí)行,在頁面第9行,完整的<a>標簽的內(nèi)容已經(jīng)動態(tài)的插入到了html頁面中。
S207,對html頁面進行特征值檢測以得到XSS漏洞,該XSS漏洞對應于動態(tài)頁面生成元素。其中,動態(tài)頁面指的是執(zhí)行JavaScript腳本和CSS腳本后的頁面。
由于代碼9行并沒有對輸出做編碼保護,這里將是一個XSS漏洞。如果使用傳統(tǒng)的XSS漏洞檢測方法,由于不能得到解析之后的html結(jié)構(gòu),將不能發(fā)現(xiàn)這個XSS漏洞。而本發(fā)明實施例的XSS漏洞檢測方法采用了虛擬解析技術(shù),如圖5所示,得到了完整的最終生成的html結(jié)構(gòu),因此可以順利的將此處的XSS漏洞檢測出來。
具體地,XSS檢測工具對解析所得到的html頁面進行特征值檢測,如果在經(jīng)過解析的請求響應(即html頁面)中檢測到了特征值,則可以判斷所檢測到的特征值所在的位置即為一個XSS漏洞。且,此處的XSS漏洞對應于動態(tài)頁面生成元素,該XSS漏洞主要指的是JavaScript腳本和CSS腳本執(zhí)行后生成的漏洞。
從以上描述可以看出,本發(fā)明實施例中,先接收客戶端所發(fā)送的用戶請求,并將用戶請求發(fā)送至Web服務器,再接收Web服務器對用戶請求的響應結(jié)果,之后構(gòu)造處理請求并將處理請求發(fā)送至Web服務器,接著接收Web服務器對處理請求的響應結(jié)果,該響應結(jié)果包括頁面源代碼,對頁面源代碼進行特征值檢測以得到對應于靜態(tài)頁面生成元素的XSS漏洞,同時根據(jù)虛擬解析器對頁面源代碼進行解析以得到包括html頁面的解析結(jié)果,最后對html頁面進行特征值檢測以得到XSS漏洞,該XSS漏洞對應于動態(tài)頁面生成元素。即,本發(fā)明實施例引入了類瀏覽器虛擬解析技術(shù)對Web服務器響應的頁面源代碼進行解析,從而得到了最終生成的HTML結(jié)構(gòu)(即html頁面),進一步地對該頁面進行特征值檢測便實現(xiàn)了對動態(tài)頁面生成元素的XSS漏洞檢測的目的。此外,本發(fā)明實施例中還對頁面源代碼進行了漏洞檢測,從而檢測出了對應于靜態(tài)頁面生成元素的XSS漏洞,進而更加完善了漏洞檢測方案,提高了漏洞檢測率。
請參考圖6,是本發(fā)明第一實施例的漏洞檢測裝置的結(jié)構(gòu)圖。如圖所示,該漏洞檢測裝置可以包括:
接收模塊10,用于接收Web服務器對處理請求的響應結(jié)果,該處理請求包括特征值,該響應結(jié)果包括頁面源代碼;
解析模塊11,用于根據(jù)虛擬解析器對頁面源代碼進行解析以得到解析結(jié)果,該解析結(jié)果包括html頁面;以及
檢測模塊12,用于對html頁面進行特征值檢測以得到XSS漏洞,該XSS漏洞對應于動態(tài)頁面生成元素。其中,動態(tài)頁面指的是執(zhí)行JavaScript腳本和CSS腳本后的頁面,該XSS漏洞主要指的是JavaScript腳本和CSS腳本執(zhí)行后生成的漏洞。
從以上描述可以看出,本實施例的漏洞檢測裝置,先通過接收模塊10接收Web服務器對包括特征值的處理請求的響應結(jié)果,該響應結(jié)果包括頁面源代碼,再通過解析模塊11根據(jù)虛擬解析器對頁面源代碼進行解析以得到包括html頁面的解析結(jié)果,最后通過檢測模塊12對html頁面進行特征值檢測以得到XSS漏洞,該XSS漏洞對應于動態(tài)頁面生成元素。即,本發(fā)明實施例引入了類瀏覽器虛擬解析技術(shù)對Web服務器響應的頁面源代碼進行解析,從而得到了最終生成的HTML結(jié)構(gòu)(即html頁面),進一步地對該頁面進行特征值檢測便實現(xiàn)了對動態(tài)頁面生成元素的XSS漏洞檢測的目的。
請參考圖7,是本發(fā)明第二實施例的漏洞檢測裝置的結(jié)構(gòu)圖。如圖所示,該漏洞檢測裝置可以包括:接收模塊20、解析模塊21、檢測模塊22及構(gòu)造模塊23。
其中,接收模塊20、解析模塊21、檢測模塊22除了具備第一實施例中對應模塊所具有的功能外,接收模塊20還用于:
接收客戶端所發(fā)送的用戶請求,并將用戶請求發(fā)送至Web服務器,該用戶請求包括http請求;
接收Web服務器對用戶請求的響應結(jié)果。
該檢測模塊22還用于:
對頁面源代碼進行特征值檢測以得到XSS漏洞,該XSS漏洞對應于靜態(tài)頁面生成元素。其中,靜態(tài)頁面指的是未執(zhí)行JavaScript腳本和CSS腳本的頁面。
該構(gòu)造模塊23用于構(gòu)造處理請求并將處理請求發(fā)送至Web服務器。
從以上描述可以看出,本發(fā)明實施例中,先通過接收模塊20接收客戶端所發(fā)送的用戶請求,并將用戶請求發(fā)送至Web服務器,再接收Web服務器對用戶請求的響應結(jié)果,之后通過構(gòu)造模塊23構(gòu)造處理請求并將處理請求發(fā)送至Web服務器,接著接收模塊20接收Web服務器對處理請求的響應結(jié)果,該響應結(jié)果包括頁面源代碼,通過檢測模塊22對頁面源代碼進行特征值檢測以得到對應于靜態(tài)頁面生成元素的XSS漏洞,同時通過解析模塊21根據(jù)虛擬解析器對頁面源代碼進行解析以得到包括html頁面的解析結(jié)果,最后通過檢測模塊22對html頁面進行特征值檢測以得到XSS漏洞,該XSS漏洞對應于動態(tài)頁面生成元素。即,本發(fā)明實施例引入了類瀏覽器虛擬解析技術(shù)對Web服務器響應的頁面源代碼進行解析,從而得到了最終生成的HTML結(jié)構(gòu)(即html頁面),進一步地對該頁面進行特征值檢測便實現(xiàn)了對動態(tài)頁面生成元素的XSS漏洞檢測的目的。此外,本發(fā)明實施例中還對頁面源代碼進行了漏洞檢測,從而檢測出了對應于靜態(tài)頁面生成元素的XSS漏洞,進而更加完善了漏洞檢測方案,提高了漏洞檢測率。
以上結(jié)合最佳實施例對本發(fā)明進行了描述,但本發(fā)明并不局限于以上揭示的實施例,而應當涵蓋各種根據(jù)本發(fā)明的本質(zhì)進行的修改、等效組合。