隨著網際網路的不斷發展,人們對網路的使用越來越頻繁,通過網路進行購物、支付等其他業務操作。而一個潛在的問題是網路的安全性如何保證,一些黑客利用站點安全性的漏洞來竊取用戶的信息,使用戶的個人信息泄漏,所以站點的安全性變得很重要。

Web 系統的安全性測試包括以下內容:

(1)Web 漏洞掃描

(2)伺服器端信息測試

(3)文件和目錄測試

(4)認證測試

(5)會話管理測試

(6)許可權管理測試

(7)文件上傳下載測試

(8)信息泄漏測試

(9)輸入數據測試

(10)跨站腳本攻擊測試

(11)邏輯測試

(12)搜索引擎信息測試

(13)Web Service 測試

(14)其他測試

本章節先主要給大家介紹(1),(2)點

第一點:Web 漏洞掃描

由於開發和設計的原因,可能導致Web 系統存在漏洞,在測試過程中可以使用一些自動化掃描工具對Web 系統的漏洞進行掃描。但自動化掃描工具只能檢測到部分常見的漏洞(如跨站腳本、SQL 注入等),不是針對用戶代碼的,也不能掃描業務邏輯,無法對這些漏洞做進一步業務上的判斷。而往往最嚴重的安全問題並不是常見的漏洞,而是通過這些漏洞針對業務邏輯和應用的攻擊。

Web 目前分為Application 和Web Service 兩部分。Application 指通常意義上的Web 應用;而Web Service 是一種面向服務的架構技術,通過標準的Web 協議(如HTTP、XML、SOAP、WSDL)提供服務。

現在市場上Web 漏洞掃描的工具比較多,如WebInspect、N-Stalker、Acunetix Web Vulnerability Scanner、Rational AppScan 等。下面簡單介紹Rational AppScan 工具的使用。

Rational AppScan 是專門面向Web 應用安全檢測的自動化工具,是對Web 應用和Web Service進行自動化安全掃描的黑盒工具。它不但可以簡化企業發現和修復Web 應用安全隱患的過程(這些工作以往都是由人工進行,成本相對較高,效率低下),還可以根據發現的安全隱患,提出針對性的修復建議,並能形成多種符合法規、行業標準的報告,方便相關人員全面瞭解企業應用的安全狀況。

應用程序開發團隊在項目交付前,可以利用Rational AppScan 對所開發的應用程序與服務進行安全缺陷的掃描,自動化檢測Web 應用的安全漏洞,從網站開發的起始階段就掃除Web 應用安全漏洞。

Rational AppScan 的工作流程如圖12-5 所示

第二點:伺服器端信息測試

伺服器端信息測試主要是從伺服器對客戶端開發的信息角度來測試伺服器被攻擊的可能性,以及被攻擊的難易程度。主要需要測試以下幾方面的信息:

1、伺服器允許運行賬號許可權測試

2、Web 伺服器埠測試

3、Web 伺服器版本信息測試

4、HTTP 方法測試

5、HTTP DELETE 方法測試

6、HTTP PUT 方法測試

7、HTTP TRACE 方法測試

8、HTTP MOVE 方法測試

9、HTTP COPY 方法測試

(1)伺服器允許運行賬號許可權測試

一般地,運行Web 伺服器所在的操作系統所開放的賬號許可權越高,那麼Web 伺服器遭到攻擊的可能性越大,並且產生的危害也越大。因此,不應使用Root、Administrator 等特權賬號或高級別許可權的操作系統賬號來運行Web 系統,應該儘可能地使用低級別許可權的操作系統賬號,以此降低Web 伺服器被攻擊的風險。

測試時登錄Web 伺服器操作系統,查看運行Web 伺服器的操作系統賬號,確定操作系統的賬號是否為Root、Administrator 等特權賬號或高級別許可權賬號,如果是,則存在漏洞。

對於Windows 操作系統:打開Windows 任務管理器,選擇「進程」選項卡,選中「顯示所有用戶的進程」複選框,檢查運行Web 伺服器的賬號。

