国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Selenium的SQL注入漏洞檢測系統(tǒng)的研究

2016-09-20 08:14栗迎結(jié)任洪敏
現(xiàn)代計算機 2016年21期
關(guān)鍵詞:語句漏洞網(wǎng)頁

栗迎結(jié),任洪敏

(上海海事大學(xué)信息工程學(xué)院計算機系,上海 201306)

基于Selenium的SQL注入漏洞檢測系統(tǒng)的研究

栗迎結(jié),任洪敏

(上海海事大學(xué)信息工程學(xué)院計算機系,上海 201306)

在對Web應(yīng)用進行安全漏洞檢測時,手動檢測和所使用的網(wǎng)頁比對算法都會影響到檢測的準(zhǔn)確率和效率,在傳統(tǒng)的SQL注入漏洞檢測技術(shù)的基礎(chǔ)上建立一個基于Selenium的自動化檢測系統(tǒng),并使用優(yōu)化的Simhash文本相似性檢測算法來提高系統(tǒng)性能,通過實驗驗證該系統(tǒng)的可行性和檢測結(jié)果的可信度。

Web漏洞;SQL注入;Selenium;Simhash

0 引言

在計算機技術(shù)飛速發(fā)展的當(dāng)今社會,隨著互聯(lián)網(wǎng)的普及使用,網(wǎng)絡(luò)成為了人類生活和工作不可或缺的一部分。各種各樣的Web應(yīng)用也被大家使用,這些作為人類溝通交流的主流載體,承載著大量的私有或公有信息。但是,網(wǎng)絡(luò)給人類帶來便利的同時,也不可避免的出現(xiàn)大量漏洞,在這其中,SQL注入漏洞是一種最常見也是危害性最大的網(wǎng)絡(luò)漏洞,如果這些帶有漏洞的Web應(yīng)用受到攻擊,數(shù)據(jù)庫里的信息遭到泄露,就會極大影響人類生活,甚至是經(jīng)濟發(fā)展和社會穩(wěn)定。

因此,為了防御Web應(yīng)用受到的SQL注入攻擊,人們采用各種漏洞掃描技術(shù)主動檢測SQL注入漏洞,避免一些網(wǎng)絡(luò)安全隱患。本文針對現(xiàn)有檢測技術(shù)的效率問題,在基于Selenium測試用例的基礎(chǔ)上建立一個針對小型網(wǎng)站的自動化SQL注入漏洞檢測系統(tǒng)。

1 SQL注入

SQL語言是用來對關(guān)系數(shù)據(jù)庫進行結(jié)構(gòu)化查詢的語言。SQL注入的概念就是把SQL命令插入到Web域名或頁面表單的字符串中,由于SQL注入表面上與一般的Web訪問請求相似,防火墻等監(jiān)控設(shè)備不容易檢測到,服務(wù)器便會執(zhí)行惡意的SQL命令。SQL注入攻擊的基本原理:構(gòu)建符合語法要求的SQL語句,插入到網(wǎng)頁鏈接地址和form表單中,Web應(yīng)用執(zhí)行SQL語句,得到攻擊結(jié)果。

現(xiàn)有的對SQL注入漏洞的檢測可以分為客戶端檢測和服務(wù)端檢測兩種??蛻舳藱z測是通過比較注入前后網(wǎng)頁的變化來實現(xiàn)的;而服務(wù)端檢測需要通過檢測后臺代碼、數(shù)據(jù)庫等來實現(xiàn),屬于白盒測試。本文對SQL注入漏洞的檢測是基于Selenium的黑盒測試,也就是客戶端檢測,先通過服務(wù)器發(fā)送一次正常請求,得到一個頁面;然后構(gòu)造SQL語句再次發(fā)送請求,又得到一個頁面,通過網(wǎng)頁比對算法比較兩個網(wǎng)頁差異,然后根據(jù)測試用例判斷SQL注入漏洞是否存在。

2 Simhash網(wǎng)頁特征值比對算法

進行網(wǎng)頁比對的算法有很多,其中Simhash算法是目前Google公司在使用的海量數(shù)據(jù)查重算法,該算法的高效性也是被公認的。Simhash算法分為5個步驟:分詞、hash、加權(quán)、合并、降維。算法的原理如圖1所示。

