新聞中心

EEPW首頁 > 測試測量 > 設(shè)計(jì)應(yīng)用 > 一種基于滲透性測試的Web漏洞掃描系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

一種基于滲透性測試的Web漏洞掃描系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

作者: 時(shí)間:2009-11-30 來源:網(wǎng)絡(luò) 收藏
2.3通信協(xié)議設(shè)計(jì)

自從1990年以來,人們就用Http協(xié)議進(jìn)行數(shù)據(jù)傳輸,Http協(xié)議是一種在TCP/IP之上的request/response型協(xié)議。多數(shù)Http數(shù)據(jù)傳輸由請求服務(wù)器上的某種資源開始,通過網(wǎng)絡(luò)上的一些中介,如代理、網(wǎng)關(guān)等到達(dá)服務(wù)器,而后服務(wù)器處理請求并送回應(yīng)答。但是Http 1.0并不完全支持各層代理、緩沖、持續(xù)的連接以及虛擬主機(jī)等技術(shù)。Http請求及應(yīng)答數(shù)據(jù)包如圖2所示。


對于目標(biāo)系統(tǒng),使用滲透性的探測方法,滲透性探測方法主要通過更改Http請求信息包中的某些信息,從目標(biāo)系統(tǒng)的應(yīng)答信息包中獲取狀態(tài)信息及相關(guān)內(nèi)容以判斷目標(biāo)系統(tǒng)的輸入或軟件錯(cuò)誤,或其他一些配置信息,所以要求開發(fā)者可以自定義Http請求信息包。

Libwhisker是一個(gè)全面的API,是由一些不同的與應(yīng)用程序相交互的功能模塊構(gòu)成的數(shù)據(jù)庫,它有如下的特點(diǎn):

(1)可以與Http 0.9,1.0以及1.1相通信;

(2)可以建立持續(xù)的連接;

(3)能有效地支持代理;

(4)支持Anti-IDS技術(shù);

(5)支持SSL;

(6)支持Basic和NTLM認(rèn)證。

所以使用Libwhisker與Http通信,以通過Libwhisker來自定義Http協(xié)議信息包以及提供相應(yīng)的支持。

2.4特征信息數(shù)據(jù)庫

系統(tǒng)的核心就是特征信息數(shù)據(jù)庫,特征信息數(shù)據(jù)庫保存了遠(yuǎn)程Web系統(tǒng)可能存在的各類Web隱患和漏洞的獲取或攻擊信息或代碼。通過給遠(yuǎn)程Web系統(tǒng)發(fā)送此數(shù)據(jù)庫中的數(shù)據(jù)以獲得目標(biāo)Web系統(tǒng)的安全性。

考慮到信息的共性與個(gè)性、方便性等因素,特征數(shù)據(jù)庫信息大體分為以下幾類:

(1)Web系統(tǒng)軟件版本信息數(shù)據(jù)庫:此類信息以檢測當(dāng)前Web系統(tǒng)相應(yīng)軟件的版本隱患及其漏洞信息,以及Web系統(tǒng)相應(yīng)軟件版本最新信息,并給出相關(guān)的提示。

(2)Web系統(tǒng)授權(quán)信息:此類信息以檢測當(dāng)前Web相應(yīng)系統(tǒng)資源的授權(quán)情況以及漏洞信息。

(3)漏洞控測信息數(shù)據(jù)庫:此類數(shù)據(jù)庫是最主要的信息數(shù)據(jù)庫,包含各類Web服務(wù)器中存在的各種隱患和漏洞探測信息。具體而言分為以下幾個(gè)大類:認(rèn)證攻擊、授權(quán)攻擊、識(shí)別“支持”文件、識(shí)別包含文件、目錄攻擊、識(shí)別錯(cuò)誤、一般的輸入驗(yàn)證、源代碼泄露、URL編碼、Unicode編碼、Base64編碼、識(shí)別請求方法、SQL注入、會(huì)話攻擊、目錄遍歷攻擊以及跨站點(diǎn)腳本攻擊等。

特征信息數(shù)據(jù)庫各記錄分別為:

Web服務(wù)器類別、檢測目標(biāo)URI、預(yù)設(shè)返回信息、Http方法、描述信息。

2.5 Web系統(tǒng)的實(shí)現(xiàn)