對UNIX 或Linux 系統:運行「ps–ef|grep java」命令,返回結果第一列的操作系統用戶就是運行Web 伺服器的賬號。例如以下運行信息:

root 4035 4010 0 17:13 pts/2 00:00:00 grep java

(2)Web 伺服器埠測試

有時Web 伺服器除業務埠外還會開放一些默認埠(如JBoss 開放的8083),這些默認埠對最終用戶是不需要開放的,而且也不會維護,容易被攻擊,本測試的目的在於發現伺服器上未使用的Web 埠。

可以使用埠掃描工具對Web 伺服器域名或IP 地址(如IP 地址為192.168.1.103)進行掃描,檢查未開放業務不需要使用的Web 服務埠。常用的埠掃描工具有NetScanTools、WinScan、SuperScan、NTOScanner、WUPS、NmapNT 和Winfingerprint。

以掃描工具SuperScan 3.00 為例,SuperScan 是一款基於TCP 協議的埠掃描器、Pinger 和主機名解析器。可以針對任意的IP 地址範圍的Ping 和埠掃描,並且能同時掃描多個任意埠;解析和反向解析任意IP 地址或範圍;使用內建編輯器修改埠列表及埠定義;使用用戶自定義的應用程序與任何被發現打開的埠進行連接;查看被連接主機的回應;保存掃描列表到文本文件中。

在主界面中的IP 組的Start 文本框中輸入開始的IP,在Stop 文本框中輸入結束的IP,在Scantype 組中選擇All list ports from 單選項,並指定掃描埠範圍(1~65535),如圖12-6 所示

單擊Scan 組中的Start 按鈕,就可以在選擇的IP 地址段內掃描不同主機開放的埠。掃描完成後,選中掃描到的主機IP,單擊Expand all 按鈕會展開每臺主機的詳細掃描結果,如圖12-7所示

(3)Web 伺服器版本信息測試

為了防止黑客攻擊,在很多情況下,通過獲取Banner 的信息可以獲取HTTP 指紋識別方法。通常會將Web 伺服器的信息進行隱藏或者通過配置、增加插件來更改或模糊伺服器的Banner 信息。

HTTP 指紋識別現在已經成為應用程序安全中一個新興的話題,指紋識別可以分為兩步:一是對指紋進行收集和分類;二是將未知的指紋同被存儲在資料庫中的指紋進行比較,從而找出最符合的指紋。

操作系統指紋識別在網路評估中是一件常見的工作,現在已有很多操作系統指紋識別技術,操作系統指紋識別為什麼能成功呢?因為每個操作系統實現TCP/IP 協議時有微小的差別,當前比較流行的是利用TCP/IP 堆棧進行操作系統識別。

HTTP 指紋識別的原理大致也是如此,記錄不同伺服器對HTTP 協議執行中的微小差別進行識別,HTTP 指紋識別比TCP/IP 堆棧指紋識別複雜許多,因為定製HTTP 伺服器的配置文件、增加插件或組件使得更改HTTP 的響應信息變得更複雜。

在測試過程中可以使用一些工具進行滲透測試,來獲取Web 伺服器的相關版本信息。Httprint就是一個Web 伺服器指紋工具,通過該工具可以對Web 伺服器進行滲透測試。儘管可以通過改變伺服器的旗幟字元串(server bannerstrings),或通過類似mod_security或servermask的插件混淆事實,但Httprint 工具依然可以依賴Web 伺服器的特點去準確地識別Web 伺服器。Httprint 也可用於檢測沒有伺服器旗幟字元串的網路功能設備,如無線接入點、路由器、交換機、電纜數據機等。

運行Httprint_gui.exe,在Host 列中輸入主機域名(如果沒有域名則輸入IP 地址),在埠列中輸入埠號。如果為HTTPS,則要選擇鎖圖標列的複選框,如圖12-8 所示