利用Simhash算法比較網(wǎng)頁特征值的主要思想是:首先將兩個頁面的HTML文檔以詞為單位進行拆分處理,然后通過Hash算法把每個詞計算成Hash值,通過Simhash算法分別計算出兩個網(wǎng)頁的特征值,進行比較后便可判斷兩個網(wǎng)頁的異同。流程如下:

(1)對HTML文檔進行分詞處理

HTML文檔中的各個部分,各個符號都有不同的意義,因此若要計算出一個HTML文檔的特征值,就需要對HTML文檔以詞為單位進行拆分處理,如去除停詞,詞根還原。

圖1 Simhash算法原理圖

(2)調(diào)用Simhash算法計算特征值

得到分詞的HTML文檔后,首先用傳統(tǒng)hash算法計算出每個詞的hash值,這樣就把字符串變成一串?dāng)?shù)字;然后對生成的hash值進行縱位累加,如果該位為1,則simhash相應(yīng)位的值加1,否則減1。然后對這串?dāng)?shù)字進行降維處理,如果每一位大于0記為1,小于0記為0。這樣便得出一個HTML文檔的Simhash值。

(3)計算特征值之間的海明距離

對于兩個二進制串來a和b說,海明距離的值就相當(dāng)于a和b進行異或運算后結(jié)果中1的個數(shù)。根據(jù)上一步得出的Simhash值計算出之間的海明距離,對于小網(wǎng)站來說,海明距離大于0時便可判斷兩個HTML文檔存在差異,海明距離的值越大,差異就越大。通過該方法判斷網(wǎng)頁差異的方式是很高效的,并且可通過設(shè)置海明距離的大小來判斷網(wǎng)頁的差異程度。

3 基于Selenium的SQL注入漏洞檢測系統(tǒng)

Selenium是一個用于對Web應(yīng)用程序進行黑盒測試的工具。Selenium的測試用例直接運行在瀏覽器中,就像真正的用戶在操作一樣。Selenium支持IE、Firefox、Google Chrome等多種瀏覽器以及Java、C#、Ruby等多種運行語言的編程自動生成,用例制作簡單,運行快。為了實現(xiàn)自動化測試,本系統(tǒng)基于Java開發(fā),采用Selenium自動化測試框架來實現(xiàn),實現(xiàn)了對Web應(yīng)用SQL注入漏洞的自動檢測,并且對SQL注入漏洞檢測方法進行相關(guān)優(yōu)化。

3.1 基于Selenium的SOL注入漏洞檢測系統(tǒng)設(shè)計

本文將系統(tǒng)分為四大模塊,系統(tǒng)的結(jié)構(gòu)設(shè)計如圖2:

圖2 SQL注入漏洞檢測系統(tǒng)

其中,每個模塊實現(xiàn)的功能如下:

(1)網(wǎng)絡(luò)爬蟲模塊

該模塊調(diào)用Selenium2中的FindElements()方法,通過標(biāo)簽名找到發(fā)送正常請求后所得頁面的url和form表單,并把其保存為HTML文檔,為構(gòu)造SQL攻擊語句做準(zhǔn)備。

(2)構(gòu)造SQL注入語句模塊

該模塊根據(jù)編寫的測試用例自動構(gòu)造多種SQL語句對上一個模塊保存的HTML文檔中的url和form表單進行SQL注入,然后將注入后發(fā)送請求得到的HTML頁面保存。

(3)SQL注入漏洞檢測模塊

該模塊對前兩個模塊中保存的HTML文檔,包括正常請求的HTML文檔和SQL注入后的HTML文檔,利用Simhash算法分別對兩個HTML文檔進行分詞處理,計算后產(chǎn)生一個二進制的特征值。通過計較兩個特征值之間的海明距離來判斷網(wǎng)頁的差異程度。然后根據(jù)測試用例的判斷標(biāo)準(zhǔn)來判斷漏洞是否存在。

(4)檢測報告生成模塊

在完成SQL注入漏洞檢測之后,將待測網(wǎng)站網(wǎng)址、SQL注入漏洞所在頁面網(wǎng)址、SQL注入點和漏洞檢測時間等數(shù)據(jù)生成一份檢測報告放在一份txt格式的文檔中。

