本發(fā)明涉及計算機安全技術(shù)領(lǐng)域,特別是涉及一種漏洞檢測方法和裝置。
背景技術(shù):
伴隨著移動互聯(lián)網(wǎng)的飛速發(fā)展,移動應(yīng)用也迅猛發(fā)展,出現(xiàn)了數(shù)量繁多、功能各異的移動應(yīng)用。然而,移動應(yīng)用的發(fā)展使得移動應(yīng)用面臨各種安全風險,目前的安全風險主要是在服務(wù)器端的漏洞,包括各種API(應(yīng)用程序編程接口)接口引發(fā)的WEB(網(wǎng)站)漏洞和服務(wù)器漏洞。惡意用戶利用這些漏洞可以獲取用戶隱私、釣魚欺詐,還可以入侵服務(wù)器以竊取核心源代碼或用戶數(shù)據(jù)庫等,危害極大。
目前可以通過數(shù)據(jù)包抓取工具來抓取網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)包,進而對抓取的數(shù)據(jù)包進行漏洞檢測,其中fiddler2工具就是一種常用的數(shù)據(jù)包抓取工具。然而,數(shù)據(jù)包抓取工具能夠抓取的數(shù)據(jù)包是局限的,比如一些需要用戶登錄后才能產(chǎn)生的數(shù)據(jù)包通過數(shù)據(jù)包抓取工具是抓取不到的。這樣根據(jù)抓取的數(shù)據(jù)包進行漏洞檢測所檢測出的漏洞也是局限的,能夠檢測出的漏洞較少,需要改進。
技術(shù)實現(xiàn)要素:
基于此,有必要針對目前的漏洞檢測方法所能夠檢測出的漏洞少的技術(shù)問題,提供一種漏洞檢測方法和裝置。
一種漏洞檢測方法,所述方法包括:
接收終端通過正向代理方式發(fā)送的用戶訪問網(wǎng)絡(luò)請求;
記錄所述用戶訪問網(wǎng)絡(luò)請求;
根據(jù)記錄的用戶訪問網(wǎng)絡(luò)請求生成漏洞檢測網(wǎng)絡(luò)請求;
將所述漏洞檢測網(wǎng)絡(luò)請求發(fā)送給所述用戶訪問網(wǎng)絡(luò)請求所對應(yīng)的待檢測服務(wù)器;
接收所述待檢測服務(wù)器根據(jù)所述漏洞檢測網(wǎng)絡(luò)請求所反饋的漏洞檢測響應(yīng) 信息;
檢測所述漏洞檢測響應(yīng)信息是否具有所述預設(shè)漏洞特征庫中的預設(shè)漏洞特征,獲得漏洞檢測結(jié)果。
一種漏洞檢測裝置,所述裝置包括:
請求接收模塊,用于接收終端通過正向代理方式發(fā)送的用戶訪問網(wǎng)絡(luò)請求;
記錄模塊,用于記錄所述用戶訪問網(wǎng)絡(luò)請求;
漏洞檢測網(wǎng)絡(luò)請求生成模塊,用于根據(jù)記錄的用戶訪問網(wǎng)絡(luò)請求生成漏洞檢測網(wǎng)絡(luò)請求;
請求發(fā)送模塊,用于將所述漏洞檢測網(wǎng)絡(luò)請求發(fā)送給所述用戶訪問網(wǎng)絡(luò)請求所對應(yīng)的待檢測服務(wù)器;
漏洞檢測響應(yīng)信息接收模塊,用于接收所述待檢測服務(wù)器根據(jù)所述漏洞檢測網(wǎng)絡(luò)請求所反饋的漏洞檢測響應(yīng)信息;
漏洞檢測模塊,用于檢測所述漏洞檢測響應(yīng)信息是否具有所述預設(shè)漏洞特征庫中的預設(shè)漏洞特征,獲得漏洞檢測結(jié)果。
上述漏洞檢測方法和裝置,使用終端的用戶可以通過終端進行各種操作從而產(chǎn)生各種用戶訪問網(wǎng)絡(luò)請求。接收終端通過正向代理方式發(fā)送的用戶訪問網(wǎng)絡(luò)請求并記錄,這樣就可以獲取到用戶在各種場景下產(chǎn)生的用戶訪問網(wǎng)絡(luò)請求。用于檢測漏洞的漏洞檢測網(wǎng)絡(luò)請求是根據(jù)用戶訪問網(wǎng)絡(luò)請求生成的,這樣可以借助用戶在各種場景下產(chǎn)生的用戶訪問網(wǎng)絡(luò)請求來進行漏洞檢測,避免了因需要用戶登錄而導致的無法進行漏洞檢測的情形,漏洞檢測的覆蓋率高。
附圖說明
圖1為一個實施例中漏洞檢測系統(tǒng)的應(yīng)用環(huán)境圖;
圖2為一個實施例中服務(wù)器的組成結(jié)構(gòu)示意圖;
圖3為另一個實施例中服務(wù)器的組成結(jié)構(gòu)示意圖;
圖4為一個實施例中漏洞檢測方法的流程示意圖;
圖5為一個實施例中終端的超文本傳輸協(xié)議代理配置頁面的示意圖;
圖6為一個實施例中漏洞檢測報告的示意圖;
圖7為一個實施例中漏洞檢測裝置的結(jié)構(gòu)框圖;
圖8為另一個實施例中漏洞檢測裝置的結(jié)構(gòu)框圖;
圖9為再一個實施例中漏洞檢測裝置的結(jié)構(gòu)框圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
如圖1所示,在一個實施例中,提供了一種漏洞檢測系統(tǒng)100,包括終端102和服務(wù)器104,終端102可通過服務(wù)器104訪問待檢測服務(wù)器110。在一個實施例中,終端102包括臺式計算機和移動終端,移動終端包括手機、平板電腦、智能手表以及電子閱讀器等。
在一個實施例中,服務(wù)器104的結(jié)構(gòu)如圖2所示,包括通過系統(tǒng)總線連接的處理器、內(nèi)存儲器、非易失性存儲介質(zhì)和網(wǎng)絡(luò)接口。該處理器具有計算的功能和控制整個服務(wù)器104運行的功能,該處理器被配置為執(zhí)行一種漏洞檢測方法。非易失性存儲介質(zhì)包括磁存儲介質(zhì)、光存儲介質(zhì)和閃存式的存儲介質(zhì)。該非易失性存儲介質(zhì)存儲有操作系統(tǒng)、數(shù)據(jù)庫和一種漏洞檢測裝置,該漏洞檢測裝置用于實現(xiàn)一種漏洞檢測方法。網(wǎng)絡(luò)接口用于在處理器指令下與終端102和待檢測服務(wù)器110通信。
如圖3所示,在一個實施例中,服務(wù)器104包括代理服務(wù)器104a、數(shù)據(jù)庫服務(wù)器104b和漏洞檢測服務(wù)器104c;漏洞檢測服務(wù)器104c可連接到待檢測服務(wù)器110。
如圖4所示,在一個實施例中,提供了一種漏洞檢測方法,本實施例以該方法應(yīng)用于上述圖3中的服務(wù)器104來舉例說明,可以理解該方法也可以在上述圖2中的服務(wù)器104上實現(xiàn)。該方法具體包括如下步驟:
步驟402,接收終端通過正向代理方式發(fā)送的用戶訪問網(wǎng)絡(luò)請求。
具體地,服務(wù)器104的代理服務(wù)器104a接收終端102通過正向代理方式發(fā)送的用戶訪問網(wǎng)絡(luò)請求。其中用戶訪問網(wǎng)絡(luò)請求是指用戶觸發(fā)的用來訪問目標服務(wù)器的網(wǎng)絡(luò)請求。網(wǎng)絡(luò)請求包括HTTP(HyperText Transfer Protocol,超文本傳輸協(xié)議)請求、HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer,基于安全套接字層的超文本傳輸協(xié)議)請求和FTP(File Transfer Protocol,文件傳輸協(xié)議)請求。在檢測漏洞時用戶訪問的目標服務(wù)器作為待檢測服務(wù)器。
其中,正向代理方式,是指終端102在訪問目標服務(wù)器時,通過代理服務(wù)器104a的中轉(zhuǎn)將用戶訪問網(wǎng)絡(luò)請求發(fā)送給目標服務(wù)器,并接收目標服務(wù)器根據(jù)用戶訪問網(wǎng)絡(luò)請求反饋的響應(yīng)信息,再將該響應(yīng)信息反饋給終端102。
在一個實施例中,該漏洞檢測方法還包括:終端102獲取在超文本傳輸協(xié)議代理配置頁面中輸入的代理服務(wù)器地址和代理端口,并根據(jù)代理服務(wù)器地址和代理端口創(chuàng)建正向代理方式的網(wǎng)絡(luò)連接。
具體地,終端102展示如圖5所示的超文本傳輸協(xié)議代理配置頁面,用戶在該超文本傳輸協(xié)議代理配置頁面中輸入的代理服務(wù)器地址為代理服務(wù)器104a的地址,輸入的代理端口為代理服務(wù)器104a所監(jiān)聽的端口。這樣終端102就可以根據(jù)代理服務(wù)器地址和代理端口創(chuàng)建與代理服務(wù)器104a的網(wǎng)絡(luò)連接,該網(wǎng)絡(luò)連接為正向代理方式的網(wǎng)絡(luò)連接。
步驟404,記錄用戶訪問網(wǎng)絡(luò)請求。
具體地,用戶訪問網(wǎng)絡(luò)請求攜帶有待檢測服務(wù)器的網(wǎng)絡(luò)地址,服務(wù)器104的代理服務(wù)器104a一方面將用戶訪問網(wǎng)絡(luò)請求轉(zhuǎn)發(fā)給待檢測服務(wù)器,另一方面將該用戶訪問網(wǎng)絡(luò)請求記錄下來。具體代理服務(wù)器104a將用戶訪問網(wǎng)絡(luò)請求記錄在服務(wù)器104的數(shù)據(jù)庫服務(wù)器104b中。在一個實施例中,服務(wù)器104可以日志形式記錄用戶訪問網(wǎng)絡(luò)請求。
步驟406,根據(jù)記錄的用戶訪問網(wǎng)絡(luò)請求生成漏洞檢測網(wǎng)絡(luò)請求。
具體地,服務(wù)器104的漏洞檢測服務(wù)器104c從數(shù)據(jù)庫服務(wù)器104b中讀取記錄的用戶訪問網(wǎng)絡(luò)請求,從而根據(jù)該記錄的用戶訪問網(wǎng)絡(luò)請求生成漏洞檢測網(wǎng)絡(luò)請求。具體服務(wù)器104的漏洞檢測服務(wù)器104c可將用于檢測漏洞的參數(shù)拼接到用戶訪問網(wǎng)絡(luò)請求后面構(gòu)成漏洞檢測網(wǎng)絡(luò)請求,也可以通過修改用戶訪問 網(wǎng)絡(luò)請求中的參數(shù)為用于檢測漏洞的參數(shù),從而獲得漏洞檢測網(wǎng)絡(luò)請求。漏洞檢測網(wǎng)絡(luò)請求是指用于檢測漏洞的網(wǎng)絡(luò)請求。
這里用于檢測漏洞的參數(shù)可以是窮舉所有的可選參數(shù),或者只選取可能引發(fā)漏洞的參數(shù)。用于檢測漏洞的參數(shù)是與預設(shè)漏洞特征庫中的預設(shè)漏洞特征對應(yīng)的。漏洞是在硬件、軟件、協(xié)議的具體實現(xiàn)或系統(tǒng)安全策略上存在的缺陷,從而可以使攻擊者能夠在未授權(quán)的情況下訪問或破壞系統(tǒng),比如任意文件下載漏洞、XSS(跨站腳本攻擊)漏洞、反射式XSS漏洞以及跳轉(zhuǎn)漏洞等。
步驟408,將漏洞檢測網(wǎng)絡(luò)請求發(fā)送給用戶訪問網(wǎng)絡(luò)請求所對應(yīng)的待檢測服務(wù)器。
具體地,用戶訪問網(wǎng)絡(luò)請求所對應(yīng)的待檢測服務(wù)器,是指用戶原本意圖訪問的目標服務(wù)器,在檢測漏洞時作為待檢測服務(wù)器。服務(wù)器104的漏洞檢測服務(wù)器104c將漏洞檢測網(wǎng)絡(luò)請求發(fā)送給待檢測服務(wù)器。
步驟410,接收待檢測服務(wù)器根據(jù)漏洞檢測網(wǎng)絡(luò)請求所反饋的漏洞檢測響應(yīng)信息。
具體地,服務(wù)器104的漏洞檢測服務(wù)器104c接收待檢測服務(wù)器根據(jù)漏洞檢測網(wǎng)絡(luò)請求所反饋的漏洞檢測響應(yīng)信息。漏洞檢測響應(yīng)信息是指漏洞檢測網(wǎng)絡(luò)請求所對應(yīng)的響應(yīng)信息。
步驟412,檢測漏洞檢測響應(yīng)信息是否具有預設(shè)漏洞特征庫中的預設(shè)漏洞特征,獲得漏洞檢測結(jié)果。
服務(wù)器104的漏洞檢測服務(wù)器104c檢測漏洞檢測響應(yīng)信息是否具有預設(shè)漏洞特征庫中的預設(shè)漏洞特征,若具有預設(shè)漏洞特征則判定存在漏洞,若不具有預設(shè)漏洞特征則判定不存在漏洞。具體地,預設(shè)漏洞特征可以為正則表達式的形式,這樣可以在漏洞檢測響應(yīng)信息中查找與該正則表達式形式的預設(shè)漏洞特征匹配的字符或者字符串,若查找到則說明存在漏洞,若查找不到說明不存在漏洞。
舉例說明,若記錄的用戶訪問網(wǎng)絡(luò)請求為“http://www.abc123456.com/download.PHP?filename=”,在其后拼接用于檢測漏洞的參數(shù),獲得漏洞檢測網(wǎng)絡(luò)請求為“http://www.abc123456.com/download.PHP?filename=../../../../../../../../../.. /etc/passwd”。將漏洞檢測網(wǎng)絡(luò)請求發(fā)送給用戶訪問網(wǎng)絡(luò)請求所對應(yīng)的待檢測服務(wù)器,并接收到待檢測服務(wù)器根據(jù)漏洞檢測網(wǎng)絡(luò)請求所反饋的漏洞檢測響應(yīng)信息的具體內(nèi)容(body部分)如下:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/false
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/false
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System(admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
Debian-exim:x:101:103::/var/spool/exim4:/bin/false
statd:x:102:65534::/var/lib/nfs:/bin/false
sshd:x:103:65534::/var/run/sshd:/usr/sbin/nologin
ntp:x:104:106::/home/ntp:/bin/false
mysql:x:105:108:MySQL Server,,,:/var/lib/mysql:/bin/false
san:x:1000:1000:,,,:/home/san:/bin/bash
puppet:x:106:109:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false
sim:x:1001:1002::/home/sim:/bin/sh
somesecguy:x:1002:0::/home/somesecguy:/bin/bash
john:x:1003:1003::/home/john:/bin/sh
若預設(shè)漏洞特征庫中的一個預設(shè)漏洞特征用于檢測任意文件下載漏洞,則預設(shè)漏洞特征可用正則表達式表示為:((root|bin|daemon|sys|sync|games|man|mail|news|www-data|uucp|backup|list|proxy|gnats|nobody|syslog|mysql|bind|ftp|sshd|postfix):[\d\w-\s,]+:\d+:\d+:[\w-_\s,]*:[\w-_\s,/]*:[\w-_,/]*[\r\n])。該正則表達式中,“|”表示邏輯或運算,“\d”表示匹配數(shù)字,“\w”表示匹配字母或數(shù)字或下劃線或漢字,“\s”表示匹配任意的空白符,“-”表示連接符,“+”表示將其之前的字符重復一次或多次進行匹配,“/”表示字符“/”,“*”表示匹配其前面的子表達式零次或多次,\r表示匹配一個回車符,\n表示匹配一個換行符。若在響應(yīng)信息的具體內(nèi)容中找到與上述正則表達式匹配的字符串,則可以判定存在任意文件下載漏洞,若找不到匹配的字符串,則可以判定不存在任意文件下載漏洞。檢測不同的漏洞可以采用不同的正則表達式,這里不一一贅述。
上述漏洞檢測方法,使用終端的用戶可以通過終端進行各種操作從而產(chǎn)生各種用戶訪問網(wǎng)絡(luò)請求。接收終端通過正向代理方式發(fā)送的用戶訪問網(wǎng)絡(luò)請求并記錄,這樣就可以獲取到用戶在各種場景下產(chǎn)生的用戶訪問網(wǎng)絡(luò)請求。用于檢測漏洞的漏洞檢測網(wǎng)絡(luò)請求是根據(jù)用戶訪問網(wǎng)絡(luò)請求生成的,這樣可以借助用戶在各種場景下產(chǎn)生的用戶訪問網(wǎng)絡(luò)請求來進行漏洞檢測,避免了因需要用戶登錄而導致的無法進行漏洞檢測的情形,漏洞檢測的覆蓋率高。
在一個實施例中,在步驟406之前還包括:對記錄的用戶訪問網(wǎng)絡(luò)請求進行去重處理;和/或,從記錄的用戶訪問網(wǎng)絡(luò)請求中過濾掉用于請求靜態(tài)內(nèi)容的用戶訪問網(wǎng)絡(luò)請求。
具體地,去重處理是指去除重復的用戶訪問網(wǎng)絡(luò)請求。靜態(tài)內(nèi)容是指可以直接獲取的內(nèi)容,不需要執(zhí)行ASP(Active Server Page,動態(tài)服務(wù)器頁面)、PHP(Hypertext Preprocessor,超文本預處理器)或者JSP(Java Server Pages,java 服務(wù)器頁面)等服務(wù)器程序來生成。在一個實施例中,靜態(tài)內(nèi)容包括:圖片、文本文檔、HTML(超文本標記語言)靜態(tài)頁面以及媒體文件。
本實施例中,對記錄的用戶訪問網(wǎng)絡(luò)請求進行去重處理,可以提高檢測漏洞的效率。而且由于靜態(tài)內(nèi)容一般不會引發(fā)漏洞,過濾掉這部分用戶訪問網(wǎng)絡(luò)請求也可以提高檢測漏洞的效率。
在一個實施例中,用于請求靜態(tài)內(nèi)容的用戶訪問網(wǎng)絡(luò)請求,包括:所攜帶的動態(tài)內(nèi)容參數(shù)個數(shù)為0的用戶訪問網(wǎng)絡(luò)請求,具體地,用于請求靜態(tài)內(nèi)容的用戶訪問網(wǎng)絡(luò)請求的網(wǎng)址一般不含有“?”、“=”、“&”等動態(tài)內(nèi)容參數(shù)。當用戶訪問網(wǎng)絡(luò)請求不攜帶有這些動態(tài)內(nèi)容參數(shù)時,可認為是用于請求靜態(tài)內(nèi)容的用戶訪問網(wǎng)絡(luò)請求。
在一個實施例中,用于請求靜態(tài)內(nèi)容的用戶訪問網(wǎng)絡(luò)請求,包括:所請求的文件的擴展名包括靜態(tài)文件擴展名的用戶訪問網(wǎng)絡(luò)請求。本實施例中,通過匹配擴展名可以快速區(qū)分出用于請求靜態(tài)內(nèi)容的用戶訪問網(wǎng)絡(luò)請求,可以進一步提高檢測漏洞的效率。
具體地,靜態(tài)文件擴展名包括圖片的擴展名、文本文檔的擴展名、HTML靜態(tài)頁面的擴展名以及媒體文件的擴展名。其中,圖片的擴展名包括jpeg、png、gif以及ico等;文本文檔的擴展名包括doc、pdf、txt以及xls等;HTML靜態(tài)頁面的擴展名包括css、js或者html等;媒體文件的擴展名包括mpeg、mp3、avi、flv、swf以及wma等。
在一個實施例中,可以從記錄的用戶訪問網(wǎng)絡(luò)請求中查找與靜態(tài)文件擴展名所對應(yīng)的正則表達式匹配的字符串,若查找到相應(yīng)的字符串則過濾掉該用戶訪問網(wǎng)絡(luò)請求。其中圖片的擴展名所對應(yīng)的正則表達式可為:"\.(?:(?:jpe?|pn)g|gif|ico)$";文本文檔的擴展名所對應(yīng)的正則表達式可為:"\.(?:doc|pdf|txt|xls)$";HTML靜態(tài)頁面的擴展名所對應(yīng)的正則表達式可為:"\.(?:(?:cs|j)s|html?)$";媒體文件的擴展名所對應(yīng)的正則表達式可為:"\.(?:mp(?:e?g|3)|avi|flv|swf|wma)$"。這里“\.”表示匹配字符“.”,“(?:pattern)”表示匹配模式pattern但不獲取具體的匹配結(jié)果,“$”表示匹配輸入字符串的結(jié)束位置。
在一個實施例中,服務(wù)器104向終端102提供正向代理服務(wù),需要事先進行配置,這里以Apache(一種服務(wù)器軟件),版本為2.4.2為例說明配置方式,具體如下:
1),開啟Apache的代理模塊
修改Apache的主程序配置文件httpd.conf,修改如下。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so。
上述對主程序配置文件httpd.conf的修改中,LoadModule表示加載模塊的命令,LoadModule proxy_module modules/mod_proxy.so,表示加載文件位置為modules/mod_proxy.so的模塊標識為proxy_module的模塊,模塊標識可以唯一標識出一個模塊。Apache中的一個模塊是指可以獨立存在并在需要時通過加載方式結(jié)合到目標系統(tǒng)中的一種數(shù)據(jù)對象。.so是共享函數(shù)庫的擴展名。
mod_proxy.so是代理基礎(chǔ)服務(wù)模塊,mod_proxy_connect是用于支持connect命令的代理子模塊,connect命令的作用就是把服務(wù)器104作為中轉(zhuǎn),讓服務(wù)器104代替用戶去訪問其它網(wǎng)頁,之后把數(shù)據(jù)原原本本的返回給用戶,proxy_ftp.so是用于支持FTP的代理子模塊,mod_proxy_http.so是用于支持HTTP的代理子模塊。
這樣配置完成后,服務(wù)器104提供的代理服務(wù)支持connect命令,并支持FTP和HTTP,兼容性強。
2),調(diào)用虛擬機配置文件httpd-vhosts.conf:
Include conf/extra/httpd-vhosts.conf。
3),加載SSL(Secure Sockets Layer,安全套接層)模塊:
LoadModule ssl_module modules/mod_ssl.so。
其中,加載mod_ssl.so獲得SSL模塊,這樣服務(wù)器104可以支持基于HTTPS的用戶訪問網(wǎng)絡(luò)請求。
4),加載安全防護模塊mod_security,并調(diào)用安全防護配置文件 mod_security.conf。
LoadModule security2_modules modules/mod_security2.so
Include conf/mod_security.conf。
其中,加載mod_security2.so獲得安全防護模塊,本實施例的漏洞檢測方法主要利用安全防護模塊的日志記錄功能,后續(xù)將對該安全防護模塊進行配置。
5),配置虛擬機配置文件httpd-vhosts.conf,具體配置以及注釋如下:
<VirtualHost*:8882>#配置監(jiān)聽端口為8882。
DocumentRoot"/usr/local/apache/htdocs"#配置文件根目錄。
CustomLog logs/test8882-access_log common#配置日志文件的文件名和格式。
<IfModule mod_proxy.c>
ProxyRequests On#配置為開啟正向代理方式。
<Proxy*>
Order deny,allow
Allow from all#配置用戶訪問控制信息,這里配置為允許所有用戶訪問,也可以根據(jù)需要配置為限定允許部分用戶訪問,比如Allow from 110.110.110.110,表示配置為只允許IP地址為110.110.110.110的用戶訪問。
</Proxy>
6),配置安全防護配置文件mod_security.conf,具體配置如下:
SecRuleEngine DetectionOnly
SecRequestBodyAccess On
SecResponseBodyAccess On
SecAuditEngine RelevantOnly
SecAuditLogRelevantStatus“^(?:5|2|3|4(?!04))”
SecAuditLogParts ABC
SecAuditLog/usr/local/apache/logs/audit.log
SecAuditLogType Serial
其中,安全規(guī)則處理配置命令SecRuleEngine用于配置對于安全規(guī)則的處理, 若配置為On(開啟),表示處理安全規(guī)則;若配置為Off(關(guān)閉),表示不處理安全規(guī)則;若配置為DetectionOnly(僅檢查),表示處理安全規(guī)則,但不開啟防護。這里由于僅利用安全防護模塊的日志功能,配置為DetectionOnly。
請求體檢查配置命令SecRequestBodyAccess用于配置是否檢查用戶訪問網(wǎng)絡(luò)請求的請求體。網(wǎng)絡(luò)請求包括請求頭和請求體,請求體是指請求的具體內(nèi)容。這里配置為On,表示需要檢查用戶訪問網(wǎng)絡(luò)請求的請求體。
響應(yīng)內(nèi)容檢查配置命令SecResponseBodyAccess用于配置是否檢查用戶訪問網(wǎng)絡(luò)請求所對應(yīng)的響應(yīng)信息的響應(yīng)內(nèi)容。響應(yīng)信息包括響應(yīng)頭和相應(yīng)內(nèi)容。這里配置為On,表示需要檢查用戶訪問網(wǎng)絡(luò)請求所對應(yīng)的響應(yīng)信息的響應(yīng)內(nèi)容。
日志引擎配置命令SecAuditEngine用于配置日志引擎的開啟與否。若配置為On,表示記錄所有事務(wù)的日志;配置為Off,表示不記錄所有事務(wù)的日志;配置為RelevantOnly,表示只記錄事務(wù)中因警告(warning)或者錯誤(error)觸發(fā)的日志,或者記錄一些特定的狀態(tài)碼對應(yīng)的日志。這里配置為RelevantOnly,用于記錄與漏洞檢測相關(guān)的日志。
日志相關(guān)響應(yīng)狀態(tài)碼配置命令SecAuditLogRelevantStatus用于配置哪些響應(yīng)狀態(tài)碼與記錄的日志的目的密切相關(guān),配置為一個正則表達式:“^(?:5|2|3|4(?!04))”,表示匹配每一個以5開頭的響應(yīng)狀態(tài)碼(表示服務(wù)器錯誤)、以2開頭的響應(yīng)狀態(tài)碼(200,表示請求成功)、以3開頭的響應(yīng)狀態(tài)碼(表示目錄限制)或者除了404的響應(yīng)狀態(tài)碼(表示用戶錯誤)的用戶訪問網(wǎng)絡(luò)請求都會被記錄。這“^”表示匹配輸入字符串的開始位置?!??!pattern)”表示正向否定預查,在任何不匹配pattern的字符串開始處匹配查找字符串,例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。
日志內(nèi)容配置命令SecAuditLogParts用于配置每個事務(wù)中記錄到日志中的部分。每部分以一個獨立的字母表示,當某個字母出現(xiàn)在列表中,也就是指每個事務(wù)中的該部分會被記錄。這里配置為ABC,A表示記錄日志的標題,包括用戶訪問網(wǎng)絡(luò)請求的基礎(chǔ)信息,該基礎(chǔ)信息包括:請求時間、請求源地址、請求端口、目的地址以及目的端口。B表示記錄用戶訪問網(wǎng)絡(luò)請求的標題,包括用 戶訪問網(wǎng)絡(luò)請求的請求頭中除去基礎(chǔ)信息之后的全部或者部分信息。C表示記錄用戶訪問網(wǎng)絡(luò)請求的請求體,比如post(HTTP中用于傳輸數(shù)據(jù)的命令)或者get(HTTP中用于獲取數(shù)據(jù)的命令)的具體內(nèi)容。
舉例說明,以日志形式記錄的用戶訪問網(wǎng)絡(luò)請求可記錄如下:
--3b2488z6-A--(日志的標題)
[20/Mar/2015:11:45:49 +0700]Gi3FfBJR87wBBA63D5HAAAEF 110.110.11 0.110 8882 101.227.143.34 80
--3b2488z6-B--(用戶訪問網(wǎng)絡(luò)請求的標題)
POST/mp/appmsgreport?action=page_time&uin=MTA3***&key=************&pass_ticket=*********HTTP/1.1
Host:mp.*****.**.com
Accept-Language:zh-cn
User-Agent:Mozilla/5.0(iPhone;CPU iPhone OS 8_1_3 like Mac OS X)AppleWebKit/600.1.4(KHTML,like Gecko)Mobile/12B466 MicroMessenger/6.1.1 NetType/WIFI
X-Requested-With:XMLHttpRequest
Accept:*/*
Referer:https://mp.*****.**.com/s?__biz=MjM5NjExMjcwMA==&mid=206315928&idx=4&sn=*********&key=*********&ascene=1&uin=MTA3***&devicetype=iPhone+OS8.1.3&version=16010112&nettype=WIFI&fontScale=100&pass_ticket=************
Content-Type:application/x-www-form-urlencoded;charset=UTF-8
Connection:keep-alive
Cookie:3g_guest_id=-***;g_ut=3;lskey=00010000a27b45b83e1d***;luin=o0***;pgv_info=ssid=s913***;pgv_pvi=7672***;pgv_pvid=4907***;pt2gguin=o000***;ptcz=***;ptisp=ctc;RK=Y(jié)J***;sd_cookie_crttime=1426676796369;sd_userid=507014***;skey=@SN***;uin=o00***
Proxy-Connection:keep-alive
Content-Length:599
Origin:https://mp.*****.**.com
Accept-Encoding:gzip,deflate
--3b2488z6-C--(用戶訪問網(wǎng)絡(luò)請求的請求體)
__biz=MjM5NjExMjcwMA%3D%3D&title=%E3%80%90%E5%B0%8FQ%E6%92%AD%E6%8A%A5%E3%80%912015QQ%E9%9F%B3%E4%B9%90%E5%B9%B4%E5%BA%A6%E7%9B%9B%E5%85%B8%E9%97%A8%E7%A5%A8%E9%99%90%E9%87%8F%E5%BC%80%E6%8A%A2%EF%BC%81&mid=206315928&idx=4&read_cnt=174&like_cnt=1&screen_height=504&screen_num=6&video_cnt=0&img_cnt=0&read_screen_num=6&is_finished_read=1&scene=&content_len=30881&start_time=1427080987224&end_time=1427081042724&img_640_cnt=3&img_0_cnt=0&img_300_cnt=0&wtime=0&ftime=0&ptime=0&wifi_all_imgs_cnt=3&wifi_read_imgs_cnt=2&download_cdn_webp_img_cnt=0&download_img_cnt=3&download_cdn_img_cnt=3&img_jpeg_cnt=2。
日志路徑配置命令SecAuditLog用于配置日志的文件路徑。日志記錄方式配置命令SecAuditLogType用于配置記錄日志的方式,這里配置為Serial,表示所有的日志條目都被存儲在主日志記錄文件中,調(diào)用很方便。
上述基于Apache的漏洞檢測方法,可以通過調(diào)整預設(shè)漏洞特征庫來靈活調(diào)整漏洞檢測規(guī)則,而不需要編寫專門的插件。可支持HTTPS,輸出的漏洞檢測報告可讀性強、對運行平臺沒有限制,可以跨平臺部署??苫谟涗浀挠脩粼L問網(wǎng)絡(luò)請求進行多線程分布式檢測,漏洞檢測效率將顯著提高??芍苯硬渴鹪诜?wù)器104,支持多用戶,擴展性強,易接入。
在一個實施例中,在步驟402之前,還包括:讀取第一配置文件中的第一配置信息;則步驟402具體包括:根據(jù)第一配置信息接收終端通過正向代理方式發(fā)送的用戶訪問網(wǎng)絡(luò)請求。其中,第一配置信息包括:監(jiān)聽端口、正向代理開關(guān)信息以及用戶訪問控制信息;監(jiān)聽端口為終端所設(shè)置的代理端口,正向代理開關(guān)信息為開啟。
具體地,第一配置文件可包括上述虛擬機配置文件。服務(wù)器104配置監(jiān)聽 端口,移動終端配置代理端口為該監(jiān)聽端口,服務(wù)器104將監(jiān)聽通過該端口的用戶訪問網(wǎng)絡(luò)請求。正向代理開關(guān)信息用于表示是否開啟正向代理方式。用戶訪問控制信息用于對用戶進行訪問控制。
本實施例中,根據(jù)第一配置信息提供正向代理服務(wù),從而接收終端通過正向代理方式發(fā)送的用戶訪問網(wǎng)絡(luò)請求。
在一個實施例中,步驟404包括:讀取第二配置文件中的第二配置信息,根據(jù)第二配置信息,以日志形式記錄用戶訪問網(wǎng)絡(luò)請求。第二配置信息包括:配置為在檢測到用戶訪問網(wǎng)絡(luò)請求命中安全規(guī)則時,以日志形式記錄用戶訪問網(wǎng)絡(luò)請求的配置信息;和/或,配置為在檢測到用戶訪問網(wǎng)絡(luò)請求所對應(yīng)的響應(yīng)狀態(tài)碼為漏洞相關(guān)響應(yīng)狀態(tài)碼時,以日志形式記錄用戶訪問網(wǎng)絡(luò)請求的配置信息。
具體地,第二配置文件可包括上述安全防護配置文件。安全規(guī)則是指用來識別出有可能觸發(fā)漏洞的用戶訪問網(wǎng)絡(luò)請求的識別條件。安全規(guī)則可以用正則表達式表示,此時若從用戶訪問網(wǎng)絡(luò)請求中查找到與安全規(guī)則的正則表達式匹配的字符串,則表示命中該安全規(guī)則。比如安全規(guī)則可以是用戶訪問網(wǎng)絡(luò)請求具有觸發(fā)漏洞的能力的參數(shù)或者函數(shù)。
漏洞相關(guān)響應(yīng)狀態(tài)碼,是指用于觸發(fā)該漏洞相關(guān)響應(yīng)狀態(tài)碼的用戶訪問網(wǎng)絡(luò)請求具有觸發(fā)漏洞的能力,認為該狀態(tài)響應(yīng)碼是與漏洞相關(guān)的。漏洞相關(guān)響應(yīng)狀態(tài)碼比如上述以5開頭的響應(yīng)狀態(tài)碼、以2開頭的響應(yīng)狀態(tài)碼、以3開頭的響應(yīng)狀態(tài)碼或者除了404的響應(yīng)狀態(tài)碼。
本實施例中,在檢測到用戶訪問網(wǎng)絡(luò)請求命中安全規(guī)則時,或者在檢測到用戶訪問網(wǎng)絡(luò)請求所對應(yīng)的響應(yīng)狀態(tài)碼為漏洞相關(guān)響應(yīng)狀態(tài)碼時,以日志形式記錄用戶訪問網(wǎng)絡(luò)請求,這樣可以選擇性地記錄有可能觸發(fā)漏洞的用戶訪問網(wǎng)絡(luò)請求進行記錄,可以進一步提高漏洞檢測的效率。
在一個實施例中,在步驟404之后,還包括:根據(jù)記錄的用戶訪問網(wǎng)絡(luò)請求形成待檢測列表中的條目并顯示,每個條目包括用戶訪問網(wǎng)絡(luò)請求的URL(統(tǒng)一資源定位符)、請求的網(wǎng)絡(luò)地址、請求體、提交檢測狀態(tài)以及條目插入時間。在執(zhí)行步驟406時,更新待檢測列表中相應(yīng)的用戶訪問網(wǎng)絡(luò)請求對應(yīng)的條目的 提交檢測狀態(tài)。比如待檢測列表可如表一所示:
表一:
在一個實施例中,該漏洞檢測方法還包括:根據(jù)漏洞檢測結(jié)果生成漏洞處理列表中的條目并顯示,每個條目包括:請求的域名或者網(wǎng)絡(luò)地址、檢測漏洞的事件名稱、條目處理狀態(tài)、條目插入時間、檢測的漏洞類型以及風險等級。在漏洞被修復后,更新相應(yīng)條目中的條目處理狀態(tài),并添加處理完成時間和漏洞屬性。
其中,檢測漏洞的事件名稱用來說明檢測時間的簡要信息,條目處理狀態(tài)用來表示相應(yīng)的條目是否被處理,檢測的漏洞類型比如文件包含漏洞、管理后臺漏洞、跳轉(zhuǎn)漏洞、XXS漏洞、SQL注入漏洞或者測試頁面未刪除漏洞等,漏洞屬性表示該漏洞是否有威脅。
危險等級可以分為三個等級,即高危險等級、中危險等級以及低危險等級。其中高危險等級對應(yīng)直接獲取服務(wù)器權(quán)限的漏洞、直接導致嚴重的信息泄漏漏洞、直接導致嚴重影響的邏輯漏洞、直接盜取用戶身份信息的漏洞以及服務(wù)器越權(quán)訪問漏洞。其中直接獲取服務(wù)器權(quán)限的漏洞包括任意命令執(zhí)行漏洞、上傳webshell(一種命令執(zhí)行環(huán)境)和任意代碼執(zhí)行漏洞。直接導致嚴重的信息泄漏漏洞包括重要數(shù)據(jù)庫的SQL注入漏洞。直接導致嚴重影響的邏輯漏洞包括任意帳號密碼更改漏洞。直接盜取用戶身份信息的漏洞包括非重要數(shù)據(jù)庫的SQL注入漏洞。服務(wù)器越權(quán)訪問漏洞包括繞過認證訪問服務(wù)器的漏洞。
中危險等級對應(yīng)需交互才能獲取用戶身份信息的漏洞、任意文件操作漏洞和文件越權(quán)訪問漏洞。需交互才能獲取用戶身份信息的漏洞包括存儲型XSS漏洞,任意文件操作漏洞包括任意文件讀、寫、刪除、下載等操作的漏洞,文件 越權(quán)訪問漏洞包括繞過限制修改用戶資料、執(zhí)行用戶操作。
低危險等級則對應(yīng)普通邏輯漏洞和需交互才能獲取用戶身份信息并且有一定利用難度的漏洞。普通邏輯漏洞包括提交操作無限制的漏洞,需交互才能獲取用戶身份信息并且有一定利用難度的漏洞包括反射型XSS漏洞。
舉例說明,漏洞檢測列表可如表二所示:
表二:
在一個實施例中,該漏洞檢測方法還包括:根據(jù)漏洞檢測結(jié)果生成按照請求的訪問的站點歸類的漏洞檢測報告。漏洞檢測報告可以包括:站點標識、用戶訪問請求提交人信息、漏洞檢測開始時間、漏洞檢測結(jié)束時間、檢測到的漏洞總數(shù)、站點風險等級、風險評分、漏洞關(guān)注人信息、漏洞處理進度以及漏洞詳細信息。漏洞詳細信息包括漏洞的風險等級、漏洞類型以及引發(fā)漏洞的URL。站點風險等級以及站點評分可以根據(jù)對應(yīng)的漏洞的風險等級和/或漏洞數(shù)量來確定。舉例來說,漏洞檢測報告可如圖6所示。
在具體的應(yīng)用場景中,移動應(yīng)用的測試用戶可以在移動終端上配置代理服務(wù)器和代理端口,創(chuàng)建正向代理方式的網(wǎng)絡(luò)連接,連接到服務(wù)器104。這樣測試用戶可以在移動終端上正常使用和測試移動應(yīng)用,服務(wù)器104將測試用戶觸發(fā)的用戶訪問網(wǎng)絡(luò)請求代理轉(zhuǎn)發(fā)給待檢測服務(wù)器110的同時,將完整的用戶訪問網(wǎng)絡(luò)請求以日志形式記錄下來,然后就可以根據(jù)記錄的用戶訪問網(wǎng)絡(luò)請求對待檢測服務(wù)器110進行漏洞檢測。然后可以形成漏洞檢測報告,通知移動應(yīng)用開發(fā)人員及時修復漏洞。
如圖7所示,在一個實施例中,提供了一種漏洞檢測裝置700,具有實現(xiàn)上述各個實施例的漏洞檢測方法的功能。該漏洞檢測裝置700包括:請求接收模塊701、記錄模塊702、漏洞檢測網(wǎng)絡(luò)請求生成模塊703、請求發(fā)送模塊704、漏洞檢測響應(yīng)信息接收模塊705和漏洞檢測模塊706。
請求接收模塊701,用于接收終端通過正向代理方式發(fā)送的用戶訪問網(wǎng)絡(luò)請求。
具體地,請求接收模塊701可用于接收終端102通過正向代理方式發(fā)送的用戶訪問網(wǎng)絡(luò)請求。其中用戶訪問網(wǎng)絡(luò)請求是指用戶觸發(fā)的用來訪問目標服務(wù)器的網(wǎng)絡(luò)請求。網(wǎng)絡(luò)請求包括HTTP請求、HTTPS請求和FTP請求。在檢測漏洞時用戶訪問的目標服務(wù)器作為待檢測服務(wù)器。
記錄模塊702,用于記錄用戶訪問網(wǎng)絡(luò)請求。
具體地,用戶訪問網(wǎng)絡(luò)請求攜帶有待檢測服務(wù)器的網(wǎng)絡(luò)地址,漏洞檢測裝置700的代理模塊(圖中未示出)用于將用戶訪問網(wǎng)絡(luò)請求轉(zhuǎn)發(fā)給待檢測服務(wù)器,記錄模塊702用于將該用戶訪問網(wǎng)絡(luò)請求記錄下來。在一個實施例中,記錄模塊702可用于以日志形式記錄用戶訪問網(wǎng)絡(luò)請求。
漏洞檢測網(wǎng)絡(luò)請求生成模塊703,用于根據(jù)記錄的用戶訪問網(wǎng)絡(luò)請求生成漏洞檢測網(wǎng)絡(luò)請求。
具體地,漏洞檢測網(wǎng)絡(luò)請求生成模塊703用于讀取記錄的用戶訪問網(wǎng)絡(luò)請求,從而根據(jù)該記錄的用戶訪問網(wǎng)絡(luò)請求生成漏洞檢測網(wǎng)絡(luò)請求。具體漏洞檢測網(wǎng)絡(luò)請求生成模塊703可用于將用于檢測漏洞的參數(shù)拼接到用戶訪問網(wǎng)絡(luò)請求后面構(gòu)成漏洞檢測網(wǎng)絡(luò)請求,也可以用于通過修改用戶訪問網(wǎng)絡(luò)請求中的參數(shù)為用于檢測漏洞的參數(shù),從而獲得漏洞檢測網(wǎng)絡(luò)請求。漏洞檢測網(wǎng)絡(luò)請求是指用于檢測漏洞的網(wǎng)絡(luò)請求。這里用于檢測漏洞的參數(shù)可以是窮舉所有的可選參數(shù),或者只選取可能引發(fā)漏洞的參數(shù)。用于檢測漏洞的參數(shù)是與預設(shè)漏洞特征庫中的預設(shè)漏洞特征對應(yīng)的。
請求發(fā)送模塊704,用于將漏洞檢測網(wǎng)絡(luò)請求發(fā)送給用戶訪問網(wǎng)絡(luò)請求所對應(yīng)的待檢測服務(wù)器。具體地,用戶訪問網(wǎng)絡(luò)請求所對應(yīng)的待檢測服務(wù)器,是指 用戶原本意圖訪問的目標服務(wù)器,在檢測漏洞時作為待檢測服務(wù)器。
漏洞檢測響應(yīng)信息接收模塊705,用于接收待檢測服務(wù)器根據(jù)漏洞檢測網(wǎng)絡(luò)請求所反饋的漏洞檢測響應(yīng)信息。其中,漏洞檢測響應(yīng)信息是指漏洞檢測網(wǎng)絡(luò)請求所對應(yīng)的響應(yīng)信息。
漏洞檢測模塊706,用于檢測漏洞檢測響應(yīng)信息是否具有預設(shè)漏洞特征庫中的預設(shè)漏洞特征,獲得漏洞檢測結(jié)果。
漏洞檢測模塊706可用于檢測漏洞檢測響應(yīng)信息是否具有預設(shè)漏洞特征庫中的預設(shè)漏洞特征,若具有預設(shè)漏洞特征則判定存在漏洞,若不具有預設(shè)漏洞特征則判定不存在漏洞。具體地,預設(shè)漏洞特征可以為正則表達式的形式,這樣可以在漏洞檢測響應(yīng)信息中查找與該正則表達式形式的預設(shè)漏洞特征匹配的字符或者字符串,若查找到則說明存在漏洞,若查找不到說明不存在漏洞。
在一個實施例中,終端102用于獲取在超文本傳輸協(xié)議代理配置頁面中輸入的代理服務(wù)器地址和代理端口,并根據(jù)代理服務(wù)器地址和代理端口創(chuàng)建正向代理方式的網(wǎng)絡(luò)連接。
具體地,終端102展示如圖5所示的超文本傳輸協(xié)議代理配置頁面,用戶在該超文本傳輸協(xié)議代理配置頁面中輸入的代理服務(wù)器地址為代理服務(wù)器104a的地址,輸入的代理端口為代理服務(wù)器104a所監(jiān)聽的端口。這樣終端102就可以根據(jù)代理服務(wù)器地址和代理端口創(chuàng)建正向代理方式的網(wǎng)絡(luò)連接。
如圖8所示,在一個實施例中,漏洞檢測裝置700還包括:去重處理模塊707和/或過濾模塊708。
去重處理模塊707用于對記錄的用戶訪問網(wǎng)絡(luò)請求進行去重處理。具體地,去重處理是指去除重復的用戶訪問網(wǎng)絡(luò)請求。
過濾模塊708用于從記錄的用戶訪問網(wǎng)絡(luò)請求中過濾掉用于請求靜態(tài)內(nèi)容的用戶訪問網(wǎng)絡(luò)請求。靜態(tài)內(nèi)容是指可以直接獲取的內(nèi)容,不需要執(zhí)行ASP、PHP或者JSP等服務(wù)器程序來生成。在一個實施例中,靜態(tài)內(nèi)容包括:圖片、文本文檔、HTML靜態(tài)頁面以及媒體文件。
本實施例中,對記錄的用戶訪問網(wǎng)絡(luò)請求進行去重處理,可以提高檢測漏洞的效率。而且由于靜態(tài)內(nèi)容一般不會引發(fā)漏洞,過濾掉這部分用戶訪問網(wǎng)絡(luò) 請求也可以提高檢測漏洞的效率。
在一個實施例中,用于請求靜態(tài)內(nèi)容的用戶訪問網(wǎng)絡(luò)請求,包括:所攜帶的動態(tài)內(nèi)容參數(shù)個數(shù)為0的用戶訪問網(wǎng)絡(luò)請求,具體地,用于請求靜態(tài)內(nèi)容的用戶訪問網(wǎng)絡(luò)請求的網(wǎng)址一般不含有“?”、“=”、“&”等動態(tài)內(nèi)容參數(shù)。當用戶訪問網(wǎng)絡(luò)請求不攜帶有這些動態(tài)內(nèi)容參數(shù)時,可認為是用于請求靜態(tài)內(nèi)容的用戶訪問網(wǎng)絡(luò)請求。
在一個實施例中,用于請求靜態(tài)內(nèi)容的用戶訪問網(wǎng)絡(luò)請求,包括:所請求的文件的擴展名包括靜態(tài)文件擴展名的用戶訪問網(wǎng)絡(luò)請求。本實施例中,通過匹配擴展名可以快速區(qū)分出用于請求靜態(tài)內(nèi)容的用戶訪問網(wǎng)絡(luò)請求,可以進一步提高檢測漏洞的效率。
具體地,靜態(tài)文件擴展名包括圖片的擴展名、文本文檔的擴展名、HTML靜態(tài)頁面的擴展名以及媒體文件的擴展名。其中,圖片的擴展名包括jpeg、png、gif以及ico等;文本文檔的擴展名包括doc、pdf、txt以及xls等;HTML靜態(tài)頁面的擴展名包括css、js或者html等;媒體文件的擴展名包括mpeg、mp3、avi、flv、swf以及wma等。
在一個實施例中,可以從記錄的用戶訪問網(wǎng)絡(luò)請求中查找與靜態(tài)文件擴展名所對應(yīng)的正則表達式匹配的字符串,若查找到相應(yīng)的字符串則過濾掉該用戶訪問網(wǎng)絡(luò)請求。其中圖片的擴展名所對應(yīng)的正則表達式可為:"\.(?:(?:jpe?|pn)g|gif|ico)$";文本文檔的擴展名所對應(yīng)的正則表達式可為:"\.(?:doc|pdf|txt|xls)$";HTML靜態(tài)頁面的擴展名所對應(yīng)的正則表達式可為:"\.(?:(?:cs|j)s|html?)$";媒體文件的擴展名所對應(yīng)的正則表達式可為:"\.(?:mp(?:e?g|3)|avi|flv|swf|wma)$"。這里“\.”表示匹配字符“.”,“(?:pattern)”表示匹配模式pattern但不獲取具體的匹配結(jié)果,“$”表示匹配輸入字符串的結(jié)束位置。
在一個實施例中,漏洞檢測裝置700還包括代理模塊,代理模塊至少包括代理基礎(chǔ)服務(wù)模塊,還可以包括用于支持connect命令的代理子模塊、用于支持FTP的代理子模塊、用于支持HTTP的代理子模塊以及SSL模塊中的至少一種。本實施例中記錄模塊702可用具有日志記錄功能的安全防護模塊實現(xiàn)。
如圖9所示,在一個實施例中,漏洞檢測裝置700還包括:第一配置信息讀取模塊709,用于讀取第一配置文件中的第一配置信息;第一配置信息包括:監(jiān)聽端口、正向代理開關(guān)信息以及用戶訪問控制信息;監(jiān)聽端口為終端所設(shè)置的代理端口,正向代理開關(guān)信息為開啟。請求接收模塊701還用于根據(jù)第一配置信息接收終端通過正向代理方式發(fā)送的用戶訪問網(wǎng)絡(luò)請求。
在一個實施例中,記錄模塊702還用于讀取第二配置文件中的第二配置信息,根據(jù)第二配置信息,以日志形式記錄用戶訪問網(wǎng)絡(luò)請求;第二配置信息包括:配置為在檢測到用戶訪問網(wǎng)絡(luò)請求命中安全規(guī)則時,以日志形式記錄用戶訪問網(wǎng)絡(luò)請求的配置信息;和/或,配置為在檢測到用戶訪問網(wǎng)絡(luò)請求所對應(yīng)的響應(yīng)狀態(tài)碼為漏洞相關(guān)響應(yīng)狀態(tài)碼時,以日志形式記錄用戶訪問網(wǎng)絡(luò)請求的配置信息。
具體地,第二配置文件可包括上述安全防護配置文件。安全規(guī)則是指用來識別出有可能觸發(fā)漏洞的用戶訪問網(wǎng)絡(luò)請求的識別條件。安全規(guī)則可以用正則表達式表示,此時若從用戶訪問網(wǎng)絡(luò)請求中查找到與安全規(guī)則的正則表達式匹配的字符串,則表示命中該安全規(guī)則。比如安全規(guī)則可以是用戶訪問網(wǎng)絡(luò)請求具有觸發(fā)漏洞的能力的參數(shù)或者函數(shù)。
漏洞相關(guān)響應(yīng)狀態(tài)碼,是指用于觸發(fā)該漏洞相關(guān)響應(yīng)狀態(tài)碼的用戶訪問網(wǎng)絡(luò)請求具有觸發(fā)漏洞的能力,認為該狀態(tài)響應(yīng)碼是與漏洞相關(guān)的。漏洞相關(guān)響應(yīng)狀態(tài)碼比如上述以5開頭的響應(yīng)狀態(tài)碼、以2開頭的響應(yīng)狀態(tài)碼、以3開頭的響應(yīng)狀態(tài)碼或者除了404的響應(yīng)狀態(tài)碼。
本實施例中,在檢測到用戶訪問網(wǎng)絡(luò)請求命中安全規(guī)則時,或者在檢測到用戶訪問網(wǎng)絡(luò)請求所對應(yīng)的響應(yīng)狀態(tài)碼為漏洞相關(guān)響應(yīng)狀態(tài)碼時,以日志形式記錄用戶訪問網(wǎng)絡(luò)請求,這樣可以選擇性地記錄有可能觸發(fā)漏洞的用戶訪問網(wǎng)絡(luò)請求進行記錄,可以進一步提高漏洞檢測的效率。
上述漏洞檢測裝置700,使用終端的用戶可以通過終端進行各種操作從而產(chǎn)生各種用戶訪問網(wǎng)絡(luò)請求。接收終端通過正向代理方式發(fā)送的用戶訪問網(wǎng)絡(luò)請求并記錄,這樣就可以獲取到用戶在各種場景下產(chǎn)生的用戶訪問網(wǎng)絡(luò)請求。用于檢測漏洞的漏洞檢測網(wǎng)絡(luò)請求是根據(jù)用戶訪問網(wǎng)絡(luò)請求生成的,這樣可以借 助用戶在各種場景下產(chǎn)生的用戶訪問網(wǎng)絡(luò)請求來進行漏洞檢測,避免了因需要用戶登錄而導致的無法進行漏洞檢測的情形,漏洞檢測的覆蓋率高。
在一個實施例中,漏洞檢測裝置700還包括用于根據(jù)記錄的用戶訪問網(wǎng)絡(luò)請求形成待檢測列表中的條目并顯示、且在根據(jù)記錄的用戶訪問網(wǎng)絡(luò)請求生成漏洞檢測網(wǎng)絡(luò)請求時更新待檢測列表中相應(yīng)的用戶訪問網(wǎng)絡(luò)請求對應(yīng)的條目的提交檢測狀態(tài)的模塊。待檢測列表中的每個條目包括用戶訪問網(wǎng)絡(luò)請求的URL、請求的網(wǎng)絡(luò)地址、請求體、提交檢測狀態(tài)以及條目插入時間。
在一個實施例中,漏洞檢測裝置700還包括用于根據(jù)漏洞檢測結(jié)果生成漏洞處理列表中的條目并顯示、在漏洞被修復后,更新相應(yīng)條目中的條目處理狀態(tài),并添加處理完成時間和漏洞屬性的模塊。漏洞處理列表中的每個條目包括:請求的域名或者網(wǎng)絡(luò)地址、檢測漏洞的事件名稱、條目處理狀態(tài)、條目插入時間、檢測的漏洞類型以及風險等級。
其中,檢測漏洞的事件名稱用來說明檢測時間的簡要信息,條目處理狀態(tài)用來表示相應(yīng)的條目是否被處理,檢測的漏洞類型比如文件包含漏洞、管理后臺漏洞、跳轉(zhuǎn)漏洞、XXS漏洞、SQL注入漏洞或者測試頁面未刪除漏洞等,漏洞屬性表示該漏洞是否有威脅。
危險等級可以分為三個等級,即高危險等級、中危險等級以及低危險等級。其中高危險等級對應(yīng)直接獲取服務(wù)器權(quán)限的漏洞、直接導致嚴重的信息泄漏漏洞、直接導致嚴重影響的邏輯漏洞、直接盜取用戶身份信息的漏洞以及服務(wù)器越權(quán)訪問漏洞。其中直接獲取服務(wù)器權(quán)限的漏洞包括任意命令執(zhí)行漏洞、上傳webshell和任意代碼執(zhí)行漏洞。直接導致嚴重的信息泄漏漏洞包括重要數(shù)據(jù)庫的SQL注入漏洞。直接導致嚴重影響的邏輯漏洞包括任意帳號密碼更改漏洞。直接盜取用戶身份信息的漏洞包括非重要數(shù)據(jù)庫的SQL注入漏洞。服務(wù)器越權(quán)訪問漏洞包括繞過認證訪問服務(wù)器的漏洞。
中危險等級對應(yīng)需交互才能獲取用戶身份信息的漏洞、任意文件操作漏洞和文件越權(quán)訪問漏洞。需交互才能獲取用戶身份信息的漏洞包括存儲型XSS漏洞,任意文件操作漏洞包括任意文件讀、寫、刪除、下載等操作的漏洞,文件越權(quán)訪問漏洞包括繞過限制修改用戶資料、執(zhí)行用戶操作。
低危險等級則對應(yīng)普通邏輯漏洞和需交互才能獲取用戶身份信息并且有一定利用難度的漏洞。普通邏輯漏洞包括提交操作無限制的漏洞,需交互才能獲取用戶身份信息并且有一定利用難度的漏洞包括反射型XSS漏洞。
在一個實施例中,漏洞檢測裝置700還包括用于根據(jù)漏洞檢測結(jié)果生成按照請求的訪問的站點歸類的漏洞檢測報告的模塊。漏洞檢測報告可以包括:站點標識、用戶訪問請求提交人信息、漏洞檢測開始時間、漏洞檢測結(jié)束時間、檢測到的漏洞總數(shù)、站點風險等級、風險評分、漏洞關(guān)注人信息、漏洞處理進度以及漏洞詳細信息。漏洞詳細信息包括漏洞的風險等級、漏洞類型以及引發(fā)漏洞的URL。站點風險等級以及站點評分可以根據(jù)對應(yīng)的漏洞的風險等級和/或漏洞數(shù)量來確定。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory,ROM)等非易失性存儲介質(zhì),或隨機存儲記憶體(Random Access Memory,RAM)等。
以上所述實施例的各技術(shù)特征可以進行任意的組合,為使描述簡潔,未對上述實施例中的各個技術(shù)特征所有可能的組合都進行描述,然而,只要這些技術(shù)特征的組合不存在矛盾,都應(yīng)當認為是本說明書記載的范圍。
以上所述實施例僅表達了本發(fā)明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對發(fā)明專利范圍的限制。應(yīng)當指出的是,對于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保護范圍。因此,本發(fā)明專利的保護范圍應(yīng)以所附權(quán)利要求為準。