由于允許多用戶同時(shí)使用服務(wù)器端,要求針對不同目標(biāo)的掃描、檢測任務(wù)同時(shí)進(jìn)行,所以執(zhí)行掃描機(jī)制就成了服務(wù)器端設(shè)計(jì)中的首要問題。根據(jù)服務(wù)器并行處理的理論,而且使用B/S的總體結(jié)構(gòu),考慮到開發(fā)語言和開發(fā)環(huán)境,對于掃描服務(wù)器的構(gòu)架選擇Linux平臺(tái)下的PERL開發(fā)語言,使用并發(fā)服務(wù)器的模型。

并發(fā)服務(wù)器的思想是每一個(gè)客戶的請求并不由服務(wù)器直接處理,而是由服務(wù)器創(chuàng)建相應(yīng)的子進(jìn)程進(jìn)行處理。對于每一個(gè)子進(jìn)程而言,客戶可以設(shè)定其掃描范圍包括不只一個(gè)目標(biāo)地址,同樣由服務(wù)器創(chuàng)建相應(yīng)的子進(jìn)程(即二級(jí)進(jìn)程)來處理,以提高系統(tǒng)的掃描速度。利用Linux下的fork函數(shù)來完成一、二級(jí)進(jìn)程處理功能。其流程如圖3所示。


另外,由于PERL本身的效率問題,為進(jìn)一步提高漏洞掃描系統(tǒng)的性能,對目標(biāo)系統(tǒng)首先利用現(xiàn)階段已經(jīng)非常成熟的工具NMAP進(jìn)行端口掃描,以獲得開放的端口,在此基礎(chǔ)上進(jìn)行進(jìn)一步的端口掃描,以判斷在此端口上是否提供的是Web服務(wù)。

為進(jìn)一步加快掃描速度,系統(tǒng)使用掃描知識(shí)庫來保存已掃描過的主機(jī)信息,在獲取用戶請求以后,首先檢測知識(shí)庫,若有知識(shí)庫中保存相關(guān)信息,則不進(jìn)行新的掃描工作,只需調(diào)用相關(guān)的知識(shí)庫信息返回給用戶即可。

在對端口滲透性探測的實(shí)現(xiàn)方式上,使用插件腳本的方式來進(jìn)行。用戶可以通過參數(shù)選取相應(yīng)的插件執(zhí)行,以進(jìn)行更為完整的漏洞掃描。插件可以動(dòng)態(tài)地升級(jí),其實(shí)現(xiàn)方式是每次升級(jí)插件時(shí)都將已升級(jí)的插件根據(jù)既定的順序添加在插件調(diào)用清單當(dāng)中,在插件執(zhí)行過程中,主控程序根據(jù)插件調(diào)用清單中的插件執(zhí)行順序依次調(diào)用插件。插件的執(zhí)行結(jié)果擴(kuò)充了各類數(shù)據(jù)庫探測信息,這樣即可以增加各類特殊的信息,進(jìn)行更為深入的掃描目標(biāo)Web系統(tǒng)以發(fā)現(xiàn)更新、更多的漏洞信息。

3結(jié)語

提出對Web系統(tǒng)進(jìn)行安全掃描的必要性,以及Web漏洞掃描的基本原理,在此基礎(chǔ)上提出并設(shè)計(jì)了一個(gè)完整的Web漏洞掃描系統(tǒng),介紹了它的協(xié)議基礎(chǔ)以及組成模塊。

本文設(shè)計(jì)的Web漏洞掃描系統(tǒng)已經(jīng)完全實(shí)現(xiàn),并經(jīng)過,該掃描器基于瀏覽器/服務(wù)器結(jié)構(gòu),可以掃描UNIX/Windows等多種平臺(tái)下的Web系統(tǒng),與同類產(chǎn)品相比,可以看出該掃描器具有如下特點(diǎn):利用多進(jìn)程/知識(shí)庫等技術(shù)加快了掃描速度;掃描封裝在插件中使系統(tǒng)具有可擴(kuò)展性;使用B/S結(jié)構(gòu)使得用戶操作方便,掃描結(jié)果詳盡。此掃描系統(tǒng)實(shí)現(xiàn)了Web隱患掃描和漏洞檢測,并可以提供漏洞的修補(bǔ)建議,將會(huì)在很大程度上確保Web系統(tǒng)安全。

上一頁 1 2 下一頁

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