單擊程序下方的運行按鈕,查看相關報告,確定報告中是否存在Web 伺服器準確的版本信息,如圖12-9 所示

(4)HTTP 方法測試

HTTP 方法測試主要是測試HTTP 開發的方法,有些Web 伺服器默認情況下開放了一些不必要的HTTP 方法(如DELETE、PUT、TRACE、MOVE、COPY),這樣就增加了受攻擊面。

HTTP 請求常見的方法有(所有的方法必須為大寫):GET、POST、HEAD、PUT、DELETE、TRACE、CONNECT 和OPTIONS,詳細見表12-7

HTTP 方法測試的步驟如下:

第一步:單擊「開始」→「運行」命令,輸入cmd 命令後按Enter 鍵,運行cmd.exe。

第二步:輸入命令「telnet IP 埠」(其中IP 和埠按實際情況填寫,用空格隔開,如telnet 192.168.1.3 80)。

第三步:按Enter 鍵。

第四步:在新行中輸入命令OPTIONS /HTTP/1.1,然後按Enter 鍵。

第五步:觀察返回結果中Allow 的方法列表。

返回結果樣例:

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

如果返回結果中包含不安全的HTTP 方法(如DELETE、PUT、TRACE、MOVE、COPY),

則驗證對這些方法的防範措施是否可用,如果方法可用則說明存在漏洞,測試無法通過。

備註:由於不同的Web 伺服器支持的HTTP 協議版本不同,如果系統不支持HTTP/1.0,那麼第四步返回「HTTP/1.0 400 Bad Request」,這種情況下,應該更改第四步的輸入行為OPTIONS / HTTP/1.0。

(5)HTTP DELETE 方法測試

如果Web 伺服器開放了DELETE 方法,那麼攻擊者能夠通過該方法刪除Web 伺服器上的文件,所以需要測試通過DELETE 方法是否能將伺服器上的文件刪除。DELETE 方法測試步驟如下:

在測試前先在Web 網站上創建一個文件(如test.txt)。

第一步:單擊「開始」→「運行」命令,輸入cmd 命令後按Enter 鍵,運行cmd.exe。

第二步:輸入命令「telnet IP 埠」(其中IP 和埠按實際情況填寫,用空格隔開,如telnet 192.168.1.3 80),並按Enter 鍵。

第三步:在新行中輸入命令DELETE /test.txt HTTP/1.0,然後按Enter 鍵。

第四步:查看伺服器上的test.txt 文件是否被刪除。

該文件不能被刪除,如果被刪除,說明Web 服務存在風險.

說明:由於不同的Web 伺服器支持的HTTP 協議版本不同,如果系統不支持HTTP/1.0,

那麼第三步返回「HTTP/1.0 400 Bad Request」,這種情況下,應該更改第三步的輸

入行為DELETE /index.jsp HTTP/1.1。

(6)HTTP PUT 方法測試

如果Web 伺服器開放了PUT 方法,那麼攻擊者能夠通過該方法上傳任意文件到Web 伺服器的一些目錄中,包括一些Web 木馬程序。測試時可以使用測試工具來模擬上傳文件,對伺服器可寫許可權進行測試。IIS PUT Scaner 為一款檢測伺服器可寫漏洞的工具,通過IIS PUT Scaner 工具檢測的步驟如下:

第一步:運行IIS PUT Scaner 程序(假設已經安裝該工具)。

第二步:在Start IP 和End IP 輸入框中輸入Web 伺服器的IP 地址,在Port 輸入框中輸入對應

的埠,選中複選框Try to upload file 和Try on other systems,如圖12-10 所示

第三步:查看結果,PUT 欄中的值不能為YES,如果是且Update File 欄中的值為ok,說明文件可以被上傳到伺服器。同時查看Web 伺服器中沒有新創建的文件(如上傳test.txt 文件),並且通過IP/test.txt請求不到該文件。

(7)HTTP TRACE 方法測試