3.2 基于Selenium的SOL注入漏洞檢測系統(tǒng)實現(xiàn)

(1)系統(tǒng)界面

系統(tǒng)基于Java實現(xiàn),主界面如下圖所示。操作過程為:首先在地址欄中輸入待檢測的網(wǎng)站地址,然后點擊開始按鈕,系統(tǒng)自動開始檢測。檢測過程和檢測結(jié)果都會顯示在文本區(qū)域內(nèi)。

圖3 系統(tǒng)主界面

(2)Selenium實現(xiàn)網(wǎng)頁爬蟲模塊

網(wǎng)頁爬蟲模塊主要通過調(diào)用Selenium的API接口,按深度優(yōu)先遍歷網(wǎng)頁的鏈接、表單。對于表單,提取其<input>屬性,作為待注入的參數(shù)。將遍歷得到的鏈接,加入隊列,啟動另外的線程,訪問鏈接隊列,調(diào)用Selenium的drive方法訪問鏈接,獲取網(wǎng)頁的源代碼,以供(3)中漏洞檢測模塊使用。主要調(diào)用的函數(shù)及實現(xiàn)功能如下:

WebDriver driver=new FirefoxDriver();//加載Selenium的火狐瀏覽器驅(qū)動組件

driver.get(“http://xxxx”);//自動調(diào)用瀏覽器訪問

List<WebElement>forms=driver.findElements(By.tag-Name("form");

//調(diào)用Selenium的API方法,獲取當(dāng)前頁面中所有表單<form></form>標(biāo)簽

List<WebElement>forms=driver.findElements(By.tag-Name("a");

//獲取當(dāng)前頁面中所有鏈接<a>…</a>標(biāo)簽

driver.get(forms.get(i).getAttribute("action");

//獲取<form></form>表單中action(URL)的值

String page=driver.getPageSource();//調(diào)用Selenium的API方法,獲取當(dāng)前頁面的源代碼

(3)Simhash算法實現(xiàn)漏洞檢測模塊

漏洞檢測模塊是本系統(tǒng)的核心模塊,主要利用Java語言實現(xiàn)了Simhash算法,并對(2)中經(jīng)過SQL注入攻擊前后下載得到的頁面文件進行計算,以判別是否存在漏洞。主要代碼如下所示:

StringTokenizer stringTokens=new StringTokenizer(this.tokens);//定義分詞的大小

while(stringTokens.hasMoreTokens(){

String temp=stringTokens.nextToken();

BigInteger t=this.hash(temp);

for(int i=0;i<this.hashbits;i++){

BigInteger bitmask=new BigInteger("1").shiftLeft(i);

if(t.and(bitmask).signum()!=0){

v[i]+=1;

}else{

v[i]-=1;

}//根據(jù)分詞大小對文本分詞,并對分詞賦予權(quán)值

BigInteger fingerprint=new BigInteger("0");

StringBuffer simHashBuffer=new StringBuffer();

for(int i=0;i<this.hashbits;i++){

if(v[i]>=0){

fingerprint=fingerprint.add(new BigInteger("1").shiftLeft (i);

simHashBuffer.append("1");

}else{

simHashBuffer.append("0");

}//通過hash函數(shù)計算各個特征向量的hash值

his.strSimHash=simHashBuffer.toString();//得到hash值

3.3 優(yōu)化SQL注入漏洞檢測方法

在所設(shè)計的基于Selenium的SQL注入漏洞檢測系統(tǒng)中,將系統(tǒng)性能做優(yōu)化處理。由于一些Web應(yīng)用具備SQL注入攻擊防御機制,例如對某頁面攻擊后返回的是一個提示“請輸入合法參數(shù)”的頁面,這時的頁面與正常響應(yīng)頁面的內(nèi)容肯定不相同,其Simhash值也不相同,但并不能證明該存在漏洞,因為并沒有攻擊成功。因此需對漏洞檢測方法進行改進:首先調(diào)用Selenium2中的getPageSource()方法分別將發(fā)送正常請求后的頁面a和SQL注入后的頁面b保存為HTML文檔,存放在本地。然后調(diào)用Simhash算法對兩個網(wǎng)頁進行處理,計算出網(wǎng)頁的Simhash值,根據(jù)SQL注入測試用例設(shè)定不同的判斷標(biāo)準(zhǔn),按照標(biāo)準(zhǔn)進行比對,若滿足標(biāo)準(zhǔn)則證明所構(gòu)造的SQL注入語句被執(zhí)行,即系統(tǒng)存在SQL注入漏洞。這樣根據(jù)SQL注入語句類型來設(shè)置判斷標(biāo)準(zhǔn)從而進行漏洞檢測的方法,具有一定的嚴謹性,不僅優(yōu)化了系統(tǒng)的檢測效率,而且提高了檢測結(jié)果的可信度。

4 系統(tǒng)測試

4.1 SQL 注入測試用例

對于一些具備防御機制的Web應(yīng)用來說,簡單的SQL注入語句會被過濾而無法成功攻擊,因此,若要檢測出漏洞,就需要構(gòu)造不同等級的SQL語句來進行攻擊,針對Web應(yīng)用客戶端的SQL注入攻擊語句有如下7種,分為初級、中級、高級三個級別,每一種注入類型都有不同的判斷標(biāo)準(zhǔn)。SQL注入測試用例如下表所示:

表1 測試用例

在該表中,A類屬于初級SQL注入語句;B、C兩種屬于中級SQL注入語句;而后四種D、E、F、G則屬于高級SQL注入語句,主要針對一些具有防御機制的Web應(yīng)用客戶端。

4.2 漏洞檢測系統(tǒng)功能性驗證

利用該系統(tǒng)對測試網(wǎng)站進行A、B、C三類漏洞檢測,該網(wǎng)站大約含有150個鏈接。網(wǎng)絡(luò)爬蟲的遞歸深度為5。最終對網(wǎng)站的測試結(jié)果輸出如下圖:

圖4 測試結(jié)果

對測試結(jié)果統(tǒng)計如下表所示。

表2 測試結(jié)果統(tǒng)計

4.3 漏洞檢測系統(tǒng)有效性驗證

在利用該系統(tǒng)對網(wǎng)站進行SQL注入測試之后,檢測報告中會給出存在漏洞并建議再次驗證的鏈接地址,對這些地址進行手動驗證,即進行人工注入。同時選取市面上常用的啊D、Pongolin兩種SQL注入漏洞檢測工具,對同一個測試網(wǎng)站進行相同的SQL注入攻擊,并比較檢測結(jié)果。比較結(jié)果如表所示:

表3 不同檢測工具結(jié)果比較

對比不同檢測工具的檢測結(jié)果分析可發(fā)現(xiàn),本文檢測系統(tǒng)在檢測率上遠遠優(yōu)于另外兩種,同時檢測漏洞的準(zhǔn)確率也很高,雖然平均檢測時間稍長,但系統(tǒng)的整體性能優(yōu)于其他檢測工具。

5 結(jié)語

SQL注入漏洞是威脅Web安全的重要因素,因此SQL注入漏洞的檢測對于網(wǎng)絡(luò)安全有很高的應(yīng)用價值,只有快速準(zhǔn)確地檢測出漏洞,才能在應(yīng)用受到攻擊前將其清除。本文把Selenium自動化測試工具和Simhash網(wǎng)頁快速比較技術(shù)應(yīng)用于SQL注入漏洞檢測系統(tǒng)中,不僅實現(xiàn)了自動化測試,而且提高了漏洞檢測的效率和準(zhǔn)確率。但該檢測系統(tǒng)在對大網(wǎng)站或者一些擁有簡易防注入措施的網(wǎng)站進行檢測過程中產(chǎn)生誤報,從而影響檢測結(jié)果的正確率和檢測的效率。因此需要構(gòu)造更多類型的SQL注入攻擊語句,同時也要優(yōu)化網(wǎng)頁相似度比對方法,來加強系統(tǒng)在不同情況下檢測SQL注入漏洞的能力,優(yōu)化系統(tǒng)性能。

[1]張晨,汪永益,王雄等.基于網(wǎng)頁DOM樹比對的SQL注入漏洞檢測[J].計算機工程,2012.18:111-115.

[2]Clarke J.SQL注入攻擊與防御[M].黃曉磊,李化,譯.北京:清華大學(xué)出版社,2010.

[3]邊耐政,張琳.一種基于Selenium的Web自動化測試低耦合框架[J].計算機應(yīng)用與軟件,2014,31(8):13-16,37.

[4]羅明宇.基于Selenium的安全自動測試技術(shù)的研究與實現(xiàn)[D].廣東工業(yè)大學(xué),2015.

[5]池水明,闞歆煒,張昱等.基于Simhash的SQL注入漏洞檢測技術(shù)研究[J].計算機時代,2014.3:3-5.

[6]Inyong Lee,Soonki Jeong,Sangsoo Yeo,Jongsub Moon.A novel method for SQL Injection Attack Detection Based on Removing SQL Query Attribute Values[J].Mathmatic 1 and Computer Modelling,2011,55(1):58-68.

[7]練坤梅,許靜,田偉等.SQL注入漏洞多等級檢測方法研究[J].計算機科學(xué)與探索,2011,5(5):474-480.

[8]Unmesh G.Selenium Testing Tools Cookbook[M].Packt Publishing,2012:11-33.

[9]劉書一.基于文本相似度的網(wǎng)頁消重策略[J].計算機應(yīng)用與軟件,2011,28(11):228-278.

[10]郭俊剛.基于Eclipse的自動化測試工具的研究與實現(xiàn)[D].北京交通大學(xué),2012.

[11]高洪濤.SQL注入攻擊途徑及策略分析[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2011:14-16

[12]成曉利.Web應(yīng)用SQL注入漏洞測試系統(tǒng)的研究與實現(xiàn)[D],2012.

SQL Injection Vulnerability Detection System Based on Selenium

LI Ying-jie,REN Hong-min
(College of Information Engineering,Shanghai Maritime University,Shanghai 201306)

In the Web application security vulnerability detection,manual inspection and the use of page alignment algorithm will affect the detection accuracy and efficiency,in the traditional SQL injection vulnerability detection technology based on the establishment of an automatic detection system based on the selenium and use optimization Simhash text similarity detection algorithm to improve the performance of the system,the credibility of the system,the feasibility and results is verified by experiment.

Vulnerabilities with Web Applications;SQL Injection;Selenium;Simhash

1007-1423(2016)21-0020-05

10.3969/j.issn.1007-1423.2016.21.004

栗迎結(jié)(1992-),女,河南開封人,碩士,研究方向為軟件開發(fā)、自動化測試

2016-05-04

2016-07-20

任紅敏(1969-),男,上海人,博士,副教授,研究方向為軟件體系結(jié)構(gòu)、構(gòu)件技術(shù)、軟件復(fù)用、過程工程、軟件項目管理,基于社會計算、群體智能、人本計算、社會網(wǎng)絡(luò)、輿情分析等技術(shù)的軟件資產(chǎn)管理、船舶協(xié)同設(shè)計知識管理等

猜你喜歡
語句漏洞網(wǎng)頁
漏洞
基于HTML5與CSS3的網(wǎng)頁設(shè)計技術(shù)研究
重點:語句銜接
基于selenium的SQL注入漏洞檢測方法
基于CSS的網(wǎng)頁導(dǎo)航欄的設(shè)計
基于HTML5靜態(tài)網(wǎng)頁設(shè)計
基于URL和網(wǎng)頁類型的網(wǎng)頁信息采集研究
漏洞在哪兒
我喜歡
作文語句實錄
临海市| 大渡口区| 卢龙县| 林州市| 湟源县| 博罗县| 哈巴河县| 曲阜市| 平定县| 乐山市| 石泉县| 鄂伦春自治旗| 黄浦区| 瑞丽市| 屏边| 翁牛特旗| 临颍县| 敦煌市| 葫芦岛市| 宝山区| 土默特左旗| 谷城县| 黄梅县| 建湖县| 繁昌县| 黔东| 罗定市| 肥东县| 灵寿县| 兴业县| 磴口县| 平江县| 卢龙县| 婺源县| 盐源县| 普洱| 方山县| 闵行区| 偏关县| 新宾| 池州市|