Web安全測(cè)試點(diǎn)
隨著因特網(wǎng)的不斷發(fā)展,人們對(duì)網(wǎng)絡(luò)的使用越來越頻繁,通過網(wǎng)絡(luò)進(jìn)行購物、支付等其他業(yè)務(wù)操作。而一個(gè)潛在的問題是網(wǎng)絡(luò)的安全性如何保證,一些黑客利用站點(diǎn)安全性的漏洞來竊取用戶的信息,使用戶的個(gè)人信息泄漏,所以站點(diǎn)的安全性變得很重要。
Web 系統(tǒng)的安全性測(cè)試包括以下內(nèi)容:
(1)Web 漏洞掃描
(2)服務(wù)器端信息測(cè)試
(3)文件和目錄測(cè)試
(4)認(rèn)證測(cè)試
(5)會(huì)話管理測(cè)試
(6)權(quán)限管理測(cè)試
(7)文件上傳下載測(cè)試
(8)信息泄漏測(cè)試
(9)輸入數(shù)據(jù)測(cè)試
(10)跨站腳本攻擊測(cè)試
(11)邏輯測(cè)試
(12)搜索引擎信息測(cè)試
(13)Web Service 測(cè)試
(14)其他測(cè)試
下面是Web漏洞掃描和服務(wù)器端信息測(cè)試內(nèi)容:
第一點(diǎn):Web 漏洞掃描
由于開發(fā)和設(shè)計(jì)的原因,可能導(dǎo)致Web 系統(tǒng)存在漏洞,在測(cè)試過程中可以使用一些自動(dòng)化掃描工具對(duì)Web 系統(tǒng)的漏洞進(jìn)行掃描。但自動(dòng)化掃描工具只能檢測(cè)到部分常見的漏洞(如跨站腳本、SQL 注入等),不是針對(duì)用戶代碼的,也不能掃描業(yè)務(wù)邏輯,無法對(duì)這些漏洞做進(jìn)一步業(yè)務(wù)上的判斷。而往往最嚴(yán)重的安全問題并不是常見的漏洞,而是通過這些漏洞針對(duì)業(yè)務(wù)邏輯和應(yīng)用的攻擊。
Web 目前分為Application 和Web Service 兩部分。Application 指通常意義上的Web 應(yīng)用;而Web Service 是一種面向服務(wù)的架構(gòu)技術(shù),通過標(biāo)準(zhǔn)的Web 協(xié)議(如HTTP、XML、SOAP、WSDL)提供服務(wù)。
現(xiàn)在市場(chǎng)上Web 漏洞掃描的工具比較多,如WebInspect、N-Stalker、Acunetix Web Vulnerability Scanner、Rational AppScan 等。
第二點(diǎn):服務(wù)器端信息測(cè)試
服務(wù)器端信息測(cè)試主要是從服務(wù)器對(duì)客戶端開發(fā)的信息角度來測(cè)試服務(wù)器被攻擊的可能性,以及被攻擊的難易程度。主要需要測(cè)試以下幾方面的信息:
1、服務(wù)器允許運(yùn)行賬號(hào)權(quán)限測(cè)試
2、Web 服務(wù)器端口測(cè)試
3、Web 服務(wù)器版本信息測(cè)試
4、HTTP 方法測(cè)試
5、HTTP DELETE 方法測(cè)試
6、HTTP PUT 方法測(cè)試
7、HTTP TRACE 方法測(cè)試
8、HTTP MOVE 方法測(cè)試
9、HTTP COPY 方法測(cè)試
(1)服務(wù)器允許運(yùn)行賬號(hào)權(quán)限測(cè)試
一般地,運(yùn)行Web 服務(wù)器所在的操作系統(tǒng)所開放的賬號(hào)權(quán)限越高,那么Web 服務(wù)器遭到攻擊的可能性越大,并且產(chǎn)生的危害也越大。因此,不應(yīng)使用Root、Administrator 等特權(quán)賬號(hào)或高級(jí)別權(quán)限的操作系統(tǒng)賬號(hào)來運(yùn)行Web 系統(tǒng),應(yīng)該盡可能地使用低級(jí)別權(quán)限的操作系統(tǒng)賬號(hào),以此降低Web 服務(wù)器被攻擊的風(fēng)險(xiǎn)。
測(cè)試時(shí)登錄Web 服務(wù)器操作系統(tǒng),查看運(yùn)行Web 服務(wù)器的操作系統(tǒng)賬號(hào),確定操作系統(tǒng)的賬號(hào)是否為Root、Administrator 等特權(quán)賬號(hào)或高級(jí)別權(quán)限賬號(hào),如果是,則存在漏洞。
對(duì)于Windows 操作系統(tǒng):打開Windows 任務(wù)管理器,選擇“進(jìn)程”選項(xiàng)卡,選中“顯示所有用戶的進(jìn)程”復(fù)選框,檢查運(yùn)行Web 服務(wù)器的賬號(hào)。
對(duì)UNIX 或Linux 系統(tǒng):運(yùn)行“ps–ef|grep java”命令,返回結(jié)果第一列的操作系統(tǒng)用戶就是運(yùn)行Web 服務(wù)器的賬號(hào)。例如以下運(yùn)行信息:
root 4035 4010 0 17:13 pts/2 00:00:00 grep java
(2)Web 服務(wù)器端口測(cè)試
有時(shí)Web 服務(wù)器除業(yè)務(wù)端口外還會(huì)開放一些默認(rèn)端口(如JBoss 開放的8083),這些默認(rèn)端口對(duì)最終用戶是不需要開放的,而且也不會(huì)維護(hù),容易被攻擊,本測(cè)試的目的在于發(fā)現(xiàn)服務(wù)器上未使用的Web 端口。
可以使用端口掃描工具對(duì)Web 服務(wù)器域名或IP 地址(如IP 地址為192.168.1.103)進(jìn)行掃描,檢查未開放業(yè)務(wù)不需要使用的Web 服務(wù)端口。常用的端口掃描工具有NetScanTools、WinScan、SuperScan、NTOScanner、WUPS、NmapNT 和Winfingerprint。
(3)Web 服務(wù)器版本信息測(cè)試
為了防止黑客攻擊,在很多情況下,通過獲取Banner 的信息可以獲取HTTP 指紋識(shí)別方法。通常會(huì)將Web 服務(wù)器的信息進(jìn)行隱藏或者通過配置、增加插件來更改或模糊服務(wù)器的Banner 信息。
HTTP 指紋識(shí)別現(xiàn)在已經(jīng)成為應(yīng)用程序安全中一個(gè)新興的話題,指紋識(shí)別可以分為兩步:一是對(duì)指紋進(jìn)行收集和分類;二是將未知的指紋同被存儲(chǔ)在數(shù)據(jù)庫中的指紋進(jìn)行比較,從而找出最符合的指紋。
操作系統(tǒng)指紋識(shí)別在網(wǎng)絡(luò)評(píng)估中是一件常見的工作,現(xiàn)在已有很多操作系統(tǒng)指紋識(shí)別技術(shù),操作系統(tǒng)指紋識(shí)別為什么能成功呢?因?yàn)槊總€(gè)操作系統(tǒng)實(shí)現(xiàn)TCP/IP 協(xié)議時(shí)有微小的差別,當(dāng)前比較流行的是利用TCP/IP 堆棧進(jìn)行操作系統(tǒng)識(shí)別。
HTTP 指紋識(shí)別的原理大致也是如此,記錄不同服務(wù)器對(duì)HTTP 協(xié)議執(zhí)行中的微小差別進(jìn)行識(shí)別,HTTP 指紋識(shí)別比TCP/IP 堆棧指紋識(shí)別復(fù)雜許多,因?yàn)槎ㄖ?/span>HTTP 服務(wù)器的配置文件、增加插件或組件使得更改HTTP 的響應(yīng)信息變得更復(fù)雜。
在測(cè)試過程中可以使用一些工具進(jìn)行滲透測(cè)試,來獲取Web 服務(wù)器的相關(guān)版本信息。Httprint就是一個(gè)Web 服務(wù)器指紋工具,通過該工具可以對(duì)Web 服務(wù)器進(jìn)行滲透測(cè)試。盡管可以通過改變服務(wù)器的旗幟字符串(server bannerstrings),或通過類似mod_security或servermask的插件混淆事實(shí),但Httprint 工具依然可以依賴Web 服務(wù)器的特點(diǎn)去準(zhǔn)確地識(shí)別Web 服務(wù)器。Httprint 也可用于檢測(cè)沒有服務(wù)器旗幟字符串的網(wǎng)絡(luò)功能設(shè)備,如無線接入點(diǎn)、路由器、交換機(jī)、電纜調(diào)制解調(diào)器等。
運(yùn)行Httprint_gui.exe,在Host 列中輸入主機(jī)域名(如果沒有域名則輸入IP 地址),在端口列中輸入端口號(hào)。如果為HTTPS,則要選擇鎖圖標(biāo)列的復(fù)選框,如圖12-8 所示
單擊程序下方的運(yùn)行按鈕,查看相關(guān)報(bào)告,確定報(bào)告中是否存在Web 服務(wù)器準(zhǔn)確的版本信息,如圖12-9 所示
(4)HTTP 方法測(cè)試
HTTP 方法測(cè)試主要是測(cè)試HTTP 開發(fā)的方法,有些Web 服務(wù)器默認(rèn)情況下開放了一些不必要的HTTP 方法(如DELETE、PUT、TRACE、MOVE、COPY),這樣就增加了受攻擊面。
HTTP 請(qǐng)求常見的方法有(所有的方法必須為大寫):GET、POST、HEAD、PUT、DELETE、TRACE、CONNECT 和OPTIONS,詳細(xì)見表12-7
HTTP 方法測(cè)試的步驟如下:
第一步:單擊“開始”→“運(yùn)行”命令,輸入cmd 命令后按Enter 鍵,運(yùn)行cmd.exe。
第二步:輸入命令“telnet IP 端口”(其中IP 和端口按實(shí)際情況填寫,用空格隔開,如telnet 192.168.1.3 80)。
第三步:按Enter 鍵。
第四步:在新行中輸入命令OPTIONS /HTTP/1.1,然后按Enter 鍵。
第五步:觀察返回結(jié)果中Allow 的方法列表。
返回結(jié)果樣例:
http/1.1 200 OK
server: Apache-Coyote/1.1
X-Powered-By: Servlet 2.4; JBoss-4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)/Tomcat-5.5
Allow: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS
Content-Length: 0
Date: Mon, 29 Jun 2009 08:02:47 GMT
Connection: close
如果返回結(jié)果中包含不安全的HTTP 方法(如DELETE、PUT、TRACE、MOVE、COPY),
則驗(yàn)證對(duì)這些方法的防范措施是否可用,如果方法可用則說明存在漏洞,測(cè)試無法通過。
備注:由于不同的Web 服務(wù)器支持的HTTP 協(xié)議版本不同,如果系統(tǒng)不支持HTTP/1.0,那么第四步返回“HTTP/1.0 400 Bad Request”,這種情況下,應(yīng)該更改第四步的輸入行為OPTIONS / HTTP/1.0。
(5)HTTP DELETE 方法測(cè)試
如果Web 服務(wù)器開放了DELETE 方法,那么攻擊者能夠通過該方法刪除Web 服務(wù)器上的文件,所以需要測(cè)試通過DELETE 方法是否能將服務(wù)器上的文件刪除。DELETE 方法測(cè)試步驟如下:
在測(cè)試前先在Web 網(wǎng)站上創(chuàng)建一個(gè)文件(如test.txt)。
第一步:單擊“開始”→“運(yùn)行”命令,輸入cmd 命令后按Enter 鍵,運(yùn)行cmd.exe。
第二步:輸入命令“telnet IP 端口”(其中IP 和端口按實(shí)際情況填寫,用空格隔開,如telnet 192.168.1.3 80),并按Enter 鍵。
第三步:在新行中輸入命令DELETE /test.txt HTTP/1.0,然后按Enter 鍵。
第四步:查看服務(wù)器上的test.txt 文件是否被刪除。
該文件不能被刪除,如果被刪除,說明Web 服務(wù)存在風(fēng)險(xiǎn).
說明:由于不同的Web 服務(wù)器支持的HTTP 協(xié)議版本不同,如果系統(tǒng)不支持HTTP/1.0,
那么第三步返回“HTTP/1.0 400 Bad Request”,這種情況下,應(yīng)該更改第三步的輸
入行為DELETE /index.jsp HTTP/1.1。
(6)HTTP PUT 方法測(cè)試
如果Web 服務(wù)器開放了PUT 方法,那么攻擊者能夠通過該方法上傳任意文件到Web 服務(wù)器的一些目錄中,包括一些Web 木馬程序。測(cè)試時(shí)可以使用測(cè)試工具來模擬上傳文件,對(duì)服務(wù)器可寫權(quán)限進(jìn)行測(cè)試。IIS PUT Scaner 為一款檢測(cè)服務(wù)器可寫漏洞的工具,通過IIS PUT Scaner 工具檢測(cè)的步驟如下:
第一步:運(yùn)行IIS PUT Scaner 程序(假設(shè)已經(jīng)安裝該工具)。
第二步:在Start IP 和End IP 輸入框中輸入Web 服務(wù)器的IP 地址,在Port 輸入框中輸入對(duì)應(yīng)
的端口,選中復(fù)選框Try to upload file 和Try on other systems,如圖12-10 所示
第三步:查看結(jié)果,PUT 欄中的值不能為YES,如果是且Update File 欄中的值為ok,說明文件可以被上傳到服務(wù)器。同時(shí)查看Web 服務(wù)器中沒有新創(chuàng)建的文件(如上傳test.txt 文件),并且通過http://IP/test.txt請(qǐng)求不到該文件。
(7)HTTP TRACE 方法測(cè)試
如果Web 服務(wù)器開放了TRACE 方法(主要用于客戶端通過向Web 服務(wù)器提交TRACE 請(qǐng)求來進(jìn)行測(cè)試或獲得診斷信息),攻擊者能夠通過該方法進(jìn)行跨站攻擊。
跨站腳本攻擊(Cross Site Script Execution,XSS)是指入侵者在遠(yuǎn)程Web 頁面的HTML 代碼中插入具有惡意目的的數(shù)據(jù),用戶認(rèn)為該頁面是可信賴的,但是當(dāng)瀏覽器下載該頁面時(shí),嵌入其中的腳本將被解釋執(zhí)行。由于HTML 語言允許使用腳本進(jìn)行簡單交互,入侵者便通過技術(shù)手段在某個(gè)頁面里插入一個(gè)惡意HTML 代碼,例如記錄論壇保存的用戶信息(Cookie),由于Cookie 保存了完整的用戶名和密碼資料,用戶就會(huì)遭受安全損失。如JavaScript腳本語句aler(t document.cookie)就能輕易獲取用戶信息,它會(huì)彈出一個(gè)包含用戶信息的消息框,入侵者運(yùn)用腳本就能把用戶信息發(fā)送到他們自己的記錄頁面中,稍作分析便可以獲取用戶的敏感信息。
HTTP TRACE 方法測(cè)試的步驟如下:
第一步:單擊“開始”→“運(yùn)行”命令,輸入cmd 命令后Enter 車鍵,運(yùn)行cmd.exe。
第二步:輸入命令“telnet IP 端口”(其中IP 和端口按實(shí)際情況填寫,用空格隔開,如telnet 192.168.1.3 80),然后按Enter 鍵。
第三步:在新行中輸入TRACE/HTTP/1.0 命令,然后按Enter 鍵。
第四步:觀察返回的結(jié)果信息,Web 服務(wù)器返回的信息提示TRACE 方法“not allowed”。
備注:由于不同的Web 服務(wù)器支持的HTTP 協(xié)議版本不同,如果系統(tǒng)不支持HTTP/1.0,
那么第三步返回“HTTP/1.0 400 Bad Request”,這種情況下,應(yīng)該更改第三步的輸
入行為TRACE / HTTP/1.1。
(8)HTTP MOVE 方法測(cè)試
如果Web 服務(wù)器開放了MOVE 方法,用于請(qǐng)求服務(wù)器將指定的頁面移到另一個(gè)網(wǎng)絡(luò)地址,該方法不安全,容易被利用。
HTTP MOVE 方法測(cè)試的步驟如下:
第一步:單擊“開始”→“運(yùn)行”命令,輸入cmd 命令然后按Enter 鍵,運(yùn)行cmd.exe。
第二步:輸入命令“telnet IP 端口”(其中IP 和端口按實(shí)際情況填寫,用空格隔開,如telnet 192.168.1.3 80),然后按Enter 鍵。
第三步:在新行中輸入MOVE /info/b.html /b.html HTTP/1.0 命令,并按Enter 鍵。
第四步:觀察返回的結(jié)果信息,Web 服務(wù)器返回的信息提示MOVE 方法“not supported”。
備注:由于不同的Web 服務(wù)器支持的HTTP 協(xié)議版本不同,如果系統(tǒng)不支持HTTP/1.0,那么第三步返回“HTTP/1.0 400 Bad Request”,這種情況下,應(yīng)該更改第三步的輸入行為MOVE /info/b.html /b.html HTTP/1.1。
(9)HTTP COPY 方法測(cè)試
如果Web 服務(wù)器開放了COPY 方法,用于請(qǐng)求服務(wù)器將指定的頁面拷貝到另一個(gè)網(wǎng)絡(luò)地址,該方法不安全,容易被利用。
HTTP COPY 方法測(cè)試的步驟如下:
第一步:單擊“開始”→“運(yùn)行”命令,輸入cmd 命令后按Enter 鍵,運(yùn)行cmd.exe。
第二步:輸入命令“telnet IP 端口”(其中IP 和端口按實(shí)際情況填寫,用空格隔開,如telnet 192.168.1.3 80),然后按Enter 鍵。
第三步:在新行中輸入COPY /info/b.html /b.html HTTP/1.0 命令,然后按Enter 鍵。
第四步:觀察返回的結(jié)果信息,Web 服務(wù)器返回的信息提示COPY 方法“not supported”。

浙公網(wǎng)安備 33010602011771號(hào)