如果Web 伺服器開放了TRACE 方法(主要用於客戶端通過向Web 伺服器提交TRACE 請求來進行測試或獲得診斷信息),攻擊者能夠通過該方法進行跨站攻擊。

跨站腳本攻擊(Cross Site Script Execution,XSS)是指入侵者在遠程Web 頁面的HTML 代碼中插入具有惡意目的的數據,用戶認為該頁面是可信賴的,但是當瀏覽器下載該頁面時,嵌入其中的腳本將被解釋執行。由於HTML 語言允許使用腳本進行簡單交互,入侵者便通過技術手段在某個頁面裏插入一個惡意HTML 代碼,例如記錄論壇保存的用戶信息(Cookie),由於Cookie 保存了完整的用戶名和密碼資料,用戶就會遭受安全損失。如JavaScript腳本語句aler(t document.cookie)就能輕易獲取用戶信息,它會彈出一個包含用戶信息的消息框,入侵者運用腳本就能把用戶信息發送到他們自己的記錄頁面中,稍作分析便可以獲取用戶的敏感信息。

HTTP TRACE 方法測試的步驟如下:

第一步:單擊「開始」→「運行」命令,輸入cmd 命令後Enter 車鍵,運行cmd.exe。

第二步:輸入命令「telnet IP 埠」(其中IP 和埠按實際情況填寫,用空格隔開,如telnet 192.168.1.3 80),然後按Enter 鍵。

第三步:在新行中輸入TRACE/HTTP/1.0 命令,然後按Enter 鍵。

第四步:觀察返回的結果信息,Web 伺服器返回的信息提示TRACE 方法「not allowed」。

備註:由於不同的Web 伺服器支持的HTTP 協議版本不同,如果系統不支持HTTP/1.0,

那麼第三步返回「HTTP/1.0 400 Bad Request」,這種情況下,應該更改第三步的輸

入行為TRACE / HTTP/1.1。

(8)HTTP MOVE 方法測試

如果Web 伺服器開放了MOVE 方法,用於請求伺服器將指定的頁面移到另一個網路地址,該方法不安全,容易被利用。

HTTP MOVE 方法測試的步驟如下:

第一步:單擊「開始」→「運行」命令,輸入cmd 命令然後按Enter 鍵,運行cmd.exe。

第二步:輸入命令「telnet IP 埠」(其中IP 和埠按實際情況填寫,用空格隔開,如telnet 192.168.1.3 80),然後按Enter 鍵。

第三步:在新行中輸入MOVE /info/b.html /b.html HTTP/1.0 命令,並按Enter 鍵。

第四步:觀察返回的結果信息,Web 伺服器返回的信息提示MOVE 方法「not supported」。

備註:由於不同的Web 伺服器支持的HTTP 協議版本不同,如果系統不支持HTTP/1.0,那麼第三步返回「HTTP/1.0 400 Bad Request」,這種情況下,應該更改第三步的輸入行為MOVE /info/b.html /b.html HTTP/1.1。

(9)HTTP COPY 方法測試

如果Web 伺服器開放了COPY 方法,用於請求伺服器將指定的頁面拷貝到另一個網路地址,該方法不安全,容易被利用。

HTTP COPY 方法測試的步驟如下:

第一步:單擊「開始」→「運行」命令,輸入cmd 命令後按Enter 鍵,運行cmd.exe。

第二步:輸入命令「telnet IP 埠」(其中IP 和埠按實際情況填寫,用空格隔開,如telnet 192.168.1.3 80),然後按Enter 鍵。

第三步:在新行中輸入COPY /info/b.html /b.html HTTP/1.0 命令,然後按Enter 鍵。

第四步:觀察返回的結果信息,Web 伺服器返回的信息提示COPY 方法「not supported」

備註:由於不同的Web 伺服器支持的HTTP 協議版本不同,如果系統不支持HTTP/1.0,那麼第三步返回「HTTP/1.0 400 Bad Request」;這種情況下,應該更改第三步的輸入行為COPY /info/b.html /b.html HTTP/1.1。


推薦閱讀:
相關文章