本發(fā)明涉及互聯(lián)網(wǎng)安全領(lǐng)域,具體而言,涉及一種檢測漏洞的方法、裝置和系統(tǒng)。
背景技術(shù):
由于web2.0技術(shù)的不斷發(fā)展,加上html5和ajax技術(shù)在web中應(yīng)用越來越廣泛,為了不影響用戶體驗,目前越來越多網(wǎng)站的代碼邏輯放在前端去實現(xiàn),通過dom的方式來動態(tài)展現(xiàn)頁面布局和最終效果已經(jīng)成為了流行的一種編程方法。
但隨之而來的也會帶來安全問題,dom-basedxss就是在這樣的一個背景下不斷產(chǎn)生的,dom-basedxss漏洞一直以來在企業(yè)安全中都是比較頭疼的問題,由于dom-basedxss漏洞形成的原因是前端javascript在操作dom樹的時候,誤把用戶的輸入沒有經(jīng)過任何輸出到了渲染后的頁面中,導(dǎo)致了script被執(zhí)行的風(fēng)險。又因為本身dom-basedxss是經(jīng)過dom操作動態(tài)生成最終的html源代碼的,所以在直接請求返回的源代碼中是很難去發(fā)現(xiàn)和檢測到這類問題的存在。因此傳統(tǒng)的黑盒檢測domxss的方法已經(jīng)逐漸不再適用。
目前業(yè)內(nèi)常見的dom-basedxss的檢測方法有以下兩種:
第一種檢測的方法是通過白盒審計,通過靜態(tài)分析和檢測javascript中是否存在innerhtml、document.write等類似輸出的特征,通過某些安全策略和規(guī)則去掃描代碼中可能存在dom-basedxss的地方。但這種檢測方法漏報率和誤報率會非常大,隨著目前前端技術(shù)的飛速發(fā)展,jquery的不斷盛行,很多前端代碼都是經(jīng)過了層層封裝,邏輯非常復(fù)雜,現(xiàn)有的javascript白盒分析技術(shù)很難去從代碼層面檢測出dom-basedxss漏洞。
另一種檢測的方法是通過類似qtwebkit的js引擎去實時分析dom樹的結(jié)構(gòu),假如一個頁面存在xss漏洞,則插入一個惡意標(biāo)簽<evallabel>,然后通過qtwebkit中dom樹交互遍歷的api,能夠檢測出dom中是否解析成功了<evallabel>這個標(biāo)簽,假如存在這個標(biāo)簽,則表示存在domxss漏洞。雖然,基于qtwebkit的js引擎來遍歷dom樹結(jié)構(gòu)的檢測方法雖然很有效果,但是假如dom樹結(jié)構(gòu)非常復(fù)雜的話,逐個遍歷dom的每一個節(jié)點將會對性能上造成很大的影響,例如一個頁面中最終動態(tài)生成了 1000個dom節(jié)點,逐個去遍歷每一個dom節(jié)點看是否存在惡意的節(jié)點,這樣花的時間會非常長。
針對解決現(xiàn)有技術(shù)中dom-basedxss漏洞的檢測方法檢測時間長,檢測精度低的問題,目前尚未提出有效的解決方案。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種檢測漏洞的方法、裝置和系統(tǒng),以至少解決解決現(xiàn)有技術(shù)中dom-basedxss漏洞的檢測方法檢測時間長,檢測精度低的技術(shù)問題。
根據(jù)本發(fā)明實施例的一個方面,提供了一種檢測漏洞的方法,包括:向測試對象發(fā)起訪問請求,其中,訪問請求至少包括:檢測因子;獲取根據(jù)訪問請求返回的顯示結(jié)果;根據(jù)顯示結(jié)果,確定測試對象的訪問地址是否存在漏洞。
根據(jù)本發(fā)明實施例的另一方面,還提供了一種檢測漏洞的裝置,包括:訪問模塊,用于向測試對象發(fā)起訪問請求,其中,訪問請求至少包括:檢測因子;獲取模塊,用于獲取根據(jù)訪問請求返回的顯示結(jié)果;第一確定模塊,用于根據(jù)顯示結(jié)果,確定測試對象的訪問地址是否存在漏洞。
根據(jù)本發(fā)明實施例的另一方面,還提供了一種檢測漏洞的系統(tǒng),包括:前端客戶端,用于向測試對象發(fā)起訪問請求,用于獲取根據(jù)訪問請求返回的顯示結(jié)果,其中,訪問請求至少包括:測試對象的訪問地址和檢測因子;圖像識別客戶端,與前端客戶端連接,用于根據(jù)顯示結(jié)果,確定測試對象的訪問地址是否存在漏洞。
在本發(fā)明實施例中,向測試對象發(fā)起包括檢測因子的訪問請求,獲取根據(jù)該訪問請求返回的顯示結(jié)果,并根據(jù)該顯示結(jié)果,確定測試對象的訪問地址是否存在漏洞。本方案可以通過在訪問請求中增加檢測因子,并檢測訪問請求返回的顯示結(jié)果中是否包含成功解析檢測因子得到的內(nèi)容,實現(xiàn)確定待檢測的對象是否存在漏洞的目的。
容易注意到,由于訪問請求中包含有檢測因子,并在獲取到顯示結(jié)果之后,檢測該顯示結(jié)果中是否包含成功解析檢測因子得到的內(nèi)容,從而可以確定測試對象的訪問地址是否存在漏洞,不需要分析源代碼或者逐個遍歷dom樹中的每個dom節(jié)點,因此,通過本申請實施例所提供的方案,可以實現(xiàn)快速精確地檢測dom-basedxss漏洞的效果。
由此,本發(fā)明提供的方案解決了解決現(xiàn)有技術(shù)中dom-basedxss漏洞的檢測方法檢測時間長,檢測精度低的技術(shù)問題。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
圖1是根據(jù)本申請實施例的一種檢測漏洞的方法的計算機終端的硬件結(jié)構(gòu)框圖;
圖2是根據(jù)本申請實施例一的一種檢測漏洞的方法的流程圖;
圖3是根據(jù)本申請實施例一的一種可選的檢測漏洞的方法的流程圖;
圖4是根據(jù)本申請實施例一的一種可選的檢測漏洞的方法的交互圖;
圖5是根據(jù)本申請實施例二的一種檢測漏洞的裝置的示意圖;
圖6是根據(jù)本申請實施例二的一種可選的檢測漏洞的裝置的示意圖;
圖7是根據(jù)本申請實施例二的一種可選的檢測漏洞的裝置的示意圖;
圖8是根據(jù)本申請實施例二的一種可選的檢測漏洞的裝置的示意圖;
圖9是根據(jù)本申請實施例二的一種可選的檢測漏洞的裝置的示意圖;
圖10是根據(jù)本申請實施例三的一種檢測漏洞的系統(tǒng)的示意圖;
圖11是根據(jù)本申請實施例三的一種可選的檢測漏洞的系統(tǒng)的示意圖;
圖12是根據(jù)本申請實施例三的一種可選的檢測漏洞的系統(tǒng)的示意圖;以及
圖13是根據(jù)本申請實施例的一種計算機終端的結(jié)構(gòu)框圖。
具體實施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當(dāng)屬于本發(fā)明保護的范圍。
需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的 任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
首先,在對本申請實施例進行描述的過程中出現(xiàn)的部分名詞或術(shù)語適用于如下解釋:
dom:documentobjectmodel,文檔對象模型,dom可以以一種獨立于平臺和語言的方式訪問和修改一個文檔的內(nèi)容和結(jié)構(gòu)。換句話說,只是表示和處理一個html或者xml文檔的常用方法。是一種w3c的標(biāo)準(zhǔn)。
xss:腳本跨站攻擊,是一種web中常見的漏洞,當(dāng)用戶瀏覽網(wǎng)頁的時候,嵌入其中web里面的script代碼會被執(zhí)行,從而達(dá)到惡意攻擊用戶的特殊目的。
svg標(biāo)簽:是html5中新增的一個標(biāo)簽,是一種用來繪制矢量圖的標(biāo)簽。
casperjs:是一個基于phantomjs編寫的,開源的導(dǎo)航腳本處理和測試工具。
實施例1
根據(jù)本申請實施例,還提供了一種檢測漏洞的方法實施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機可執(zhí)行指令的計算機系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
本申請實施例一所提供的方法實施例可以在移動終端、計算機終端或者類似的運算裝置中執(zhí)行。以運行在計算機終端上為例,圖1是根據(jù)本申請實施例的一種檢測漏洞的方法的計算機終端的硬件結(jié)構(gòu)框圖。如圖1所示,計算機終端10可以包括一個或多個(圖中僅示出一個)處理器102(處理器102可以包括但不限于微處理器mcu或可編程邏輯器件fpga等的處理裝置)、用于存儲數(shù)據(jù)的存儲器104、以及用于通信功能的傳輸模塊106。本領(lǐng)域普通技術(shù)人員可以理解,圖1所示的結(jié)構(gòu)僅為示意,其并不對上述電子裝置的結(jié)構(gòu)造成限定。例如,計算機終端10還可包括比圖1中所示更多或者更少的組件,或者具有與圖1所示不同的配置。
存儲器104可用于存儲應(yīng)用軟件的軟件程序以及模塊,如本申請實施例中的檢測漏洞的方法對應(yīng)的程序指令/模塊,處理器102通過運行存儲在存儲器104內(nèi)的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理,即實現(xiàn)上述的檢測漏洞的方法。存儲器104可包括高速隨機存儲器,還可包括非易失性存儲器,如一個或者多個磁性存儲裝置、閃存、或者其他非易失性固態(tài)存儲器。在一些實例中,存儲器104可進一 步包括相對于處理器102遠(yuǎn)程設(shè)置的存儲器,這些遠(yuǎn)程存儲器可以通過網(wǎng)絡(luò)連接至計算機終端10。上述網(wǎng)絡(luò)的實例包括但不限于互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)、局域網(wǎng)、移動通信網(wǎng)及其組合。
傳輸裝置106用于經(jīng)由一個網(wǎng)絡(luò)接收或者發(fā)送數(shù)據(jù)。上述的網(wǎng)絡(luò)具體實例可包括計算機終端10的通信供應(yīng)商提供的無線網(wǎng)絡(luò)。在一個實例中,傳輸裝置106包括一個網(wǎng)絡(luò)適配器(networkinterfacecontroller,nic),其可通過基站與其他網(wǎng)絡(luò)設(shè)備相連從而可與互聯(lián)網(wǎng)進行通訊。在一個實例中,傳輸裝置106可以為射頻(radiofrequency,rf)模塊,其用于通過無線方式與互聯(lián)網(wǎng)進行通訊。
在上述運行環(huán)境下,本申請?zhí)峁┝巳鐖D2所示的檢測漏洞的方法。圖2是根據(jù)本申請實施例一的一種檢測漏洞的方法的流程圖,如圖2所示,該方法可以包括如下步驟:
步驟s22,向測試對象發(fā)起訪問請求,其中,訪問請求至少包括:檢測因子。
根據(jù)本申請上述實施例,測試對象可以為待訪問的網(wǎng)頁頁面,訪問地址可以是待訪問的網(wǎng)頁頁面的url地址,檢測因子可以為繪圖標(biāo)簽,其中,繪圖標(biāo)簽可以是svg標(biāo)簽,繪圖標(biāo)簽用于在網(wǎng)頁頁面中繪制至少一個檢測圖形。例如,可以畫一個圓形,顏色為藍(lán)色,svg標(biāo)簽的html代碼如下:<svg><circlecx="60"cy="60"r="40"style="fill:skyblue"></svg>。
圖3是根據(jù)本申請實施例一的一種可選的檢測漏洞的方法的流程圖,如圖3所示,在一種可選的方案中,可以把檢測因子插入到待訪問的網(wǎng)頁頁面的url地址中,利用casperjs把帶有檢測因子的url地址進行網(wǎng)絡(luò)請求,從而可以向待訪問的網(wǎng)頁頁面發(fā)起訪問請求。
步驟s24,獲取根據(jù)訪問請求返回的顯示結(jié)果。
具體的,上述步驟中的顯示結(jié)果可以是訪問請求返回的網(wǎng)頁頁面包含的內(nèi)容,例如,可以是網(wǎng)頁頁面中的控件,圖片,文檔,或者檢測圖形。
如圖3所示,在一種可選的方案中,在進行網(wǎng)絡(luò)請求之后,服務(wù)器根據(jù)訪問請求返回相應(yīng)的網(wǎng)頁頁面,可以利用casperjs對返回的網(wǎng)頁頁面進行截圖操作,即casper.captrue(),得到頁面圖片,從而可以獲取到網(wǎng)頁頁面中包含的內(nèi)容,即根據(jù)訪問請求返回的顯示結(jié)果。
步驟s26,根據(jù)顯示結(jié)果,確定測試對象的訪問地址是否存在漏洞。
根據(jù)本申請上述實施例,漏洞可以為xss漏洞,包括dom-basedxss漏洞。如 果顯示結(jié)果中包含了成功解析檢測因子而得到的內(nèi)容,確定測試對象的訪問地址存在漏洞。
如圖3所示,在一種可選的方案中,在得到根據(jù)訪問請求返回的頁面圖片之后,可以采用圖像識別技術(shù)對頁面圖片進行圖像識別,確定頁面圖片中是否包含有檢測因子設(shè)定的檢測圖形,如果確定頁面圖片中包含有檢測因子設(shè)定的檢測圖形,則確定顯示結(jié)果中包含成功解析檢測因子而得到的內(nèi)容,從而確定待訪問的網(wǎng)頁頁面的url地址存在xss漏洞。
例如,以檢測因子為svg標(biāo)簽為例,對本申請上述實施例進行說明。svg標(biāo)簽設(shè)定的圖形可以為藍(lán)色的圓形,相應(yīng)的svg標(biāo)簽可以是<svg><circlecx="60"cy="60"r="40"style="fill:skyblue"></svg>,可以將svg標(biāo)簽插入到待訪問的網(wǎng)頁頁面的url地址中,利用casperjs把帶有上述svg標(biāo)簽的url進行網(wǎng)絡(luò)請求,并對返回的網(wǎng)頁頁面進行截圖操作,得到頁面圖片,對該頁面圖片進行圖像識別,識別該頁面圖片中是否包含有設(shè)定的藍(lán)色的圓形,如果識別出該頁面圖片中包含有設(shè)定的藍(lán)色的圓形,則說明svg標(biāo)簽成功在網(wǎng)頁頁面上解析,證明待訪問的網(wǎng)頁頁面的url地址存在dom-basedxss漏洞。
由上可知,本申請上述實施例一公開的方案中,向測試對象發(fā)起包括檢測因子的訪問請求,獲取根據(jù)該訪問請求返回的顯示結(jié)果,并根據(jù)該顯示結(jié)果進行,確定測試對象的訪問地址是否存在漏洞。本方案可以通過在訪問請求中增加檢測因子,并檢測訪問請求返回的顯示結(jié)果中是否包含成功解析檢測因子得到的內(nèi)容,實現(xiàn)確定待檢測的對象是否存在漏洞的目的。
容易注意到,由于訪問請求中包含有檢測因子,并在獲取到顯示結(jié)果之后,檢測該顯示結(jié)果中是否包含成功解析檢測因子得到的內(nèi)容,從而可以確定測試對象的訪問地址是否存在漏洞,不需要分析源代碼或者逐個遍歷dom樹中的每個dom節(jié)點,因此,通過本申請實施例所提供的方案,可以實現(xiàn)快速精確地檢測dom-basedxss漏洞的效果。
由此,本申請?zhí)峁┑纳鲜鰧嵤├坏姆桨附鉀Q了解決現(xiàn)有技術(shù)中dom-basedxss漏洞的檢測方法檢測時間長,檢測精度低的技術(shù)問題。
根據(jù)本申請上述實施例,訪問請求還包括:測試對象的訪問地址,其中,在步驟s22,向測試對象發(fā)起訪問請求之前,上述方法還可以包括如下步驟:
步驟s202,解析測試對象的訪問地址,得到訪問地址的至少一個參數(shù)。
在一種可選的方案中,可以將待訪問的網(wǎng)頁頁面的url地址進行解析,把url地 址中的所有請求的參數(shù)解析出來,得到訪問地址的至少一個參數(shù),例如,得到的參數(shù)可以為關(guān)鍵字keywords。
步驟s204,拼接檢測因子至訪問地址的任意一個或多個參數(shù)中,得到攜帶有檢測因子的訪問地址。
在一種可選的方案中,逐個將得到的至少一個參數(shù)中拼接一個檢測因子,拼接后生成多個不同參數(shù)帶有該檢測因子的url地址。
例如,仍以檢測因子為svg標(biāo)簽為例,對本申請上述實施例進行說明。待訪問的網(wǎng)頁頁面的url地址可以是http://www.applocation.com/shop,對該url地址進行解析,得到的參數(shù)為關(guān)鍵字keywords,將svg標(biāo)簽<svg><circlecx="60"cy="60"r="40"style="fill:skyblue"></svg>拼接到關(guān)鍵字參數(shù)中,最終生成的待訪問的網(wǎng)頁頁面的url地址為:http://www.application.com/shop?keywords=<svg><circlecx="60"cy="60"r="40"style="fill:skyblue"></svg>。
通過上述步驟s202至步驟s204所提供的方案,可以通過解析訪問地址得到至少一個參數(shù),并將檢測因子拼接到任意一個或多個參數(shù)中,得到攜帶有檢測因子的訪問地址,從而可以實現(xiàn)向測試對象發(fā)起訪問請求的目的。
根據(jù)本申請上述實施例,步驟s24,獲取根據(jù)訪問請求返回的顯示結(jié)果,可以包括如下步驟:
步驟s242,在前端客戶端觸發(fā)訪問請求的情況下,在前端客戶端生成訪問請求所對應(yīng)的響應(yīng)結(jié)果,其中,響應(yīng)結(jié)果至少包括:與訪問請求對應(yīng)的頁面資源數(shù)據(jù)。
具體的,上述前端客戶端可以是用于發(fā)起訪問請求的客戶端,頁面資源數(shù)據(jù)可以是訪問請求對應(yīng)的網(wǎng)頁頁面中包含的資源數(shù)據(jù),例如,視頻資源數(shù)據(jù),圖片資源數(shù)據(jù)。
步驟s244,根據(jù)響應(yīng)結(jié)果在前端客戶端中渲染得到網(wǎng)頁頁面,其中,網(wǎng)頁頁面中的所有顯示內(nèi)容為顯示結(jié)果。
在一種可選的方案中,前端客戶端可以利用casperjs把攜帶有檢測因子的訪問地址進行訪問請求,接收到服務(wù)器返回的訪問請求對應(yīng)的網(wǎng)頁頁面的頁面資源數(shù)據(jù),并生對應(yīng)的響應(yīng)結(jié)果。可以根據(jù)響應(yīng)結(jié)果中的頁面資源數(shù)據(jù)在前端客戶端中渲染得到訪問請求對應(yīng)的網(wǎng)頁頁面,并從網(wǎng)頁頁面中獲取顯示內(nèi)容得到訪問請求返回的顯示結(jié)果。
在另外一種可選方案中,由于頁面資源數(shù)據(jù)還可以包括解析檢測因子而得到的數(shù)據(jù),例如,仍以檢測因子為svg標(biāo)簽為例,對本申請上述實施例進行說明。測試人員可以通過前端客戶端使用攜帶有svg標(biāo)簽的url地址發(fā)起訪問請求,服務(wù)器在接收到 訪問請求之后,返回訪問請求對應(yīng)的頁面資源數(shù)據(jù),該頁面資源數(shù)據(jù)包括解析svg標(biāo)簽而得到的圖形數(shù)據(jù)(可以是用于進行驗證是否具有漏洞的檢測圖形),前端客戶端在接收到訪問請求對應(yīng)的頁面資源數(shù)據(jù)之后,根據(jù)頁面資源數(shù)據(jù)渲染得到網(wǎng)頁頁面,該網(wǎng)頁頁面中的顯示內(nèi)容包括了上述圖形數(shù)據(jù)。
此處需要說明的,由于前端客戶端觸發(fā)的訪問請求包含有檢測因子,前端客戶端在根據(jù)響應(yīng)結(jié)果渲染得到網(wǎng)頁頁面的過程中,網(wǎng)頁頁面的顯示內(nèi)容有可能會包含成功解析檢測因子得到的檢測圖形,因此,可以在獲取到網(wǎng)頁頁面中的所有顯示內(nèi)容之后,判斷其中是否包含有檢測圖形,如果確定網(wǎng)頁頁面中的所有顯示內(nèi)容中包含檢測圖形,則確定訪問地址存在漏洞。
根據(jù)本申請上述實施例,在步驟s244,根據(jù)響應(yīng)結(jié)果在前端客戶端中渲染得到網(wǎng)頁頁面之后,上述方法還可以包括如下步驟:
步驟s246,對網(wǎng)頁頁面進行截圖操作,得到頁面圖片。
步驟s248,保存頁面圖片和對應(yīng)的網(wǎng)頁頁面的訪問地址。
如圖3所示,在一種可選的方案中,可以使用casperjs對返回的網(wǎng)頁頁面進行截圖操作,得到頁面圖片,并將頁面圖片以及對應(yīng)的url地址保存在圖片存儲客戶端中。
例如,仍以檢測因子為svg標(biāo)簽為例,對本申請上述實施例進行說明。在攜帶有svg標(biāo)簽的url地址為:http://www.application.com/shop?keywords=<svg><circlecx="60"cy="60"r="40"style="fill:skyblue"></svg>的情況下,使用casperjs對返回的網(wǎng)頁頁面進行截圖操作,得到頁面圖片。
通過上述步驟s246至步驟s248提供的方案,可以使用攜帶有檢測因子的訪問地址進行網(wǎng)絡(luò)請求,在獲取到對應(yīng)的網(wǎng)頁頁面之后,對網(wǎng)頁頁面進行截屏處理,得到網(wǎng)頁圖片,并將頁面圖片和訪問地址進行保存,從而可以實現(xiàn)獲取訪問請求返回的顯示結(jié)果的目的,獲取過程簡單方便。
根據(jù)本申請上述實施例,在步驟s246,對網(wǎng)頁頁面進行截圖操作,得到頁面圖片之后,上述方法還可以包括如下步驟:
步驟s2462,判斷頁面圖片中是否顯示至少一個檢測圖形。
在一種可選的方案中,可以使用阿里巴巴自主研制的開放數(shù)據(jù)處理服務(wù)odps(opendataprocessingservice的簡寫)作為圖片識別處理,使用python中的pil庫和pillow庫進行圖像檢測,判斷頁面圖片中是否存在檢測因子繪制的檢測圖形,提升處理速度。
步驟s2464,如果頁面圖片中成功顯示至少一個檢測圖形,則確定繪圖標(biāo)簽在網(wǎng)頁頁面中解析成功。
步驟s2466,如果頁面圖片中未顯示至少一個檢測圖形,或頁面圖片中顯示繪圖標(biāo)簽對應(yīng)的檢測文本,則確定繪圖標(biāo)簽在網(wǎng)頁頁面中解析失敗。
如圖3所示,在一種可選的方案中,如果在頁面圖片中識別到檢測因子對應(yīng)的檢測圖形,則證明繪圖標(biāo)簽在網(wǎng)頁頁面中被成功解析;如果在頁面圖片中未識別到檢測因子對應(yīng)的檢測圖形,則證明繪圖標(biāo)簽在網(wǎng)頁頁面中解析失敗。根據(jù)本申請上述實施例,如果繪圖標(biāo)簽在網(wǎng)頁頁面中解析成功,則確定顯示結(jié)果中包含了成功解析檢測因子而得到的內(nèi)容;如果繪圖標(biāo)簽在網(wǎng)頁頁面中解析失敗,則顯示結(jié)果中未包含成功解析檢測因子而得到的內(nèi)容,確定測試對象的訪問地址不存在漏洞。
例如,仍以檢測因子為svg標(biāo)簽為例,對本申請上述實施例進行說明。在攜帶有svg標(biāo)簽的url地址為:http://www.application.com/shop?keywords=<svg><circlecx="60"cy="60"r="40"style="fill:skyblue"></svg>的情況下,獲取到返回的頁面并進行截圖操作,得到頁面圖片,可以經(jīng)過pythonudf對頁面圖片進行圖像分析,判斷頁面圖片中,在坐標(biāo)(60,60)的位置處是否有一個半徑為40的天藍(lán)色圓形,如果確定頁面圖片中在坐標(biāo)(60,60)的位置處有一個半徑為40的天藍(lán)色圓形,即確定頁面圖片中顯示svg標(biāo)簽繪制的檢測圖形,則確定svg標(biāo)簽在網(wǎng)頁頁面中解析成功,進一步確定顯示結(jié)果中包含了成功解析svg標(biāo)簽而得到的內(nèi)容,從而確定待訪問的網(wǎng)頁頁面的url地址存在dom-basedxss漏洞;如果確定頁面圖片中在坐標(biāo)(60,60)的位置處沒有一個半徑為40的天藍(lán)色圓形,即確定頁面圖片中沒有顯示svg標(biāo)簽繪制的檢測圖形,則確定svg標(biāo)簽在網(wǎng)頁頁面中解析失敗,進一步確定顯示結(jié)果中包含了成功解析svg標(biāo)簽而得到的內(nèi)容,從而確定待訪問的網(wǎng)頁頁面的url地址不存在dom-basedxss漏洞。
通過上述步驟s2462至步驟s2466所提供的方案,可以通過判斷頁面圖片中是否顯示有至少一個檢測圖形,確定繪圖標(biāo)簽在網(wǎng)頁頁面中是否解析成功,進一步確定顯示結(jié)果中是否包含了成功解析檢測因子而得到的內(nèi)容,從而確定測試對象的訪問地址是否存在漏洞,無需分析源碼或者遍歷dom樹,分析方法方便便捷,分析結(jié)果準(zhǔn)確度高。
下面結(jié)合圖3和圖4詳細(xì)介紹本申請的一種優(yōu)選實施例。
如圖4所示,以檢測因子為svg標(biāo)簽,xss漏洞為dom-basedxss漏洞為應(yīng)用場景,提供了一種可選的防御反射攻擊的方法,該方法可以包括如下步驟s41至步驟 s45:
步驟s41,前端客戶端101構(gòu)造帶有檢測因子的訪問地址,并向測試對象發(fā)起訪問請求。
可選的,前端客戶端可以解析測試對象的訪問地址,得到訪問地址的至少一個參數(shù),拼接檢測因子至訪問地址的任意一個或多個參數(shù)中,檢測因子可以為繪圖標(biāo)簽,繪圖標(biāo)簽用于在網(wǎng)頁頁面中繪制至少一個檢測圖形,得到攜帶有檢測因子的訪問地址,把帶有檢測因子的url地址進行網(wǎng)絡(luò)請求,從而可以向待訪問的網(wǎng)頁頁面發(fā)起訪問請求。
步驟s42,前端客戶端101對訪問請求對應(yīng)的網(wǎng)頁頁面進行截圖操作,得到頁面圖片。
可選的,生成訪問請求所對應(yīng)的響應(yīng)結(jié)果,響應(yīng)結(jié)果包括與訪問請求對應(yīng)的頁面資源數(shù)據(jù),根據(jù)響應(yīng)結(jié)果在前端客戶端中渲染得到網(wǎng)頁頁面,并將網(wǎng)頁頁面中的所有顯示內(nèi)容為顯示結(jié)果,對網(wǎng)頁頁面進行截圖操作,得到頁面圖片。
步驟s43,前端客戶端101將頁面圖片和對應(yīng)的訪問地址保存至圖片存儲客戶端121。
可選的,前端客戶端將頁面圖片和對應(yīng)的網(wǎng)頁頁面的訪問地址保存至圖片存儲客戶端。
步驟s44,圖片存儲客戶端121將頁面圖片推送至圖像識別客戶端103。
可選的,圖片存儲客戶端將頁面圖片推送至圖像識別客戶端進行檢測。
步驟s45,圖像識別客戶端103對頁面圖片進行圖像識別,確定訪問地址是否存在xss漏洞。
可選的,圖像識別客戶端對頁面圖片進行圖像識別,判斷頁面圖片中是否顯示至少一個檢測圖形,如果頁面圖片中成功顯示至少一個檢測圖形,則確定繪圖標(biāo)簽在網(wǎng)頁頁面中解析成功,進一步確定顯示結(jié)果中包含了成功解析檢測因子而得到的內(nèi)容,從而確定測試對象的訪問地址存在xss漏洞,包括dom-basedxss漏洞;進一步確定顯示結(jié)果中未包含成功解析檢測因子而得到的內(nèi)容,從而確定測試對象的訪問地址不存在xss漏洞。
通過上述步驟s41至步驟s45提供的方案,提供了一種xss漏洞的檢測方法,可以通過構(gòu)造帶有檢測因子的訪問地址,向測試對象發(fā)起訪問請求,對訪問請求對應(yīng)的 網(wǎng)頁頁面進行截圖操作,得到頁面圖片,對頁面圖片進行圖像識別,判斷頁面圖片是否顯示至少一個檢測圖形,從而確定測試對象的訪問地址是否存在xss漏洞,包括dom-basedxss漏洞。因此,基于圖像識別和黑盒檢測的手段,能夠非常精確的來檢測這類漏洞是否存在。
需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本申請并不受所描述的動作順序的限制,因為依據(jù)本申請,某些步驟可以采用其他順序或者同時進行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本申請所必須的。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到根據(jù)上述實施例的方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本申請的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機,計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請各個實施例所述的方法。
實施例2
根據(jù)本申請實施例,還提供了一種用于實施上述檢測漏洞的方法的檢測漏洞的裝置,如圖5所示,該裝置包括:訪問模塊52,獲取模塊54和第一確定模塊56。
其中,訪問模塊52用于向測試對象發(fā)起訪問請求,其中,訪問請求至少包括:測試對象的訪問地址和檢測因子;獲取模塊54用于獲取根據(jù)訪問請求返回的顯示結(jié)果;第一確定模塊56用于如果顯示結(jié)果中包含了成功解析檢測因子而得到的內(nèi)容,確定測試對象的訪問地址存在漏洞。
根據(jù)本申請上述實施例,測試對象可以為待訪問的網(wǎng)頁頁面,訪問地址可以是待訪問的網(wǎng)頁頁面的url地址,檢測因子可以為繪圖標(biāo)簽,其中,繪圖標(biāo)簽可以是svg標(biāo)簽,繪圖標(biāo)簽用于在網(wǎng)頁頁面中繪制至少一個檢測圖形。例如,可以畫一個圓形,顏色為藍(lán)色,svg標(biāo)簽的html代碼如下:<svg><circlecx="60"cy="60"r="40"style="fill:skyblue"></svg>。顯示結(jié)果可以是訪問請求返回的網(wǎng)頁頁面包含的內(nèi)容,例如,可以是網(wǎng)頁頁面中的控件,圖片,文檔,或者檢測圖形。漏洞可以為xss漏洞,包括dom-basedxss漏洞。
可選的,第一確定模塊56還用于如果顯示結(jié)果中包含了成功解析檢測因子而得到 的內(nèi)容,確定測試對象的訪問地址存在漏洞。
此處需要說明的是,上述訪問模塊52,獲取模塊54和第一確定模塊56對應(yīng)于實施例一中的步驟s22至步驟s26,三個模塊與對應(yīng)的步驟所實現(xiàn)的實例和應(yīng)用場景相同,但不限于上述實施例一所公開的內(nèi)容。需要說明的是,上述模塊作為裝置的一部分可以運行在實施例一提供的計算機終端10中。
由上可知,本申請上述實施例二公開的方案中,向測試對象發(fā)起包括檢測因子的訪問請求,獲取根據(jù)該訪問請求返回的顯示結(jié)果,并根據(jù)該顯示結(jié)果,確定測試對象的訪問地址是否存在漏洞。本方案可以通過在訪問請求中增加檢測因子,并檢測訪問請求返回的顯示結(jié)果中是否包含成功解析檢測因子得到的內(nèi)容,實現(xiàn)確定待檢測的對象是否存在漏洞的目的。
容易注意到,由于訪問請求中包含有檢測因子,并在獲取到顯示結(jié)果之后,檢測該顯示結(jié)果中是否包含成功解析檢測因子得到的內(nèi)容,從而可以確定測試對象的訪問地址是否存在漏洞,不需要分析源代碼或者逐個遍歷dom樹中的每個dom節(jié)點,因此,通過本申請實施例所提供的方案,可以實現(xiàn)快速精確地檢測dom-basedxss漏洞的效果。
由此,本申請?zhí)峁┑纳鲜鰧嵤├姆桨附鉀Q了解決現(xiàn)有技術(shù)中dom-basedxss漏洞的檢測方法檢測時間長,檢測精度低的技術(shù)問題。
根據(jù)本申請上述實施例,如圖6所示,訪問請求還包括:測試對象的訪問地址,其中,上述裝置還可以包括:解析模塊62和拼接模塊64。
其中,解析模塊62用于解析測試對象的訪問地址,得到訪問地址的至少一個參數(shù);拼接模塊64用于拼接檢測因子至訪問地址的任意一個或多個參數(shù)中,得到攜帶有檢測因子的訪問地址。
此處需要說明的是,上述解析模塊62和拼接模塊64對應(yīng)于實施例一中的步驟s202至步驟s204,兩個模塊與對應(yīng)的步驟所實現(xiàn)的實例和應(yīng)用場景相同,但不限于上述實施例一所公開的內(nèi)容。需要說明的是,上述模塊作為裝置的一部分可以運行在實施例一提供的計算機終端10中。
通過上述方案,可以通過解析訪問地址得到至少一個參數(shù),并將檢測因子拼接到任意一個或多個參數(shù)中,得到攜帶有檢測因子的訪問地址,從而可以實現(xiàn)向測試對象發(fā)起訪問請求的目的。
根據(jù)本申請上述實施例,如圖7所示,上述獲取模塊54可以包括:生成模塊72 和渲染模塊74。
其中,生成模塊72用于在前端客戶端觸發(fā)訪問請求的情況下,在前端客戶端生成訪問請求所對應(yīng)的響應(yīng)結(jié)果,其中,響應(yīng)結(jié)果至少包括:與訪問請求對應(yīng)的頁面資源數(shù)據(jù);渲染模塊74用于根據(jù)響應(yīng)結(jié)果在前端客戶端中渲染得到網(wǎng)頁頁面,其中,網(wǎng)頁頁面中的所有顯示內(nèi)容為顯示結(jié)果。
具體的,上述前端客戶端可以是用于發(fā)起訪問請求的客戶端,頁面資源數(shù)據(jù)可以是訪問請求對應(yīng)的網(wǎng)頁頁面中包含的資源數(shù)據(jù),例如,視頻資源數(shù)據(jù),圖片資源數(shù)據(jù)。
此處需要說明的是,上述生成模塊72和渲染模塊74對應(yīng)于實施例一中的步驟s242至步驟s244,兩個模塊與對應(yīng)的步驟所實現(xiàn)的實例和應(yīng)用場景相同,但不限于上述實施例一所公開的內(nèi)容。需要說明的是,上述模塊作為裝置的一部分可以運行在實施例一提供的計算機終端10中。
此處還需要說明的,由于前端客戶端觸發(fā)的訪問請求包含有檢測因子,前端客戶端在根據(jù)響應(yīng)結(jié)果渲染得到網(wǎng)頁頁面的過程中,網(wǎng)頁頁面的顯示內(nèi)容有可能會包含成功解析檢測因子得到的檢測圖形,因此,可以在獲取到網(wǎng)頁頁面中的所有顯示內(nèi)容之后,判斷其中是否包含有檢測圖形,如果確定網(wǎng)頁頁面中的所有顯示內(nèi)容中包含檢測圖形,則確定訪問地址存在漏洞。
根據(jù)本申請上述實施例,如圖8所示,上述裝置還可以包括:處理模塊82和保存模塊84。
其中,處理模塊82用于對網(wǎng)頁頁面進行截圖操作,得到頁面圖片;保存模塊84用于保存頁面圖片和對應(yīng)的網(wǎng)頁頁面的訪問地址。
此處需要說明的是,上述處理模塊82和保存模塊84對應(yīng)于實施例一中的步驟s246至步驟s248,兩個模塊與對應(yīng)的步驟所實現(xiàn)的實例和應(yīng)用場景相同,但不限于上述實施例一所公開的內(nèi)容。需要說明的是,上述模塊作為裝置的一部分可以運行在實施例一提供的計算機終端10中。
通過上述方案,可以使用攜帶有檢測因子的訪問地址進行網(wǎng)絡(luò)請求,在獲取到對應(yīng)的網(wǎng)頁頁面之后,對網(wǎng)頁頁面進行截屏處理,得到網(wǎng)頁圖片,并將頁面圖片和訪問地址進行保存,從而可以實現(xiàn)獲取訪問請求返回的顯示結(jié)果的目的,獲取過程簡單方便。
根據(jù)本申請上述實施例,如圖9所示,上述裝置還可以包括:判斷模塊92,第二確定模塊94和第三確定模塊96。
其中,判斷模塊92用于判斷頁面圖片中是否顯示至少一個檢測圖形;第二確定模塊94用于如果頁面圖片中成功顯示至少一個檢測圖形,則確定繪圖標(biāo)簽在網(wǎng)頁頁面中解析成功;第三確定模塊96用于如果頁面圖片中未顯示至少一個檢測圖形,或頁面圖片中顯示繪圖標(biāo)簽對應(yīng)的檢測文本,則確定繪圖標(biāo)簽在網(wǎng)頁頁面中解析失敗。
此處需要說明的是,上述判斷模塊92,第二確定模塊94和第三確定模塊96對應(yīng)于實施例一中的步驟s2462至步驟s2466,三個模塊與對應(yīng)的步驟所實現(xiàn)的實例和應(yīng)用場景相同,但不限于上述實施例一所公開的內(nèi)容。需要說明的是,上述模塊作為裝置的一部分可以運行在實施例一提供的計算機終端10中。
通過上述方案,可以通過判斷頁面圖片中是否顯示有至少一個檢測圖形,確定繪圖標(biāo)簽在網(wǎng)頁頁面中是否解析成功,進一步確定顯示結(jié)果中是否包含了成功解析檢測因子而得到的內(nèi)容,從而確定測試對象的訪問地址是否存在漏洞,無需分析源碼或者遍歷dom樹,分析方法方便便捷,分析結(jié)果準(zhǔn)確度高。
實施例3
根據(jù)本申請實施例,還提供了一種用于實施上述檢測漏洞的方法的檢測漏洞的系統(tǒng),如圖10所示,該系統(tǒng)可以包括:
前端客戶端101,用于向測試對象發(fā)起訪問請求,用于獲取根據(jù)訪問請求返回的顯示結(jié)果,其中,訪問請求至少包括:檢測因子。
根據(jù)本申請上述實施例,測試對象可以為待訪問的網(wǎng)頁頁面,訪問地址可以是待訪問的網(wǎng)頁頁面的url地址,檢測因子可以為繪圖標(biāo)簽,其中,繪圖標(biāo)簽可以是svg標(biāo)簽,繪圖標(biāo)簽用于在網(wǎng)頁頁面中繪制至少一個檢測圖形。例如,可以畫一個圓形,顏色為藍(lán)色,svg標(biāo)簽的html代碼如下:<svg><circlecx="60"cy="60"r="40"style="fill:skyblue"></svg>。顯示結(jié)果可以是訪問請求返回的網(wǎng)頁頁面包含的內(nèi)容,例如,可以是網(wǎng)頁頁面中的控件,圖片,文檔,或者檢測圖形。
圖11是根據(jù)本申請實施例三的一種可選的檢測漏洞的系統(tǒng)的示意圖,如圖11所示,在一種可選的方案中,前端客戶端可以是圖11中的重放系統(tǒng),用于發(fā)起訪問請求,可以構(gòu)建一個檢測圖形的檢測因子,把檢測因子插入到待訪問的網(wǎng)頁頁面的url地址中,利用casperjs把帶有檢測因子的url地址進行網(wǎng)絡(luò)請求,從而可以對每個待檢測的應(yīng)用進行請求,即圖11中的應(yīng)用1,應(yīng)用2和應(yīng)用3。在進行網(wǎng)絡(luò)請求之后,服務(wù)器根據(jù)訪問請求返回相應(yīng)的頁面,可以利用casperjs對返回的頁面進行截圖操作,即casper.captrue(),得到頁面的圖片,從而可以獲取到頁面中包含的內(nèi)容,即根據(jù)訪問請求返回的顯示結(jié)果。
圖像識別客戶端103,與前端客戶端101連接,用于根據(jù)顯示結(jié)果,確定測試對象的訪問地址是否存在漏洞。
根據(jù)本申請上述實施例,漏洞可以為xss漏洞,包括dom-basedxss漏洞。如果顯示結(jié)果中包含了成功解析檢測因子而得到的內(nèi)容,確定測試對象的訪問地址存在漏洞。
如圖11所示,在一種可選的方案中,圖像識別客戶端可以是圖11中的圖像識別系統(tǒng),在得到根據(jù)訪問請求返回的頁面的圖片之后,可以采用圖像識別技術(shù)對頁面的圖片進行圖像識別,確定頁面的圖片中是否包含有檢測因子設(shè)定的檢測圖形,如果確定頁面的圖片中包含有檢測因子設(shè)定的檢測圖形,則確定顯示結(jié)果中包含成功解析檢測因子而得到的內(nèi)容,從而確定待訪問的網(wǎng)頁頁面的url地址存在xss漏洞。
例如,以檢測因子為svg標(biāo)簽為例,對本申請上述實施例進行說明。svg標(biāo)簽設(shè)定的圖形可以為藍(lán)色的圓形,相應(yīng)的svg標(biāo)簽可以是<svg><circlecx="60"cy="60"r="40"style="fill:skyblue"></svg>,可以將svg標(biāo)簽插入到待檢測的應(yīng)用的url地址中,利用casperjs把帶有上述svg標(biāo)簽的url進行網(wǎng)絡(luò)請求,并對返回的頁面進行截圖操作,得到頁面的圖片,對該頁面的圖片進行圖像識別,識別該頁面的圖片中是否包含有設(shè)定的藍(lán)色的圓形,如果識別出該頁面的圖片中包含有設(shè)定的藍(lán)色的圓形,則說明svg標(biāo)簽成功在頁面上解析,證明待檢測的應(yīng)用的url地址存在dom-basedxss漏洞。
由上可知,本申請上述實施例三公開的方案中,向測試對象發(fā)起包括檢測因子的訪問請求,獲取根據(jù)該訪問請求返回的顯示結(jié)果,并根據(jù)該顯示結(jié)果,確定測試對象的訪問地址是否存在漏洞。本方案可以通過在訪問請求中增加檢測因子,并檢測訪問請求返回的顯示結(jié)果中是否包含成功解析檢測因子得到的內(nèi)容,實現(xiàn)確定待檢測的對象是否存在漏洞的目的。
容易注意到,由于訪問請求中包含有檢測因子,并在獲取到顯示結(jié)果之后,檢測該顯示結(jié)果中是否包含成功解析檢測因子得到的內(nèi)容,從而可以確定測試對象的訪問地址是否存在漏洞,不需要分析源代碼或者逐個遍歷dom樹中的每個dom節(jié)點,因此,通過本申請實施例所提供的方案,可以實現(xiàn)快速精確地檢測dom-basedxss漏洞的效果。
由此,本申請?zhí)峁┑纳鲜鰧嵤├姆桨附鉀Q了解決現(xiàn)有技術(shù)中dom-basedxss漏洞的檢測方法檢測時間長,檢測精度低的技術(shù)問題。
根據(jù)本申請上述實施例,訪問請求還包括:測試對象的訪問地址,上述前端客戶端101還用于解析測試對象的訪問地址,得到訪問地址的至少一個參數(shù),拼接檢測因 子至訪問地址的任意一個或多個參數(shù)中,得到攜帶有檢測因子的訪問地址。
在一種可選的方案中,可以將待訪問的網(wǎng)頁頁面的url地址進行解析,把url地址中的所有請求的參數(shù)解析出來,得到訪問地址的至少一個參數(shù),例如,得到的參數(shù)可以為關(guān)鍵字keywords。逐個將得到的至少一個參數(shù)中拼接一個檢測因子,拼接后生成多個不同參數(shù)帶有該檢測因子的url地址。
例如,仍以檢測因子為svg標(biāo)簽為例,對本申請上述實施例進行說明。待訪問的網(wǎng)頁頁面的url地址可以是http://www.applocation.com/shop,對該url地址進行解析,得到的參數(shù)為關(guān)鍵字keywords,將svg標(biāo)簽<svg><circlecx="60"cy="60"r="40"style="fill:skyblue"></svg>拼接到關(guān)鍵字參數(shù)中,最終生成的待訪問的網(wǎng)頁頁面的url地址為:http://www.application.com/shop?keywords=<svg><circlecx="60"cy="60"r="40"style="fill:skyblue"></svg>。
通過上述方案,可以通過解析訪問地址得到至少一個參數(shù),并將檢測因子拼接到任意一個或多個參數(shù)中,得到攜帶有檢測因子的訪問地址,從而可以實現(xiàn)向測試對象發(fā)起訪問請求的目的。
根據(jù)本申請上述實施例,上述前端客戶端101還用于在前端客戶端觸發(fā)訪問請求的情況下,在前端客戶端生成訪問請求所對應(yīng)的響應(yīng)結(jié)果,并根據(jù)響應(yīng)結(jié)果在前端客戶端中渲染得到網(wǎng)頁頁面,其中,響應(yīng)結(jié)果至少包括:與訪問請求對應(yīng)的頁面資源數(shù)據(jù),網(wǎng)頁頁面中的所有顯示內(nèi)容為顯示結(jié)果。
具體的,上述前端客戶端可以是用于發(fā)起訪問請求的客戶端,頁面資源數(shù)據(jù)可以是訪問請求對應(yīng)的網(wǎng)頁頁面中包含的資源數(shù)據(jù),例如,視頻資源數(shù)據(jù),圖片資源數(shù)據(jù)。
在一種可選的方案中,前端客戶端可以利用casperjs把攜帶有檢測因子的訪問地址進行訪問請求,接收到服務(wù)器返回的訪問請求對應(yīng)的網(wǎng)頁頁面的頁面資源數(shù)據(jù),并生對應(yīng)的響應(yīng)結(jié)果??梢愿鶕?jù)響應(yīng)結(jié)果中的頁面資源數(shù)據(jù)在前端客戶端中渲染得到訪問請求對應(yīng)的網(wǎng)頁頁面,并從網(wǎng)頁頁面中獲取顯示內(nèi)容得到訪問請求返回的顯示結(jié)果。
在另外一種可選方案中,由于頁面資源數(shù)據(jù)還可以包括解析檢測因子而得到的數(shù)據(jù),例如,仍以檢測因子為svg標(biāo)簽為例,對本申請上述實施例進行說明。測試人員可以通過前端客戶端使用攜帶有svg標(biāo)簽的url地址發(fā)起訪問請求,服務(wù)器在接收到訪問請求之后,返回訪問請求對應(yīng)的頁面資源數(shù)據(jù),該頁面資源數(shù)據(jù)包括解析svg標(biāo)簽而得到的圖形數(shù)據(jù)(可以是用于進行驗證是否具有漏洞的檢測圖形),前端客戶端在接收到訪問請求對應(yīng)的頁面資源數(shù)據(jù)之后,根據(jù)頁面資源數(shù)據(jù)渲染得到網(wǎng)頁頁面,該網(wǎng)頁頁面中的顯示內(nèi)容包括了上述圖形數(shù)據(jù)。
此處需要說明的,由于前端客戶端觸發(fā)的訪問請求包含有檢測因子,前端客戶端在根據(jù)響應(yīng)結(jié)果渲染得到網(wǎng)頁頁面的過程中,網(wǎng)頁頁面的顯示內(nèi)容有可能會包含成功解析檢測因子得到的檢測圖形,因此,可以在獲取到網(wǎng)頁頁面中的所有顯示內(nèi)容之后,判斷其中是否包含有檢測圖形,如果確定網(wǎng)頁頁面中的所有顯示內(nèi)容中包含檢測圖形,則確定訪問地址存在漏洞。
根據(jù)本申請上述實施例,如圖12所示,上述系統(tǒng)還可以包括:圖片存儲客戶端121。
其中,上述前端客戶端101還用于對網(wǎng)頁頁面進行截圖操作,得到頁面圖片,保存頁面圖片和對應(yīng)的網(wǎng)頁頁面的訪問地址至圖片存儲客戶端121中。
如圖11所示,在一種可選的方案中,重放系統(tǒng)可以使用casperjs對返回的頁面進行截圖操作,得到頁面圖片,并將頁面圖片以及對應(yīng)的url地址保存至圖片存儲客戶端,即圖11中的圖片存儲系統(tǒng)中。圖片存儲系統(tǒng)中存儲了大量的結(jié)果圖片和對應(yīng)的url地址,一個url地址對應(yīng)一張截圖,可以將存儲的結(jié)果圖片推送到圖像識別系統(tǒng),由圖像識別系統(tǒng)進行檢測。
例如,仍以檢測因子為svg標(biāo)簽為例,對本申請上述實施例進行說明。在攜帶有svg標(biāo)簽的url地址為:http://www.application.com/shop?keywords=<svg><circlecx="60"cy="60"r="40"style="fill:skyblue"></svg>的情況下,使用casperjs對返回的頁面進行截圖操作,得到頁面的圖片。
通過上述方案,可以使用攜帶有檢測因子的訪問地址進行網(wǎng)絡(luò)請求,在獲取到對應(yīng)的網(wǎng)頁頁面之后,對網(wǎng)頁頁面進行截屏處理,得到網(wǎng)頁圖片,并將頁面圖片和訪問地址進行保存,從而可以實現(xiàn)獲取訪問請求返回的顯示結(jié)果的目的,獲取過程簡單方便。
根據(jù)本申請上述實施例,上述圖像識別客戶端103還用于判斷頁面圖片中是否顯示至少一個檢測圖形,如果頁面圖片中成功顯示至少一個檢測圖形,則確定繪圖標(biāo)簽在網(wǎng)頁頁面中解析成功;如果頁面圖片中未顯示至少一個檢測圖形,或頁面圖片中顯示繪圖標(biāo)簽對應(yīng)的檢測文本,則確定繪圖標(biāo)簽在網(wǎng)頁頁面中解析失敗。
如圖11所示,在一種可選的方案中,圖像識別客戶端可以接收圖片存儲客戶端推送的圖片,使用阿里巴巴自主研制的開放數(shù)據(jù)處理服務(wù)odps(opendataprocessingservice的簡寫)作為圖片識別處理,使用python中的pil庫和pillow庫進行圖像檢測,判斷頁面圖片中是否存在檢測因子繪制的檢測圖形,提升處理速度。如果在頁面圖片中識別到檢測因子對應(yīng)的檢測圖形,則證明繪圖標(biāo)簽在頁面中被成功解析;如 果在頁面圖片中未識別到檢測因子對應(yīng)的檢測圖形,則證明繪圖標(biāo)簽在頁面中解析失敗。根據(jù)本申請上述實施例,如果繪圖標(biāo)簽在頁面中解析成功,則確定顯示結(jié)果中包含了成功解析檢測因子而得到的內(nèi)容;如果繪圖標(biāo)簽在頁面中解析失敗,則顯示結(jié)果中未包含成功解析檢測因子而得到的內(nèi)容,確定待檢測的應(yīng)用的訪問地址不存在漏洞。
例如,仍以檢測因子為svg標(biāo)簽為例,對本申請上述實施例進行說明。在攜帶有svg標(biāo)簽的url地址為:http://www.application.com/shop?keywords=<svg><circlecx="60"cy="60"r="40"style="fill:skyblue"></svg>的情況下,獲取到返回的網(wǎng)頁頁面并進行截圖操作,得到頁面圖片,可以經(jīng)過pythonudf對頁面圖片進行圖像分析,判斷頁面圖片中,在坐標(biāo)(60,60)的位置處是否有一個半徑為40的天藍(lán)色圓形,如果確定頁面圖片中在坐標(biāo)(60,60)的位置處有一個半徑為40的天藍(lán)色圓形,即確定頁面圖片中顯示svg標(biāo)簽繪制的檢測圖形,則確定svg標(biāo)簽在網(wǎng)頁頁面中解析成功,進一步確定顯示結(jié)果中包含了成功解析svg標(biāo)簽而得到的內(nèi)容,從而確定待檢測的應(yīng)用的url地址存在dom-basedxss漏洞;如果確定頁面圖片中在坐標(biāo)(60,60)的位置處沒有一個半徑為40的天藍(lán)色圓形,即確定頁面圖片中沒有顯示svg標(biāo)簽繪制的檢測圖形,則確定svg標(biāo)簽在網(wǎng)頁頁面中解析失敗,進一步確定顯示結(jié)果中包含了成功解析svg標(biāo)簽而得到的內(nèi)容,從而確定待檢測的應(yīng)用的url地址不存在dom-basedxss漏洞。
通過上述方案,可以通過判斷頁面圖片中是否顯示有至少一個檢測圖形,確定繪圖標(biāo)簽在網(wǎng)頁頁面中是否解析成功,進一步確定顯示結(jié)果中是否包含了成功解析檢測因子而得到的內(nèi)容,從而確定測試對象的訪問地址是否存在漏洞,無需分析源碼或者遍歷dom樹,分析方法方便便捷,分析結(jié)果準(zhǔn)確度高。
實施例4
本申請的實施例可以提供一種計算機終端,該計算機終端可以是計算機終端群中的任意一個計算機終端設(shè)備??蛇x地,在本實施例中,上述計算機終端也可以替換為移動終端等終端設(shè)備。
可選地,在本實施例中,上述計算機終端可以位于計算機網(wǎng)絡(luò)的多個網(wǎng)絡(luò)設(shè)備中的至少一個網(wǎng)絡(luò)設(shè)備。
在本實施例中,上述計算機終端可以執(zhí)行檢測漏洞的方法中以下步驟的程序代碼:向測試對象發(fā)起訪問請求,其中,訪問請求至少包括:檢測因子;獲取根據(jù)訪問請求返回的顯示結(jié)果;根據(jù)顯示結(jié)果,確定測試對象的訪問地址是否存在漏洞。
可選地,圖13是根據(jù)本申請實施例的一種計算機終端的結(jié)構(gòu)框圖。如圖13所示, 該計算機終端a可以包括:一個或多個(圖中僅示出一個)處理器131、存儲器133、以及傳輸裝置135。
其中,存儲器可用于存儲軟件程序以及模塊,如本申請實施例中的檢測漏洞的方法和裝置對應(yīng)的程序指令/模塊,處理器通過運行存儲在存儲器內(nèi)的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理,即實現(xiàn)上述的檢測漏洞的方法。存儲器可包括高速隨機存儲器,還可以包括非易失性存儲器,如一個或者多個磁性存儲裝置、閃存、或者其他非易失性固態(tài)存儲器。在一些實例中,存儲器可進一步包括相對于處理器遠(yuǎn)程設(shè)置的存儲器,這些遠(yuǎn)程存儲器可以通過網(wǎng)絡(luò)連接至終端a。上述網(wǎng)絡(luò)的實例包括但不限于互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)、局域網(wǎng)、移動通信網(wǎng)及其組合。
處理器可以通過傳輸裝置調(diào)用存儲器存儲的信息及應(yīng)用程序,以執(zhí)行下述步驟:向測試對象發(fā)起訪問請求,其中,訪問請求至少包括:檢測因子;獲取根據(jù)訪問請求返回的顯示結(jié)果;根據(jù)顯示結(jié)果,確定測試對象的訪問地址是否存在漏洞。
可選的,上述處理器還可以執(zhí)行如下步驟的程序代碼:如果顯示結(jié)果中包含了成功解析檢測因子而得到的內(nèi)容,確定測試對象的訪問地址存在漏洞。
可選的,上述處理器還可以執(zhí)行如下步驟的程序代碼:訪問請求還包括:測試對象的訪問地址,在向測試對象發(fā)起訪問請求之前,解析測試對象的訪問地址,得到訪問地址的至少一個參數(shù);拼接檢測因子至訪問地址的任意一個或多個參數(shù)中,得到攜帶有檢測因子的訪問地址。
可選的,上述處理器還可以執(zhí)行如下步驟的程序代碼:測試對象為待訪問的網(wǎng)頁頁面,檢測因子為繪圖標(biāo)簽,其中,繪圖標(biāo)簽用于在網(wǎng)頁頁面中繪制至少一個檢測圖形。
可選的,上述處理器還可以執(zhí)行如下步驟的程序代碼:在前端客戶端觸發(fā)訪問請求的情況下,在前端客戶端生成訪問請求所對應(yīng)的響應(yīng)結(jié)果,其中,響應(yīng)結(jié)果至少包括:與訪問請求對應(yīng)的頁面資源數(shù)據(jù);根據(jù)響應(yīng)結(jié)果在前端客戶端中渲染得到網(wǎng)頁頁面,其中,網(wǎng)頁頁面中的所有顯示內(nèi)容為顯示結(jié)果。
可選的,上述處理器還可以執(zhí)行如下步驟的程序代碼:在根據(jù)響應(yīng)結(jié)果在前端客戶端中渲染得到網(wǎng)頁頁面之后,對網(wǎng)頁頁面進行截圖操作,得到頁面圖片;保存頁面圖片和對應(yīng)的網(wǎng)頁頁面的訪問地址。
可選的,上述處理器還可以執(zhí)行如下步驟的程序代碼:在對網(wǎng)頁頁面進行截圖操作,得到頁面圖片之后,判斷頁面圖片中是否顯示至少一個檢測圖形;如果頁面圖片中成功顯示至少一個檢測圖形,則確定繪圖標(biāo)簽在網(wǎng)頁頁面中解析成功;如果頁面圖 片中未顯示至少一個檢測圖形,或頁面圖片中顯示繪圖標(biāo)簽對應(yīng)的檢測文本,則確定繪圖標(biāo)簽在網(wǎng)頁頁面中解析失敗。
可選的,上述處理器還可以執(zhí)行如下步驟的程序代碼:如果繪圖標(biāo)簽在網(wǎng)頁頁面中解析成功,則確定顯示結(jié)果中包含了成功解析檢測因子而得到的內(nèi)容;如果繪圖標(biāo)簽在網(wǎng)頁頁面中解析失敗,則顯示結(jié)果中未包含成功解析檢測因子而得到的內(nèi)容,確定測試對象的訪問地址不存在漏洞。
可選的,上述處理器還可以執(zhí)行如下步驟的程序代碼:漏洞為xss漏洞。
采用本申請實施例,提供了一種檢測漏洞的方法,可以通過向測試對象發(fā)起包括檢測因子的訪問請求,獲取根據(jù)該訪問請求返回的顯示結(jié)果,并根據(jù)該顯示結(jié)果,確定測試對象的訪問地址是否存在漏洞。本方案可以通過在訪問請求中增加檢測因子,并檢測訪問請求返回的顯示結(jié)果中是否包含成功解析檢測因子得到的內(nèi)容,實現(xiàn)確定待檢測的對象是否存在漏洞的目的,進而解決了解決現(xiàn)有技術(shù)中dom-basedxss漏洞的檢測方法檢測時間長,檢測精度低的技術(shù)問題。
本領(lǐng)域普通技術(shù)人員可以理解,圖13所示的結(jié)構(gòu)僅為示意,計算機終端也可以是智能手機(如android手機、ios手機等)、平板電腦、掌聲電腦以及移動互聯(lián)網(wǎng)設(shè)備(mobileinternetdevices,mid)、pad等終端設(shè)備。圖13其并不對上述電子裝置的結(jié)構(gòu)造成限定。例如,計算機終端a還可包括比圖13中所示更多或者更少的組件(如網(wǎng)絡(luò)接口、顯示裝置等),或者具有與圖13所示不同的配置。
本領(lǐng)域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令終端設(shè)備相關(guān)的硬件來完成,該程序可以存儲于一計算機可讀存儲介質(zhì)中,存儲介質(zhì)可以包括:閃存盤、只讀存儲器(read-onlymemory,rom)、隨機存取器(randomaccessmemory,ram)、磁盤或光盤等。
實施例5
本申請的實施例還提供了一種存儲介質(zhì)。可選地,在本實施例中,上述存儲介質(zhì)可以用于保存上述實施例一所提供的檢測漏洞的方法所執(zhí)行的程序代碼。
可選地,在本實施例中,上述存儲介質(zhì)可以位于計算機網(wǎng)絡(luò)中計算機終端群中的任意一個計算機終端中,或者位于移動終端群中的任意一個移動終端中。
可選地,在本實施例中,存儲介質(zhì)被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:向測試對象發(fā)起訪問請求,其中,訪問請求至少包括:檢測因子;獲取根據(jù)訪問請求返回的顯示結(jié)果;根據(jù)顯示結(jié)果,確定測試對象的訪問地址是否存在漏洞。
可選地,在本實施例中,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:如果顯示結(jié)果中包含了成功解析檢測因子而得到的內(nèi)容,確定測試對象的訪問地址存在漏洞。
可選地,在本實施例中,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:訪問請求還包括:測試對象的訪問地址,在向測試對象發(fā)起訪問請求之前,解析測試對象的訪問地址,得到訪問地址的至少一個參數(shù);拼接檢測因子至訪問地址的任意一個或多個參數(shù)中,得到攜帶有檢測因子的訪問地址。
可選地,在本實施例中,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:測試對象為待訪問的網(wǎng)頁頁面,檢測因子為繪圖標(biāo)簽,其中,繪圖標(biāo)簽用于在網(wǎng)頁頁面中繪制至少一個檢測圖形。
可選地,在本實施例中,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:在前端客戶端觸發(fā)訪問請求的情況下,在前端客戶端生成訪問請求所對應(yīng)的響應(yīng)結(jié)果,其中,響應(yīng)結(jié)果至少包括:與訪問請求對應(yīng)的頁面資源數(shù)據(jù);根據(jù)響應(yīng)結(jié)果在前端客戶端中渲染得到網(wǎng)頁頁面,其中,網(wǎng)頁頁面中的所有顯示內(nèi)容為顯示結(jié)果。
可選地,在本實施例中,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:在根據(jù)響應(yīng)結(jié)果在前端客戶端中渲染得到網(wǎng)頁頁面之后,對網(wǎng)頁頁面進行截圖操作,得到頁面圖片;保存頁面圖片和對應(yīng)的網(wǎng)頁頁面的訪問地址。
可選地,在本實施例中,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:在對網(wǎng)頁頁面進行截圖操作,得到頁面圖片之后,判斷頁面圖片中是否顯示至少一個檢測圖形;如果頁面圖片中成功顯示至少一個檢測圖形,則確定繪圖標(biāo)簽在網(wǎng)頁頁面中解析成功;如果頁面圖片中未顯示至少一個檢測圖形,或頁面圖片中顯示繪圖標(biāo)簽對應(yīng)的檢測文本,則確定繪圖標(biāo)簽在網(wǎng)頁頁面中解析失敗。
可選地,在本實施例中,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:如果繪圖標(biāo)簽在網(wǎng)頁頁面中解析成功,則確定顯示結(jié)果中包含了成功解析檢測因子而得到的內(nèi)容;如果繪圖標(biāo)簽在網(wǎng)頁頁面中解析失敗,則顯示結(jié)果中未包含成功解析檢測因子而得到的內(nèi)容,確定測試對象的訪問地址不存在漏洞。
可選地,在本實施例中,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:漏洞為xss漏洞。
上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
在本發(fā)明的上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有 詳述的部分,可以參見其他實施例的相關(guān)描述。
在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實現(xiàn)。其中,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可為個人計算機、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:u盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。