一種基于滲透性測試的Web漏洞掃描系統(tǒng)設計與實現(xiàn)
自從1990年以來,人們就用Http協(xié)議進行Web數(shù)據(jù)傳輸,Http協(xié)議是一種在TCP/IP之上的request/response型協(xié)議。多數(shù)Http數(shù)據(jù)傳輸由請求服務器上的某種資源開始,通過網(wǎng)絡上的一些中介,如代理、網(wǎng)關等到達服務器,而后服務器處理請求并送回應答。但是Http 1.0并不完全支持各層代理、緩沖、持續(xù)的連接以及虛擬主機等技術。Http請求及應答數(shù)據(jù)包如圖2所示。
![](http://editerupload.eepw.com.cn/fetch/20131127/195648_2_0.jpg)
對于目標系統(tǒng)Web漏洞掃描,使用滲透性的探測方法,滲透性探測方法主要通過更改Http請求信息包中的某些信息,從目標系統(tǒng)的應答信息包中獲取狀態(tài)信息及相關內(nèi)容以判斷目標系統(tǒng)的輸入或軟件錯誤,或其他一些配置信息,所以要求開發(fā)者可以自定義Http請求信息包。
Libwhisker是一個全面的API,是由一些不同的與Web應用程序相交互的功能模塊構成的數(shù)據(jù)庫,它有如下的特點:
(1)可以與Http 0.9,1.0以及1.1相通信;
(2)可以建立持續(xù)的連接;
(3)能有效地支持代理;
(4)支持Anti-IDS技術;
(5)支持SSL;
(6)支持Basic和NTLM認證。
所以使用Libwhisker與Http通信,以通過Libwhisker來自定義Http協(xié)議信息包以及提供相應的支持。
2.4特征信息數(shù)據(jù)庫
此漏洞掃描系統(tǒng)的核心就是特征信息數(shù)據(jù)庫,特征信息數(shù)據(jù)庫保存了遠程Web系統(tǒng)可能存在的各類Web隱患和漏洞的獲取或攻擊信息或代碼。通過給遠程Web系統(tǒng)發(fā)送此數(shù)據(jù)庫中的數(shù)據(jù)以獲得目標Web系統(tǒng)的安全性。
考慮到信息的共性與個性、方便性等因素,特征數(shù)據(jù)庫信息大體分為以下幾類:
(1)Web系統(tǒng)軟件版本信息數(shù)據(jù)庫:此類信息以檢測當前Web系統(tǒng)相應軟件的版本隱患及其漏洞信息,以及Web系統(tǒng)相應軟件版本最新信息,并給出相關的提示。
(2)Web系統(tǒng)授權信息:此類信息以檢測當前Web相應系統(tǒng)資源的授權情況以及漏洞信息。
(3)漏洞控測信息數(shù)據(jù)庫:此類數(shù)據(jù)庫是最主要的信息數(shù)據(jù)庫,包含各類Web服務器中存在的各種隱患和漏洞探測信息。具體而言分為以下幾個大類:認證攻擊、授權攻擊、識別“支持”文件、識別包含文件、目錄攻擊、識別錯誤、一般的輸入驗證、源代碼泄露、URL編碼、Unicode編碼、Base64編碼、識別請求方法、SQL注入、會話攻擊、目錄遍歷攻擊以及跨站點腳本攻擊等。
特征信息數(shù)據(jù)庫各記錄分別為:
Web服務器類別、檢測目標URI、預設返回信息、Http方法、描述信息。
2.5 Web漏洞掃描系統(tǒng)的實現(xiàn)
由于允許多用戶同時使用服務器端,要求針對不同目標的掃描、檢測任務同時進行,所以執(zhí)行掃描機制就成了服務器端設計中的首要問題。根據(jù)服務器并行處理的理論,而且使用B/S的總體結構,考慮到開發(fā)語言和開發(fā)環(huán)境,對于掃描服務器的構架選擇Linux平臺下的PERL開發(fā)語言,使用并發(fā)服務器的模型。
并發(fā)服務器的思想是每一個客戶的請求并不由服務器直接處理,而是由服務器創(chuàng)建相應的子進程進行處理。對于每一個子進程而言,客戶可以設定其掃描范圍包括不只一個目標地址,同樣由服務器創(chuàng)建相應的子進程(即二級進程)來處理,以提高系統(tǒng)的掃描速度。利用Linux下的fork函數(shù)來完成一、二級進程處理功能。其流程如圖3所示。
![](http://editerupload.eepw.com.cn/fetch/20131127/195648_2_1.jpg)
另外,由于PERL本身的效率問題,為進一步提高漏洞掃描系統(tǒng)的性能,對目標系統(tǒng)首先利用現(xiàn)階段已經(jīng)非常成熟的工具NMAP進行端口掃描,以獲得開放的端口,在此基礎上進行進一步的端口掃描,以判斷在此端口上是否提供的是Web服務。
為進一步加快掃描速度,系統(tǒng)使用掃描知識庫來保存已掃描過的主機信息,在獲取用戶請求以后,首先檢測知識庫,若有知識庫中保存相關信息,則不進行新的掃描工作,只需調(diào)用相關的知識庫信息返回給用戶即可。
在對端口滲透性探測的實現(xiàn)方式上,使用插件腳本的方式來進行。用戶可以通過參數(shù)選取相應的插件執(zhí)行,以進行更為完整的漏洞掃描。插件可以動態(tài)地升級,其實現(xiàn)方式是每次升級插件時都將已升級的插件根據(jù)既定的順序添加在插件調(diào)用清單當中,在插件執(zhí)行過程中,主控程序根據(jù)插件調(diào)用清單中的插件執(zhí)行順序依次調(diào)用插件。插件的執(zhí)行結果擴充了各類數(shù)據(jù)庫探測信息,這樣即可以增加各類特殊的信息,進行更為深入的掃描目標Web系統(tǒng)以發(fā)現(xiàn)更新、更多的漏洞信息。
3結語
提出對Web系統(tǒng)進行安全掃描的必要性,以及Web漏洞掃描的基本原理,在此基礎上提出并設計了一個完整的Web漏洞掃描系統(tǒng),介紹了它的協(xié)議基礎以及組成模塊。
本文設計的Web漏洞掃描系統(tǒng)已經(jīng)完全實現(xiàn),并經(jīng)過測試,該掃描器基于瀏覽器/服務器結構,可以掃描UNIX/Windows等多種平臺下的Web系統(tǒng),與同類產(chǎn)品相比,可以看出該掃描器具有如下特點:利用多進程/知識庫等技術加快了掃描速度;掃描封裝在插件中使系統(tǒng)具有可擴展性;使用B/S結構使得用戶操作方便,掃描結果詳盡。此掃描系統(tǒng)實現(xiàn)了Web隱患掃描和漏洞檢測,并可以提供漏洞的修補建議,將會在很大程度上確保Web系統(tǒng)安全。
評論