一種基于滲透性測試的Web漏洞掃描系統設計與實現
自從1990年以來,人們就用Http協議進行Web數據傳輸,Http協議是一種在TCP/IP之上的request/response型協議。多數Http數據傳輸由請求服務器上的某種資源開始,通過網絡上的一些中介,如代理、網關等到達服務器,而后服務器處理請求并送回應答。但是Http 1.0并不完全支持各層代理、緩沖、持續的連接以及虛擬主機等技術。Http請求及應答數據包如圖2所示。

對于目標系統Web漏洞掃描,使用滲透性的探測方法,滲透性探測方法主要通過更改Http請求信息包中的某些信息,從目標系統的應答信息包中獲取狀態信息及相關內容以判斷目標系統的輸入或軟件錯誤,或其他一些配置信息,所以要求開發者可以自定義Http請求信息包。
Libwhisker是一個全面的API,是由一些不同的與Web應用程序相交互的功能模塊構成的數據庫,它有如下的特點:
(1)可以與Http 0.9,1.0以及1.1相通信;
(2)可以建立持續的連接;
(3)能有效地支持代理;
(4)支持Anti-IDS技術;
(5)支持SSL;
(6)支持Basic和NTLM認證。
所以使用Libwhisker與Http通信,以通過Libwhisker來自定義Http協議信息包以及提供相應的支持。
2.4特征信息數據庫
此漏洞掃描系統的核心就是特征信息數據庫,特征信息數據庫保存了遠程Web系統可能存在的各類Web隱患和漏洞的獲取或攻擊信息或代碼。通過給遠程Web系統發送此數據庫中的數據以獲得目標Web系統的安全性。
考慮到信息的共性與個性、方便性等因素,特征數據庫信息大體分為以下幾類:
(1)Web系統軟件版本信息數據庫:此類信息以檢測當前Web系統相應軟件的版本隱患及其漏洞信息,以及Web系統相應軟件版本最新信息,并給出相關的提示。
(2)Web系統授權信息:此類信息以檢測當前Web相應系統資源的授權情況以及漏洞信息。
(3)漏洞控測信息數據庫:此類數據庫是最主要的信息數據庫,包含各類Web服務器中存在的各種隱患和漏洞探測信息。具體而言分為以下幾個大類:認證攻擊、授權攻擊、識別“支持”文件、識別包含文件、目錄攻擊、識別錯誤、一般的輸入驗證、源代碼泄露、URL編碼、Unicode編碼、Base64編碼、識別請求方法、SQL注入、會話攻擊、目錄遍歷攻擊以及跨站點腳本攻擊等。
特征信息數據庫各記錄分別為:
Web服務器類別、檢測目標URI、預設返回信息、Http方法、描述信息。
2.5 Web漏洞掃描系統的實現
由于允許多用戶同時使用服務器端,要求針對不同目標的掃描、檢測任務同時進行,所以執行掃描機制就成了服務器端設計中的首要問題。根據服務器并行處理的理論,而且使用B/S的總體結構,考慮到開發語言和開發環境,對于掃描服務器的構架選擇Linux平臺下的PERL開發語言,使用并發服務器的模型。
并發服務器的思想是每一個客戶的請求并不由服務器直接處理,而是由服務器創建相應的子進程進行處理。對于每一個子進程而言,客戶可以設定其掃描范圍包括不只一個目標地址,同樣由服務器創建相應的子進程(即二級進程)來處理,以提高系統的掃描速度。利用Linux下的fork函數來完成一、二級進程處理功能。其流程如圖3所示。

另外,由于PERL本身的效率問題,為進一步提高漏洞掃描系統的性能,對目標系統首先利用現階段已經非常成熟的工具NMAP進行端口掃描,以獲得開放的端口,在此基礎上進行進一步的端口掃描,以判斷在此端口上是否提供的是Web服務。
為進一步加快掃描速度,系統使用掃描知識庫來保存已掃描過的主機信息,在獲取用戶請求以后,首先檢測知識庫,若有知識庫中保存相關信息,則不進行新的掃描工作,只需調用相關的知識庫信息返回給用戶即可。
在對端口滲透性探測的實現方式上,使用插件腳本的方式來進行。用戶可以通過參數選取相應的插件執行,以進行更為完整的漏洞掃描。插件可以動態地升級,其實現方式是每次升級插件時都將已升級的插件根據既定的順序添加在插件調用清單當中,在插件執行過程中,主控程序根據插件調用清單中的插件執行順序依次調用插件。插件的執行結果擴充了各類數據庫探測信息,這樣即可以增加各類特殊的信息,進行更為深入的掃描目標Web系統以發現更新、更多的漏洞信息。
3結語
提出對Web系統進行安全掃描的必要性,以及Web漏洞掃描的基本原理,在此基礎上提出并設計了一個完整的Web漏洞掃描系統,介紹了它的協議基礎以及組成模塊。
本文設計的Web漏洞掃描系統已經完全實現,并經過測試,該掃描器基于瀏覽器/服務器結構,可以掃描UNIX/Windows等多種平臺下的Web系統,與同類產品相比,可以看出該掃描器具有如下特點:利用多進程/知識庫等技術加快了掃描速度;掃描封裝在插件中使系統具有可擴展性;使用B/S結構使得用戶操作方便,掃描結果詳盡。此掃描系統實現了Web隱患掃描和漏洞檢測,并可以提供漏洞的修補建議,將會在很大程度上確保Web系統安全。
評論