本發(fā)明涉及計算機(jī)及信息安全技術(shù)領(lǐng)域,具體而言,涉及一種脆弱性目錄查找方法及裝置。
背景技術(shù):
隨著萬維網(wǎng)(WEB)技術(shù)的迅速發(fā)展,WEB的應(yīng)用越來越普及,而隨之而來的安全問題也日益突出,對WEB目錄的攻擊事件也屢屢發(fā)生,目錄掃描攻擊通過攻擊網(wǎng)站目錄可以獲取網(wǎng)站后臺,上傳界面等敏感信息,從而導(dǎo)致網(wǎng)站遭受嚴(yán)重影響。
為了防止網(wǎng)站的目錄被攻擊,需要對網(wǎng)站進(jìn)行檢測,找到網(wǎng)站的脆弱性目錄,及時修改網(wǎng)絡(luò)架構(gòu),保護(hù)網(wǎng)站安全?,F(xiàn)有技術(shù)中大都是采用目錄迭代的方式對網(wǎng)站進(jìn)行目錄掃描,即將網(wǎng)站數(shù)據(jù)庫中的目錄數(shù)據(jù)進(jìn)行逐一掃描,從而查找網(wǎng)站的脆弱性目錄,這樣,需要進(jìn)行大量的掃描工作,且其中大量的目錄掃描工作都是重復(fù)和無用的,掃描的效率和速度很低,即查找脆弱性目錄的效率和速度很低。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明實(shí)施例的目的在于提供一種脆弱性目錄查找方法及裝置,以解決現(xiàn)有技術(shù)中查找脆弱性目錄工作量大且查找的效率和速度很低的問題。
第一方面,本發(fā)明實(shí)施例提供了一種脆弱性目錄查找方法,其中,所述方法包括:
對目標(biāo)網(wǎng)站進(jìn)行掃描,當(dāng)確定所述目標(biāo)網(wǎng)站的內(nèi)容管理系統(tǒng)為非開源系統(tǒng)時,獲取所述目標(biāo)網(wǎng)站的特征參數(shù),所述特征參數(shù)包括所述目標(biāo)網(wǎng)站的網(wǎng)站架構(gòu)、腳本語言、網(wǎng)絡(luò)互聯(lián)協(xié)議地址及域名;
獲取所述目標(biāo)網(wǎng)站的網(wǎng)站拓?fù)鋱D,在預(yù)先建立的目錄數(shù)據(jù)庫中查詢與所述網(wǎng)站拓?fù)鋱D匹配的目錄數(shù)據(jù)庫子集;
根據(jù)所述目標(biāo)網(wǎng)站的特征參數(shù),對所述目錄數(shù)據(jù)庫子集進(jìn)行篩選,得到與所述目標(biāo)網(wǎng)站的特征參數(shù)相符合的至少一個目錄數(shù)據(jù)庫子集;
根據(jù)所述至少一個目錄數(shù)據(jù)庫子集生成所述目標(biāo)網(wǎng)站的目錄字典,對所述目錄字典進(jìn)行目錄掃描,查找所述目錄字典中的脆弱性目錄。
結(jié)合第一方面,本發(fā)明實(shí)施例提供了上述第一方面的第一種可能的實(shí)現(xiàn)方式,其中,當(dāng)確定所述目標(biāo)網(wǎng)站的內(nèi)容管理系統(tǒng)為開源系統(tǒng)時,對所述目標(biāo)網(wǎng)站進(jìn)行目錄掃描,查找所述目標(biāo)網(wǎng)站的脆弱性目錄。
結(jié)合第一方面,本發(fā)明實(shí)施例提供了上述第一方面的第二種可能的實(shí)現(xiàn)方式,其中,所述獲取所述目標(biāo)網(wǎng)站的網(wǎng)站拓?fù)鋱D之前,還包括:
設(shè)定端口掃描參數(shù),根據(jù)所述端口掃描參數(shù)對所述目標(biāo)網(wǎng)站進(jìn)行端口掃描,確定所述端口掃描參數(shù)對應(yīng)的端口是否開放,所述端口掃描參數(shù)包括掃描的端口號、掃描的所述目標(biāo)網(wǎng)站的網(wǎng)絡(luò)互聯(lián)協(xié)議地址及掃描的線程;
當(dāng)確定所述端口掃描參數(shù)對應(yīng)的端口開放時,從所述目錄數(shù)據(jù)庫中查詢與所述端口相對應(yīng)的目錄數(shù)據(jù)庫子集,對所述目錄數(shù)據(jù)庫子集進(jìn)行目錄掃描,查找所述目標(biāo)網(wǎng)站的脆弱性目錄。
結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,本發(fā)明實(shí)施例提供了上述第一方面的第三種可能的實(shí)現(xiàn)方式,其中,所述根據(jù)所述端口掃描參數(shù)對所述目標(biāo)網(wǎng)站進(jìn)行端口掃描,確定所述端口掃描參數(shù)對應(yīng)的端口是否開放,包括:
根據(jù)設(shè)定的端口掃描參數(shù),向所述目標(biāo)網(wǎng)站發(fā)起套接字請求;
根據(jù)所述目標(biāo)網(wǎng)站的響應(yīng)情況,確定與所述端口掃描參數(shù)對應(yīng)的端口是否開放。
結(jié)合第一方面,本發(fā)明實(shí)施例提供了上述第一方面的第四種可能的實(shí)現(xiàn)方式,其中,所述對目標(biāo)網(wǎng)站進(jìn)行掃描,包括:
基于客戶機(jī)/服務(wù)器模型建立網(wǎng)站指紋識別工具;
采用所述網(wǎng)站指紋識別工具對所述目標(biāo)網(wǎng)站進(jìn)行掃描。
結(jié)合第一方面,本發(fā)明實(shí)施例提供了上述第一方面的第五種可能的實(shí)現(xiàn)方式,其中,所述獲取所述目標(biāo)網(wǎng)站的網(wǎng)站拓?fù)鋱D,包括:
確定所述目標(biāo)網(wǎng)站的爬蟲策略,所述爬蟲策略包括爬取的所述目標(biāo)網(wǎng)站的目錄深度及優(yōu)先爬取所述目標(biāo)網(wǎng)站的目錄廣度;
根據(jù)所述爬蟲策略獲取所述目標(biāo)網(wǎng)站的網(wǎng)站拓?fù)鋱D。
第二方面,本發(fā)明實(shí)施例提供了一種脆弱性目錄查找裝置,其中,所述裝置包括:
第一掃描模塊,用于對目標(biāo)網(wǎng)站進(jìn)行掃描,當(dāng)確定所述目標(biāo)網(wǎng)站的內(nèi)容管理系統(tǒng)為非開源系統(tǒng)時,獲取所述目標(biāo)網(wǎng)站的特征參數(shù),所述特征參數(shù)包括所述目標(biāo)網(wǎng)站的網(wǎng)站架構(gòu)、腳本語言、網(wǎng)絡(luò)互聯(lián)協(xié)議地址及域名;
查詢模塊,用于獲取所述目標(biāo)網(wǎng)站的網(wǎng)站拓?fù)鋱D,在預(yù)先建立的目錄數(shù)據(jù)庫中查詢與所述網(wǎng)站拓?fù)鋱D匹配的目錄數(shù)據(jù)庫子集;
篩選模塊,用于根據(jù)所述目標(biāo)網(wǎng)站的特征參數(shù),對所述目錄數(shù)據(jù)庫子集進(jìn)行篩選,得到與所述目標(biāo)網(wǎng)站的特征參數(shù)相符合的至少一個目錄數(shù)據(jù)庫子集;
第一目錄掃描模塊,用于根據(jù)所述至少一個目錄數(shù)據(jù)庫子集生成所述目標(biāo)網(wǎng)站的目錄字典,對所述目錄字典進(jìn)行目錄掃描,查找所述目錄字典中的脆弱性目錄。
結(jié)合第二方面,本發(fā)明實(shí)施例提供了上述第二方面的第一種可能的實(shí)現(xiàn)方式,其中,所述裝置還包括:
第二掃描模塊,用于設(shè)定端口掃描參數(shù),根據(jù)所述端口掃描參數(shù)對所述目標(biāo)網(wǎng)站進(jìn)行端口掃描,確定所述端口掃描參數(shù)對應(yīng)的端口是否開放,所述端口掃描參數(shù)包括掃描的端口號、掃描的所述目標(biāo)網(wǎng)站的網(wǎng)絡(luò)互聯(lián)協(xié)議地址及掃描的線程;
第二目錄掃描模塊,用于當(dāng)確定所述端口掃描參數(shù)對應(yīng)的端口開放時,從所述目錄數(shù)據(jù)庫中查詢與所述端口相對應(yīng)的目錄數(shù)據(jù)庫子集,對所述目錄數(shù)據(jù)庫子集進(jìn)行目錄掃描,查找所述目標(biāo)網(wǎng)站的脆弱性目錄。
結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式,本發(fā)明實(shí)施例提供了上述第二方面的第二種可能的實(shí)現(xiàn)方式,其中,所述第二掃描模塊包括:
請求單元,用于根據(jù)設(shè)定的端口掃描參數(shù),向所述目標(biāo)網(wǎng)站發(fā)起套接字請求;
第一確定單元,用于根據(jù)所述目標(biāo)網(wǎng)站的響應(yīng)情況,確定與所述端口掃描參數(shù)對應(yīng)的端口是否開放。
結(jié)合第二方面,本發(fā)明實(shí)施例提供了上述第二方面的第三種可能的實(shí)現(xiàn)方式,其中,所述查詢模塊包括:
第二確定單元,用于確定所述目標(biāo)網(wǎng)站的爬蟲策略,所述爬蟲策略包括爬取的所述目標(biāo)網(wǎng)站的目錄深度及優(yōu)先爬取所述目標(biāo)網(wǎng)站的目錄廣度;
獲取單元,用于根據(jù)所述爬蟲策略獲取所述目標(biāo)網(wǎng)站的網(wǎng)站拓?fù)鋱D。
本發(fā)明實(shí)施例提供的脆弱性目錄查找方法及裝置,根據(jù)目標(biāo)網(wǎng)站的網(wǎng)站拓?fù)鋱D和特征參數(shù),從目錄數(shù)據(jù)庫中篩選與目標(biāo)網(wǎng)站的網(wǎng)站拓?fù)鋱D和特征參數(shù)相符合的目錄數(shù)據(jù)庫子集生成該目標(biāo)網(wǎng)站的目錄字典,并對該目錄字典進(jìn)行目錄掃描,查找該目錄字典中的脆弱性目錄,這樣,減少了目錄掃描的工作量,提高了脆弱性目錄查找的效率和速度。
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉較佳實(shí)施例,并配合所附附圖,作詳細(xì)說明如下。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對實(shí)施例中所需要使用的附圖作簡單地介紹,應(yīng)當(dāng)理解,以下附圖僅示出了本發(fā)明的某些實(shí)施例,因此不應(yīng)被看作是對范圍的限定,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他相關(guān)的附圖。
圖1示出了本發(fā)明實(shí)施例1所提供的脆弱性目錄查找方法的流程圖;
圖2示出了本發(fā)明實(shí)施例2所提供的脆弱性目錄查找裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。通常在此處附圖中描述和示出的本發(fā)明實(shí)施例的組件可以以各種不同的配置來布置和設(shè)計。因此,以下對在附圖中提供的本發(fā)明的實(shí)施例的詳細(xì)描述并非旨在限制要求保護(hù)的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實(shí)施例?;诒景l(fā)明的實(shí)施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
考慮到現(xiàn)有技術(shù)中,為了防止網(wǎng)站的目錄被攻擊,需要對網(wǎng)站進(jìn)行檢測,找到網(wǎng)站的脆弱性目錄,修改網(wǎng)站架構(gòu),保護(hù)網(wǎng)站安全,現(xiàn)有技術(shù)中大都是采用目錄迭代的方式對網(wǎng)站進(jìn)行目錄掃描,即將網(wǎng)站目錄數(shù)據(jù)庫中的目錄數(shù)據(jù)進(jìn)行逐一掃描,查找網(wǎng)站的脆弱性目錄,這樣,掃描的工作量很大,并且大量的掃描工作都是重復(fù)和無用的,掃描的效率和速度很低,即脆弱性目錄查找的效率和速度很低。基于此,本發(fā)明實(shí)施例提供了一種脆弱性目錄查找方法及裝置,下面通過實(shí)施例進(jìn)行描述。
實(shí)施例1
本發(fā)明實(shí)施例提供了一種脆弱性目錄查找方法,采用該方法查找目標(biāo)網(wǎng)站的脆弱性目錄時,根據(jù)目標(biāo)網(wǎng)站的網(wǎng)站拓?fù)鋱D和特征參數(shù),從目錄數(shù)據(jù)庫中篩選與該網(wǎng)站拓?fù)鋱D和特征參數(shù)相符合的目錄數(shù)據(jù)庫子集,并生成目錄字典,對該目錄字典進(jìn)行目錄掃描,查找該目錄字典中的脆弱性目錄,減少了目錄掃描的工作量,提供了脆弱性目錄查找的效率和速度。
如圖1所示,采用本發(fā)明實(shí)施例提供的方法查找網(wǎng)站的脆弱性目錄時,具體包括步驟S110-S140。
S110,對目標(biāo)網(wǎng)站進(jìn)行掃描,當(dāng)確定目標(biāo)網(wǎng)站的內(nèi)容管理系統(tǒng)(Content Management System,CMS)為非開源系統(tǒng)時,獲取目標(biāo)網(wǎng)站的特征參數(shù),該特征參數(shù)包括目標(biāo)網(wǎng)站的網(wǎng)站架構(gòu)、腳本語言、網(wǎng)絡(luò)互聯(lián)協(xié)議(Internet Protocol,IP)地址及域名。
對目標(biāo)網(wǎng)站進(jìn)行掃描包括:基于客戶機(jī)/服務(wù)器(Client/Server,C/S)模型建立網(wǎng)站指紋識別(WhatWeb)工具;采用網(wǎng)站指紋識別工具對目標(biāo)網(wǎng)站進(jìn)行掃描。
在本發(fā)明實(shí)施例中,基于C/S模型建立WhatWeb掃描工具,該WhatWeb工具為開源WhatWeb,在采用WhatWeb對目標(biāo)網(wǎng)站進(jìn)行掃描時,可以在Linux上開啟WhatWeb服務(wù),將目標(biāo)網(wǎng)站和WhatWeb服務(wù)通過遠(yuǎn)程連接,采用WhatWeb對目標(biāo)網(wǎng)站進(jìn)行掃描,在對目標(biāo)網(wǎng)站進(jìn)行WhatWeb掃描的過程中可以判斷出該目標(biāo)網(wǎng)站的CMS是否為開源CMS。
當(dāng)確定出上述目標(biāo)網(wǎng)站的CMS為開源CMS時,對該目標(biāo)網(wǎng)站進(jìn)行目錄掃描,查找該目標(biāo)網(wǎng)站的脆弱性目錄。
上述對目標(biāo)網(wǎng)站進(jìn)行目錄掃描時,可以采用基于超文本傳送協(xié)議(Hypertext transfer protocol,HTTP)響應(yīng)碼的目錄掃描技術(shù),即向目標(biāo)網(wǎng)站發(fā)送HTTP請求,目標(biāo)網(wǎng)站接收到HTTP請求后,會返回響應(yīng)碼信息,根據(jù)目標(biāo)網(wǎng)站返回的響應(yīng)碼信息可以判斷目標(biāo)網(wǎng)站是否存當(dāng)前掃描目錄,以及當(dāng)前掃描目錄的地址。
在對目標(biāo)網(wǎng)站進(jìn)行WhatWeb掃描的過程中還會獲取目標(biāo)網(wǎng)站的網(wǎng)站架構(gòu)、腳本語言、IP地址及域名這些特征參數(shù),因此,當(dāng)確定出上述目標(biāo)網(wǎng)站的CMS為非開源CMS時,則需要獲取目標(biāo)網(wǎng)站的上述特征參數(shù)。
當(dāng)對目標(biāo)網(wǎng)站進(jìn)行WhatWeb掃描后,還可以對目標(biāo)網(wǎng)站進(jìn)行端口掃描,進(jìn)行端口掃描的具體過程包括:設(shè)定端口掃描參數(shù),根據(jù)端口掃描參數(shù)對目標(biāo)網(wǎng)站進(jìn)行端口掃描,確定端口掃描參數(shù)對應(yīng)的端口是否開放,該端口掃描參數(shù)包括掃描的端口號、掃描的目標(biāo)網(wǎng)站的IP地址及掃描的線程;當(dāng)確定端口掃描參數(shù)對應(yīng)的端口開放時,從目錄數(shù)據(jù)庫中查詢與該端口相對應(yīng)的目錄數(shù)據(jù)庫子集,對該目錄數(shù)據(jù)庫子集進(jìn)行目錄掃描,查找目錄網(wǎng)站的脆弱性目錄。
在本發(fā)明實(shí)施例中,在對目標(biāo)網(wǎng)站進(jìn)行端口掃描時,需要確定一些已知網(wǎng)站服務(wù)對應(yīng)的端口是否開放,比如說,HTTP服務(wù)、文件傳輸協(xié)議(File Transfer Protocol,F(xiàn)TP)服務(wù)、簡單文件傳輸協(xié)議(Trivial File Transfer Protocol,TFTP)服務(wù)等等對應(yīng)的端口在目標(biāo)網(wǎng)站上是否開放,首先需要根據(jù)端口信息數(shù)據(jù)庫確定出已知網(wǎng)站服務(wù)對應(yīng)的端口號,在端口信息數(shù)據(jù)庫中存儲著各種服務(wù)對應(yīng)的端口號,比如說,HTTP服務(wù)對應(yīng)的端口號為80/tcp、FTP服務(wù)對應(yīng)的端口號為21/tcp等等,將該服務(wù)對應(yīng)的端口號、目標(biāo)網(wǎng)站的IP地址以及掃描的線程確定為端口掃描參數(shù),根據(jù)該端口掃描參數(shù)掃描目標(biāo)網(wǎng)站上與該端口掃描參數(shù)對應(yīng)的端口,從而判斷該端口是否開放。
掃描的具體過程包括:根據(jù)設(shè)定的端口掃描參數(shù),向目標(biāo)網(wǎng)站發(fā)起套接字(Socket)請求;根據(jù)目標(biāo)網(wǎng)站的響應(yīng)情況,確定與該端口掃描參數(shù)對應(yīng)的端口是否開放。
在本發(fā)明實(shí)施例中,對目標(biāo)網(wǎng)站進(jìn)行端口掃描采用的是基于傳輸控制協(xié)議(Transmission Control Protocol,TCP)協(xié)議的端口響應(yīng)掃描方式,當(dāng)設(shè)定了端口掃描參數(shù)后,根據(jù)設(shè)定的端口掃描參數(shù),向目標(biāo)網(wǎng)站發(fā)起Socket請求,根據(jù)網(wǎng)站的響應(yīng)情況,確定出該端口掃描參數(shù)對應(yīng)的端口是否開放,如果該端口掃描參數(shù)對應(yīng)的端口開放,則從目錄數(shù)據(jù)庫中查詢該開放端口對應(yīng)的目錄數(shù)據(jù)庫子集,采用HTTP響應(yīng)的方式對該目錄數(shù)據(jù)庫子集進(jìn)行目錄掃描,查找該目錄數(shù)據(jù)庫子集中的脆弱性目錄,該目錄數(shù)據(jù)庫子集中的脆弱性目錄就是該目標(biāo)網(wǎng)站對應(yīng)的脆弱性目錄。
當(dāng)確定出上述端口掃描參數(shù)對應(yīng)的端口沒有開放時,則執(zhí)行后續(xù)步驟。
上述可以先對目標(biāo)網(wǎng)站進(jìn)行端口掃描,再對目標(biāo)網(wǎng)站進(jìn)行WhatWeb掃描,也可以先對目標(biāo)網(wǎng)站進(jìn)行WhatWeb掃描,再對目標(biāo)網(wǎng)站進(jìn)行端口掃描,本發(fā)明實(shí)施例并不限定上述兩種掃描的具體順序,當(dāng)然,也可以只對目標(biāo)網(wǎng)站進(jìn)行端口掃描,或者只對目標(biāo)網(wǎng)站進(jìn)行WhatWeb掃描。
S120,獲取目標(biāo)網(wǎng)站的網(wǎng)站拓?fù)鋱D(Sitemap),在預(yù)先建立的目錄數(shù)據(jù)庫中查詢與該Sitemap相匹配的目錄數(shù)據(jù)庫子集。
上述獲取目標(biāo)網(wǎng)站的Sitemap,包括:確定目標(biāo)網(wǎng)站的爬蟲策略,該爬蟲策略包括爬取的目標(biāo)網(wǎng)站的目錄深度及優(yōu)先爬取目標(biāo)網(wǎng)站的目錄廣度;根據(jù)上述爬蟲策略獲取目標(biāo)網(wǎng)站的網(wǎng)站拓?fù)鋱D。
在本發(fā)明實(shí)施例中,采用網(wǎng)絡(luò)爬蟲技術(shù)獲取目標(biāo)網(wǎng)站的Sitemap,在采用網(wǎng)絡(luò)爬蟲技術(shù)獲取目標(biāo)網(wǎng)站的Sitemap之前,可以對目標(biāo)網(wǎng)站的網(wǎng)絡(luò)架構(gòu)進(jìn)行分析,確定目標(biāo)網(wǎng)站的目錄深度,將目標(biāo)網(wǎng)站的目錄深度確定為爬取的深度,或者,可以根據(jù)實(shí)際需要,將爬取的目錄深度設(shè)定為固定數(shù)值,比如說,將爬取的目錄深度設(shè)定為8,當(dāng)然,還可以是其它數(shù)值,本發(fā)明實(shí)施例并不限定上述爬取的目錄深度的具體數(shù)值,除此之外,還可以設(shè)置優(yōu)先進(jìn)行目錄廣度搜索,當(dāng)然,上述爬蟲策略還可以包括其它爬取條件,上述爬蟲策略可以根據(jù)實(shí)際需要進(jìn)行設(shè)置,本發(fā)明實(shí)施例并不限定上述爬蟲策略的具體內(nèi)容。
在爬取目標(biāo)網(wǎng)站的過程中,根據(jù)上述確定的爬蟲策略,采用廣度優(yōu)先算法(Breadth-First-Search,BFS)和深度優(yōu)先算法(Depth-First-Search,DFS)遍歷目標(biāo)網(wǎng)站上的每個子節(jié)點(diǎn),得到該目標(biāo)網(wǎng)站的Sitemap。
其中,上述預(yù)先建立的目錄數(shù)據(jù)庫中存儲有多個網(wǎng)站的目錄數(shù)據(jù),每個網(wǎng)站的目錄數(shù)據(jù)對應(yīng)一個目錄數(shù)據(jù)庫子集,或者還可以是一類網(wǎng)站對應(yīng)一個目錄數(shù)據(jù)庫子集,比如說,腳本語言相同的網(wǎng)站對應(yīng)一個目錄數(shù)據(jù)庫子集,本發(fā)明實(shí)施例并不限定目錄數(shù)據(jù)庫子集與網(wǎng)站的目錄數(shù)據(jù)的對應(yīng)關(guān)系。
當(dāng)獲取了目標(biāo)網(wǎng)站的Sitemap后,在預(yù)先建立的目錄數(shù)據(jù)庫中查詢與該Sitemap相匹配的目錄數(shù)據(jù)庫子集,具體過程包括:利用正則表達(dá)式將獲取的目標(biāo)網(wǎng)站的Sitemap與目錄數(shù)據(jù)庫中的各個目錄數(shù)據(jù)庫子集進(jìn)行匹配,得到與該目標(biāo)網(wǎng)站的Sitemap相匹配的目錄數(shù)據(jù)庫子集。
或者,還可以將目錄數(shù)據(jù)庫中的目錄數(shù)據(jù)庫子集轉(zhuǎn)換成目錄樹結(jié)構(gòu),采用克努特-莫里斯-普拉特(The Knuth-Morris-Pratt Algorithm,KMP)模式匹配算法將所述目標(biāo)網(wǎng)站的Sitemap與目錄數(shù)據(jù)庫中的目錄樹結(jié)構(gòu)進(jìn)行節(jié)點(diǎn)匹配,在目錄數(shù)據(jù)庫中選取與目標(biāo)網(wǎng)站的Sitemap的相似度大于或者等于預(yù)設(shè)值的目錄樹結(jié)構(gòu),將該目錄樹結(jié)構(gòu)對應(yīng)的目錄數(shù)據(jù)庫子集確定為與目標(biāo)網(wǎng)站的Sitemap相匹配的目錄數(shù)據(jù)庫子集。
其中,上述預(yù)設(shè)值為預(yù)先設(shè)置的一個數(shù)值,當(dāng)目錄數(shù)據(jù)庫中的目錄樹結(jié)構(gòu)的節(jié)點(diǎn)與目標(biāo)網(wǎng)站的Sitemap的節(jié)點(diǎn)的相似度大于或者等于該數(shù)值時,則判斷為該目錄樹結(jié)構(gòu)與該目標(biāo)網(wǎng)站相同或者相似,將該目錄樹結(jié)構(gòu)對應(yīng)的目錄樹子集確定為與該目標(biāo)網(wǎng)站相匹配的目錄數(shù)據(jù)庫子集,上述預(yù)設(shè)值可以根據(jù)實(shí)際情況進(jìn)行設(shè)置,本發(fā)明實(shí)施例并不限定上述預(yù)設(shè)值的具體數(shù)值。
上述目錄數(shù)據(jù)庫中的目錄樹結(jié)構(gòu)的節(jié)點(diǎn)與目標(biāo)網(wǎng)站的Sitemap的節(jié)點(diǎn)的相似度指的是與目標(biāo)網(wǎng)站的Sitemap的節(jié)點(diǎn)一致的節(jié)點(diǎn)與總節(jié)點(diǎn)的比值。
比如說,與目標(biāo)網(wǎng)站進(jìn)行匹配的目錄數(shù)結(jié)構(gòu)為三級目錄,第一級目錄為一個節(jié)點(diǎn),第二級目錄為兩個節(jié)點(diǎn),而第二級目錄的每個節(jié)點(diǎn)在第三級目錄上存在三個節(jié)點(diǎn),而目標(biāo)網(wǎng)站的Sitemap也存在三級目錄,第一級目錄為一個節(jié)點(diǎn),第二級目錄為兩個節(jié)點(diǎn),而第二級目錄的每個節(jié)點(diǎn)在第三級目錄上也存在三個節(jié)點(diǎn),這時,可以判斷為該目錄樹結(jié)構(gòu)與目標(biāo)網(wǎng)站的Sitemap相同,當(dāng)然,上述只是舉例說明進(jìn)行比較的具體過程,如果上述目錄樹結(jié)構(gòu)與目標(biāo)網(wǎng)站的Sitemap的節(jié)點(diǎn)并不是完全相同,而是存在一點(diǎn)的差異,也可以判斷為該目錄樹結(jié)構(gòu)與目標(biāo)網(wǎng)站相同或者相似,判斷為相同或者相似的具體條件可以根據(jù)實(shí)際情況進(jìn)行設(shè)置,本發(fā)明實(shí)施例并不限定判斷為相同或者相似的具體條件。
當(dāng)然,還可以通過其他方法在目錄數(shù)據(jù)庫中查詢與該Sitemap相匹配的目錄數(shù)據(jù)庫子集,本發(fā)明實(shí)施例并不限定上述查詢的具體方法。
S130,根據(jù)目標(biāo)網(wǎng)站的特征參數(shù),對目錄數(shù)據(jù)庫子集進(jìn)行篩選,得到與上述目標(biāo)網(wǎng)站的特征參數(shù)相符合的至少一個目錄數(shù)據(jù)庫子集。
在上述S110中獲取了目標(biāo)網(wǎng)站的特征參數(shù),在S120中查詢到了與目標(biāo)網(wǎng)站的Sitemap相匹配的目錄數(shù)據(jù)庫子集,接下來,根據(jù)S110中獲取的目標(biāo)網(wǎng)站的特征參數(shù),對步驟S120中得到的目錄數(shù)據(jù)庫子集進(jìn)行篩選,得到與目標(biāo)網(wǎng)站的特征參數(shù)相符合的目錄數(shù)據(jù)庫子集。
下面將以特征參數(shù)中的腳本語言為例介紹對目標(biāo)數(shù)據(jù)庫子集進(jìn)行篩選的具體過程,比如說,目標(biāo)網(wǎng)站的腳本語言為超文本預(yù)處理語言(Hypertext Preprocessor,PHP),則從上述目錄數(shù)據(jù)庫子集中篩選出腳本語言為PHP的目錄數(shù)據(jù)庫子集。
之后,再根據(jù)目標(biāo)網(wǎng)站的特征參數(shù)中的網(wǎng)站架構(gòu)、IP地址及域名分別對符合目標(biāo)網(wǎng)站的腳本語言的目錄數(shù)據(jù)庫子集進(jìn)行篩選,最終,得到與目標(biāo)網(wǎng)站的特征參數(shù)相符合的一個或多個目錄數(shù)據(jù)庫子集。
S140,根據(jù)上述至少一個目錄數(shù)據(jù)庫子集生成目標(biāo)網(wǎng)站的目錄字典,對該目錄字典進(jìn)行目錄掃描,查找目錄字典中的脆弱性目錄。
在本發(fā)明實(shí)施例中,將上述根據(jù)目標(biāo)網(wǎng)站的特征參數(shù)篩選后的至少一個目錄數(shù)據(jù)庫子集組成該目標(biāo)網(wǎng)站的目錄字典,采用基于HTTP響應(yīng)碼的目錄掃描技術(shù)對該目錄字典進(jìn)行目錄掃描,在進(jìn)行目錄掃描時,一般通過設(shè)定響應(yīng)碼,采用HTTP響應(yīng)的方式向該目錄字典發(fā)起目錄迭代請求,查找該目錄字典中的脆弱性目錄,該目錄字典中的脆弱性目錄即該目標(biāo)網(wǎng)站中的脆弱性目錄,當(dāng)查找到該目標(biāo)網(wǎng)站的脆弱性目錄后,則會顯示該脆弱性目錄的地址,之后對該目標(biāo)網(wǎng)站的架構(gòu)進(jìn)行調(diào)整,以提高該目標(biāo)網(wǎng)站的安全性。
其中,在采用基于HTTP響應(yīng)碼的目錄掃描技術(shù)進(jìn)行目錄掃描時,首先需要設(shè)定目標(biāo)網(wǎng)站的IP地址、進(jìn)行目錄掃描的線程總數(shù)、掃描的超時時間、響應(yīng)碼等參數(shù),之后發(fā)起HTTP目錄迭代請求,進(jìn)行目錄掃描,并記錄目錄掃描的狀態(tài),返回掃描到的目錄地址,并顯示。
如果,通過上述方式?jīng)]有查找到目標(biāo)網(wǎng)站的脆弱性目錄,則適當(dāng)放寬該目標(biāo)網(wǎng)站的目錄字典選取條件,比如說,在目錄數(shù)據(jù)庫中查詢與目標(biāo)網(wǎng)站的Sitemap相匹配的目錄數(shù)據(jù)庫子集時,可以將判斷相似度的預(yù)設(shè)值調(diào)小,當(dāng)然,還可以將目標(biāo)網(wǎng)站的某些特征參數(shù)的適當(dāng)放寬,或者減少一些特征參數(shù)的比對。
之后,在對適當(dāng)放寬目錄字典的選取條件后得到的目標(biāo)網(wǎng)站的目錄字典進(jìn)行目錄掃描,查找該目錄字典中的脆弱性目錄,查找到的該目錄字典中的脆弱性目錄則是該目標(biāo)網(wǎng)站的脆弱性目錄。
本發(fā)明實(shí)施例提供的脆弱性目錄查找方法,根據(jù)目標(biāo)網(wǎng)站的網(wǎng)站拓?fù)鋱D和特征參數(shù),從目錄數(shù)據(jù)庫中篩選與目標(biāo)網(wǎng)站的網(wǎng)站拓?fù)鋱D和特征參數(shù)相符合的目錄數(shù)據(jù)庫子集生成該目標(biāo)網(wǎng)站的目錄字典,并對該目錄字典進(jìn)行目錄掃描,查找該目錄字典中的脆弱性目錄,這樣,減少了目錄掃描的工作量,提高了脆弱性目錄查找的效率和速度。
實(shí)施例2
本發(fā)明實(shí)施例提供了一種脆弱性目錄查找裝置,如圖2所示,本發(fā)明實(shí)施例提供的裝置包括第一掃描模塊210、查詢模塊220、篩選模塊230及第一目錄掃描模塊240;
上述第一掃描模塊210,用于對目標(biāo)網(wǎng)站進(jìn)行掃描,當(dāng)確定目標(biāo)網(wǎng)站的CMS為開源CMS時,獲取目標(biāo)網(wǎng)站的特征參數(shù),該特征參數(shù)包括目標(biāo)網(wǎng)站的網(wǎng)站架構(gòu)、腳本語言、IP地址及域名;
上述查詢模塊220,用于獲取目標(biāo)網(wǎng)站的Sitemap,在預(yù)先建立的目錄數(shù)據(jù)庫中查詢與Sitemap匹配的目錄數(shù)據(jù)庫子集;
上述篩選模塊230,用于根據(jù)目標(biāo)網(wǎng)站的特征參數(shù),對目錄數(shù)據(jù)庫子集進(jìn)行篩選,得到與目標(biāo)網(wǎng)站的特征參數(shù)相符合的至少一個目錄數(shù)據(jù)庫子集;
上述第一目錄掃描模塊240,用于根據(jù)至少一個目錄數(shù)據(jù)庫子集生成目標(biāo)網(wǎng)站的目錄字典,對目錄字典進(jìn)行目錄掃描,查找目錄字典中的脆弱性目錄。
其中,在本發(fā)明實(shí)施例中在對查詢模塊220獲取目標(biāo)網(wǎng)站的Sitemap,在預(yù)先建立的目錄數(shù)據(jù)庫中查詢與Sitemap匹配的目錄數(shù)據(jù)庫子集之前,還需要對目標(biāo)網(wǎng)站進(jìn)行端口掃描,對目標(biāo)網(wǎng)站進(jìn)行端口掃描時通過第二掃描模塊和第二目錄掃描模塊實(shí)現(xiàn)的,具體包括:
上述第二掃描模塊,用于設(shè)定端口掃描參數(shù),根據(jù)端口掃描參數(shù)對目標(biāo)網(wǎng)站進(jìn)行端口掃描,確定端口掃描參數(shù)對應(yīng)的端口是否開放,上述端口掃描參數(shù)包括端口的端口號、掃描的目標(biāo)網(wǎng)站的IP地址及掃描的線程;上述第二目錄掃描模塊,用于當(dāng)確定端口掃描參數(shù)對應(yīng)的端口開放時,從目錄數(shù)據(jù)庫中查詢與上述端口相對應(yīng)的目錄數(shù)據(jù)庫子集,對目錄數(shù)據(jù)庫子集進(jìn)行目錄掃描,查找上述目標(biāo)網(wǎng)站的脆弱性目錄。
其中,上述第二掃描模塊根據(jù)端口掃描參數(shù)對目標(biāo)網(wǎng)站進(jìn)行端口掃描,確定端口掃描參數(shù)對應(yīng)的端口是否開放,是通過請求單元和第一確定單元實(shí)現(xiàn)的,具體包括:
上述請求單元,用于根據(jù)設(shè)定的端口掃描參數(shù),向目標(biāo)網(wǎng)站發(fā)起Socket請求;上述第一確定單元,用于根據(jù)目標(biāo)網(wǎng)站的響應(yīng)情況,確定與端口掃描參數(shù)對應(yīng)的端口是否開放。
其中,上述查詢模塊220獲取目標(biāo)網(wǎng)站的網(wǎng)站拓?fù)鋱D,是通過第二確定單元和獲取單元實(shí)現(xiàn)的,具體包括:
上述第二確定單元,用于確定目標(biāo)網(wǎng)站的爬蟲策略,該爬蟲策略包括爬取的目標(biāo)網(wǎng)站的目錄深度及優(yōu)先爬取目標(biāo)網(wǎng)站的目錄廣度;上述獲取單元,用于根據(jù)爬蟲策略獲取目標(biāo)網(wǎng)站的網(wǎng)站拓?fù)鋱D。
在本發(fā)明實(shí)施例中,采用網(wǎng)絡(luò)爬蟲技術(shù)獲取目標(biāo)網(wǎng)站的Sitemap,在采用網(wǎng)絡(luò)爬蟲技術(shù)獲取目標(biāo)網(wǎng)站的Sitemap之前,可以對目標(biāo)網(wǎng)站的網(wǎng)絡(luò)架構(gòu)進(jìn)行分析,確定目標(biāo)網(wǎng)站的目錄深度,將目標(biāo)網(wǎng)站的目錄深度確定為爬取的深度,或者,可以根據(jù)實(shí)際需要,將爬取的目錄深度設(shè)定為固定數(shù)值,比如說,將爬取的目錄深度設(shè)定為8,當(dāng)然,還可以是其它數(shù)值,本發(fā)明實(shí)施例并不限定上述爬取的目錄深度的具體數(shù)值,除此之外,還可以設(shè)置優(yōu)先進(jìn)行目錄廣度搜索,當(dāng)然,上述爬蟲策略還可以包括其它爬取條件,上述爬蟲策略可以根據(jù)實(shí)際需要進(jìn)行設(shè)置,本發(fā)明實(shí)施例并不限定上述爬蟲策略的具體內(nèi)容。
在爬取目標(biāo)網(wǎng)站的過程中,根據(jù)上述確定的爬蟲策略,采用廣度優(yōu)先算法(Breadth-First-Search,BFS)和深度優(yōu)先算法(Depth-First-Search,DFS)遍歷目標(biāo)網(wǎng)站上的每個子節(jié)點(diǎn),得到該目標(biāo)網(wǎng)站的Sitemap。
本發(fā)明實(shí)施例提供的脆弱性目錄查找裝置,根據(jù)目標(biāo)網(wǎng)站的網(wǎng)站拓?fù)鋱D和特征參數(shù),從目錄數(shù)據(jù)庫中篩選與目標(biāo)網(wǎng)站的網(wǎng)站拓?fù)鋱D和特征參數(shù)相符合的目錄數(shù)據(jù)庫子集生成該目標(biāo)網(wǎng)站的目錄字典,并對該目錄字典進(jìn)行目錄掃描,查找該目錄字典中的脆弱性目錄,這樣,減少了目錄掃描的工作量,提高了脆弱性目錄查找的效率和速度。
本發(fā)明實(shí)施例所提供的脆弱性目錄查找裝置可以為設(shè)備上的特定硬件或者安裝于設(shè)備上的軟件或固件等。本發(fā)明實(shí)施例所提供的裝置,其實(shí)現(xiàn)原理及產(chǎn)生的技術(shù)效果和前述方法實(shí)施例相同,為簡要描述,裝置實(shí)施例部分未提及之處,可參考前述方法實(shí)施例中相應(yīng)內(nèi)容。所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,前述描述的系統(tǒng)、裝置和單元的具體工作過程,均可以參考上述方法實(shí)施例中的對應(yīng)過程,在此不再贅述。
在本發(fā)明所提供的實(shí)施例中,應(yīng)該理解到,所揭露裝置和方法,可以通過其它的方式實(shí)現(xiàn)。以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時可以有另外的劃分方式,又例如,多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些通信接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明提供的實(shí)施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個單元中。
所述功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
應(yīng)注意到:相似的標(biāo)號和字母在下面的附圖中表示類似項(xiàng),因此,一旦某一項(xiàng)在一個附圖中被定義,則在隨后的附圖中不需要對其進(jìn)行進(jìn)一步定義和解釋,此外,術(shù)語“第一”、“第二”、“第三”等僅用于區(qū)分描述,而不能理解為指示或暗示相對重要性。
最后應(yīng)說明的是:以上所述實(shí)施例,僅為本發(fā)明的具體實(shí)施方式,用以說明本發(fā)明的技術(shù)方案,而非對其限制,本發(fā)明的保護(hù)范圍并不局限于此,盡管參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),其依然可以對前述實(shí)施例所記載的技術(shù)方案進(jìn)行修改或可輕易想到變化,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改、變化或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明實(shí)施例技術(shù)方案的精神和范圍。都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。