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

?

一種新的自學(xué)習(xí)web應(yīng)用響應(yīng)分析算法

2016-03-17 02:14:44黃曉芳張亞文
計算機測量與控制 2016年2期

馬 炅,黃曉芳,陶 啟,張亞文

(西南科技大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,四川 綿陽 621010)

?

一種新的自學(xué)習(xí)web應(yīng)用響應(yīng)分析算法

馬炅,黃曉芳,陶啟,張亞文

(西南科技大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,四川 綿陽621010)

摘要:在web應(yīng)用自動滲透測試技術(shù)的發(fā)展中,由于在web應(yīng)用響應(yīng)分析的自動化與智能化方面的研究不足,現(xiàn)有web應(yīng)用自動滲透測試中仍然需要人為經(jīng)驗干預(yù),限制了滲透測試的效率,因此,在研究了關(guān)鍵字響應(yīng)分析技術(shù)與被動提取技術(shù)的基礎(chǔ)上提出了自學(xué)習(xí)響應(yīng)分析算法,該算法利用關(guān)鍵字詞庫對響應(yīng)結(jié)果進(jìn)行分析,若沒有匹配成功再利用啟發(fā)式分析技術(shù)進(jìn)行分析,當(dāng)分析結(jié)果有效則提取響應(yīng)的關(guān)鍵字加入詞庫以達(dá)到自學(xué)習(xí)的目的;實驗證明,該算法能夠?qū)y試響應(yīng)結(jié)果自動地進(jìn)行分析,突破了關(guān)鍵字分析技術(shù)只能分析含有關(guān)鍵字的響應(yīng)這一局限,同時,比單純被動響應(yīng)提取技術(shù)具有更高的效率。

關(guān)鍵詞:web應(yīng)用;響應(yīng)分析;自學(xué)習(xí)

0引言

伴隨著計算機技術(shù)與互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,Internet極大地豐富了人類的生活,世界各地豐富多彩的信息得以在一瞬間進(jìn)行交流。Web應(yīng)用已經(jīng)遍布使用到各行各業(yè)中,各種各樣的服務(wù)滿足了不同人群的不同需求。同時,web應(yīng)用不再是一些共有的即能夠共享的信息,大量私密的和高度敏感的信息由于網(wǎng)上應(yīng)用的需要而保存在相關(guān)Web服務(wù)器中。目前,Web應(yīng)用還在朝著更加豐富和復(fù)雜、但又更易于讓用戶操作的方向不斷地發(fā)展。在互聯(lián)網(wǎng)給用戶帶來過去從未有過的豐富生活的同時,web應(yīng)用的安全問題[1]也愈演愈烈,己經(jīng)成為世界所關(guān)注的焦點。因此對web應(yīng)用的安全測試就成為了當(dāng)今網(wǎng)絡(luò)技術(shù)一個非常重要的研究課題。很多web應(yīng)用滲透測試軟件應(yīng)運而生,但是,因為web應(yīng)用響應(yīng)分析技術(shù)自動化水平較低,限制了滲透測試軟件在自動化智能化方向的發(fā)展,所以自動化web響應(yīng)分析算法的研究成為解決這一問題的關(guān)鍵。

1相關(guān)研究

目前,對web安全問題的研究多是關(guān)于其運行環(huán)境的研究,例如web應(yīng)用所依賴的服務(wù)器、服務(wù)器軟件、數(shù)據(jù)庫等。對web應(yīng)用程序滲透測試技術(shù)[2-8]的研究在國內(nèi)外都是剛剛起步,滲透測試程序會首先向web應(yīng)用發(fā)送精心構(gòu)造的帶有攻擊字符串的請求,然后根據(jù)web應(yīng)用的響應(yīng)來分析漏洞存在與否。但是,由于這些響應(yīng)信息都是由程序員設(shè)計的,這就導(dǎo)致了由程序來理解分析這些響應(yīng)信息就會有一定的困難。這也是在文獻(xiàn)[3-7]中滲透測試程序的響應(yīng)是由人工分析而沒有實現(xiàn)分析自動化的原因。

為解決這一問題Raghavan等人在文[9]中提出了基于關(guān)鍵字的響應(yīng)分析算法。該算法通過匹配響應(yīng)頁面中的關(guān)鍵字(如“ODBC Error”、“incorect”、“wrong”、“missing”、“invalid”、“erro”、“error”等)來判斷滲透測試是否成功,web應(yīng)用是否存在漏洞。該算法的優(yōu)點是當(dāng)錯誤的響應(yīng)信息中存在這些關(guān)鍵字時算法耗時短,計算資源、網(wǎng)絡(luò)資源占用少因而具有很高的效率。缺點也非常明顯,當(dāng)錯誤的響應(yīng)信息中不包含這些關(guān)鍵字時,該算法無法對響應(yīng)做出正確的分析判斷??梢妴渭兊年P(guān)鍵字分析算法有著很大的局限性,不能運用于實踐之中。

YaoWen Huang等人在文[8]中提出了一個簡單的被動響應(yīng)提取算法(negative response extraction,NRE),下面以SQL注入為例簡單闡述該算法的思想:

1)使用SQL注入字符串構(gòu)造一個對目標(biāo)web應(yīng)用的請求,將響應(yīng)記為R1;

2)使用一個非法字符串(如長度過大的字符串)構(gòu)造會產(chǎn)生錯誤的web應(yīng)用請求,將響應(yīng)記為R2;

3)使用一個合法字符串構(gòu)造一個web應(yīng)用請求,將響應(yīng)記為R3。

假定R1響應(yīng)失敗,對比R1、R2、R3三個響應(yīng)的相似程度可以推斷出R1響應(yīng)的意義,其可能的組合如表1所示。

表1 NRE算法組合形式

該算法可以在不需要任何附加信息(如關(guān)鍵字)的前提下分析出R1響應(yīng)所代表的含義,主要功能是判定R1響應(yīng)失敗的原因是因為惡意字符串被過濾還是因為web應(yīng)用根本不存在注入漏洞。但是該算法的缺點也是非常明顯:

首先,假定R1響應(yīng)是一個滲透測試失敗的響應(yīng),那這個R1響應(yīng)成功與否又依據(jù)什么來判定呢?

其次,對于一個SQL注入字符串就需要至少發(fā)送3次web請求,效率較低,網(wǎng)絡(luò)延遲會對滲透測試軟件產(chǎn)生很大影響。

2自學(xué)習(xí)響應(yīng)分析算法

在以上研究的基礎(chǔ)上,我們對被動響應(yīng)提取算法進(jìn)行了改進(jìn),并結(jié)合關(guān)鍵字響應(yīng)技術(shù)提出了一種自學(xué)習(xí)響應(yīng)分析算法。該算法實現(xiàn)了自動化響應(yīng)分析,算法描述如下:

1)利用關(guān)鍵字響應(yīng)分析技術(shù)來分析帶有攻擊字符串請求所引發(fā)的響應(yīng),當(dāng)匹配關(guān)鍵字成功時直接得出相應(yīng)的結(jié)論,分析結(jié)束。若沒有匹配成功則執(zhí)行2。

2)啟發(fā)式響應(yīng)分析,主要完成兩項工作:滲透測試結(jié)果判定與關(guān)鍵字學(xué)習(xí)。下面是啟發(fā)式響應(yīng)分析中用到的概念與變量的定義。

定義1字符串S,模擬的get或post請求中的參數(shù)(構(gòu)造方法在章節(jié)3.2.3闡述)。

定義2攻擊請求Q1,參數(shù)為S+攻擊字符串的get或post請求。

定義3錯誤請求Q2,帶有非法參數(shù)的get或post請求。

定義4正常請求Q3,參數(shù)僅為S的get或post請求。

定義5響應(yīng)R1/R2/R3,為發(fā)送攻擊請求/錯誤請求/正常請求時所產(chǎn)生的響應(yīng)。

定義6關(guān)系R,表示R1、R2、R3三者之間的關(guān)系。

定義7記錄FailCount,記錄滲透測試中攻擊字符串測試沒有通過的個數(shù),初始值為0。

定義8屏蔽詞,英文中的代詞、數(shù)詞、冠詞、介詞、連詞、感嘆與其他詞(am、is、are、be、being等)。

定義9關(guān)鍵字詞庫,響應(yīng)匹配關(guān)鍵字的集合,每個關(guān)鍵字有一個頻度屬性與更新時間屬性。

定義10準(zhǔn)關(guān)鍵字詞庫,測試過程中所有字詞的集合,每個字詞有一個頻度屬性與更新時間屬性。

啟發(fā)式響應(yīng)分析中,滲透測試結(jié)果判斷的流程如圖1所示。

圖1滲透測試結(jié)果判斷流程圖

步驟描述如下:

1)首先,分別發(fā)送請求Q1、Q2、Q3,獲得響應(yīng)R1、R2、R3。

需要注意的是,與Y.W. Huang等人提出的NRE不同,該算法需要根據(jù)攻擊字符串與R1、R2、R3的關(guān)系R共同推斷該測試是否成功。也就是說,需要攻擊字符串與關(guān)系R共同確定其對應(yīng)的測試結(jié)論,因為不同的攻擊字符串針對同一個關(guān)系R會得出不同的結(jié)論。下面是3個示例是3個攻擊字符串與關(guān)系R的組合。

示例一:攻擊字符串“’”(http://xxx.com/xx.php?id=’)與關(guān)系R所對應(yīng)的結(jié)論如表2。

表2 “’”與關(guān)系R對應(yīng)結(jié)論

示例二:攻擊字符串“ and 1=1”(http://xxx.com/xx.php?id=X and 1=1)與關(guān)系R所對應(yīng)的結(jié)論如表3所示。

表3 “ and 1=1”與關(guān)系R對應(yīng)結(jié)論

示例三:攻擊字符串“ and 1=2”(http://xxx.com/xx.php?id=X and 1=2)與關(guān)系R對應(yīng)的結(jié)論如表4所示。

表4 “ and 1=2”與關(guān)系R對應(yīng)結(jié)論

2)然后,根據(jù)攻擊字符串與關(guān)系R查表得出對應(yīng)結(jié)論。因為,這些對應(yīng)的結(jié)論里面對于成功的測試也只是給出可能成功的判斷,所以只有對一個注入點構(gòu)造的所有攻擊字符串請求都得出可能存在漏洞時,才可以判斷它可能存在漏洞,只要一個攻擊字符串得出的結(jié)論是不存在漏洞,則該請求就不存在漏洞。

若最終結(jié)論是可能存在漏洞,則提取R1的英文文本信息,進(jìn)行關(guān)鍵字學(xué)習(xí),其流程如圖2所示。

圖2 關(guān)鍵字學(xué)習(xí)流程圖

過濾掉R1的屏蔽詞之后存入準(zhǔn)關(guān)鍵字詞庫,之后計算關(guān)鍵字詞庫中詞條的平均匹配頻度AVG,然后把準(zhǔn)關(guān)鍵字詞庫中頻度超過AVG且最近更新時間大于關(guān)鍵字詞庫中最小更新時間的記錄寫入關(guān)鍵字詞庫。

3算法實現(xiàn)

3.1系統(tǒng)架構(gòu)

web響應(yīng)分析算法是為了實現(xiàn)web滲透測試系統(tǒng)的自動化而設(shè)計,在研究基于Java的Web互動軟件設(shè)計與實現(xiàn)[10]等文的基礎(chǔ)上設(shè)計了該系統(tǒng)的總體架構(gòu)如圖3所示。

圖3 系統(tǒng)總體架構(gòu)圖

其中爬蟲模塊用于爬取web應(yīng)用的內(nèi)容,內(nèi)容分析模塊將網(wǎng)頁內(nèi)容構(gòu)造成DOM樹,將可以與web應(yīng)用進(jìn)行交互的get請求或post表單提交給滲透測試模塊,滲透測試模塊使用攻擊字符串構(gòu)造請求發(fā)送給web應(yīng)用,并將web響應(yīng)提交給響應(yīng)分析模塊,最后把分析結(jié)果生成報告輸出。web響應(yīng)分析算法的實現(xiàn)是在響應(yīng)分析模塊中。

3.2算法實現(xiàn)

3.2.1建立詞庫

為了存儲關(guān)鍵字需要建立關(guān)鍵字詞庫與準(zhǔn)關(guān)鍵字詞庫,在數(shù)據(jù)庫中建立兩個數(shù)據(jù)庫表,分別取名為keywords與pre_keywords。這兩個表除表名不同以外,其他都相同,都具有3個屬性列,分別為name(關(guān)鍵字拼寫)、freq(關(guān)鍵字被匹配的頻度)、update(最后一次被匹配的時間)。其中,關(guān)鍵字詞庫是根據(jù)滲透測試人員的實踐經(jīng)驗添加的關(guān)鍵字,并為其freq與update賦予初值;準(zhǔn)關(guān)鍵字詞庫是所有測試收集到的準(zhǔn)關(guān)鍵字集合。

為了過濾代詞、數(shù)詞、冠詞、介詞、連詞、感嘆與其他詞,創(chuàng)建一個屏蔽詞庫表filter_words。

3.2.2關(guān)鍵字匹配

將文本信息拆分為單詞,經(jīng)過屏蔽詞庫的過濾后存儲在一個字符串?dāng)?shù)組中。然后先使用關(guān)鍵字詞庫進(jìn)行匹配(字符串完全相同或字符串是關(guān)鍵字的一部分,不區(qū)分大小寫),若匹配成功將該關(guān)鍵字的頻度freq+1,若沒有匹配成功,則使用準(zhǔn)關(guān)鍵字詞庫中頻度超過關(guān)鍵字詞庫平均頻度80%的關(guān)鍵字進(jìn)行匹配,同樣,匹配成功將該關(guān)鍵字的freq+1,同時更新update。以此法匹配字符串?dāng)?shù)組中的所有單詞,只要有一個匹配成功,就可以得出“滲透測試可能成功”的結(jié)論,并將總共匹配成功的關(guān)鍵字?jǐn)?shù)記為N,這個N可以在一定程度上說明結(jié)論的可信性,N值越大,結(jié)論越可信,因此可以作為報告中的一個參數(shù)。如果都沒有匹配成功則進(jìn)行啟發(fā)式分析。

3.2.3啟發(fā)式分析

在啟發(fā)式響應(yīng)分析中字符串S的構(gòu)造方法如下:

對于get請求如http://xxx.com/xxx.asp?Id=10、http://xxx.com/xxx.php?Loginname=xxx等,將“=”后面的字符串賦值給S;對于post請求,需要根據(jù)表單的name屬性來構(gòu)造S,如對于,如果匹配到name屬性中含有“email”這一特征字,則需要構(gòu)造一個郵箱地址形式的S,同理,匹配到name屬性“name”、“l(fā)ogin”等則需要構(gòu)造一個簡單字符串;如果我們設(shè)置的所有特征字都沒有匹配到,就使用一個簡單默認(rèn)字符串。

字符串S構(gòu)造完成之后,按照啟發(fā)式分析算法,依次發(fā)送請求Q1、Q2、Q3。然后調(diào)用Winmerge比較響應(yīng)R1、R2、R3,得出關(guān)系R,用R與攻擊字符串查表得出測試結(jié)論。

對同一個請求,所有攻擊字符串結(jié)果判定都為“可能存在漏洞”時,才判斷該請求的注入點可能存在漏洞。若最終測試結(jié)果為“可能存在漏洞”,就將R1解析為DOM樹,抽取其主要標(biāo)簽的文本信息,經(jīng)屏蔽詞庫過濾后,存入準(zhǔn)關(guān)鍵字詞庫,如果該詞已存在則freq+1并更新update。

然后計算關(guān)鍵字詞庫的平均頻度AVG,把準(zhǔn)關(guān)鍵字詞庫中頻度超過AVG且更新時間大于關(guān)鍵字詞庫中的最小更新時間的字詞加入到關(guān)鍵字詞庫中,并刪除其在準(zhǔn)關(guān)鍵字詞庫中的記錄。

4實驗與結(jié)論

我們把滲透測試模塊與響應(yīng)分析模塊組合成一個Demo程序。為滲透測試模塊提供一系列web應(yīng)用的請求,然后由分析測試模塊進(jìn)行分析。

Demo演示程序界面如圖4所示。

圖4 Demo演示程序界面

為了驗證算法的可行性與正確性我們做了4個實驗,分別為:

實驗一,連續(xù)測試50次本地搭建的帶有SQL注入漏洞的web應(yīng)用,即對同一請求測試50次;

實驗二,測試200個不存在SQL注入漏洞的get請求;

實驗三,測試200個存在SQL注入漏洞的get請求;

實驗四,隨機測試500個get請求。

其中g(shù)et請求都是通過google語法“inurl”搜索得到,實驗三中的請求也都經(jīng)過人工測試確實是含有SQL注入漏洞的。由于只是測試該算法是可行性與正確性,測試數(shù)據(jù)不是很多,關(guān)鍵字只設(shè)置了“odbc”、“incorect”、“wrong”、“missing”、“invalid”、“mistake”、“error”并將關(guān)鍵字詞庫的頻度統(tǒng)一設(shè)定為50,時間設(shè)定為測試時的系統(tǒng)時間。實驗結(jié)果如表5所示。

表5 實驗結(jié)果

四次實驗之后關(guān)鍵字頻度如圖5所示。

圖5 關(guān)鍵字頻度

實驗一是對同一測試請求的多次訓(xùn)練,成功將我們設(shè)置的mysql、root加入關(guān)鍵字詞庫;實驗二的對象因沒有漏洞故沒有產(chǎn)生新的關(guān)鍵字;實驗三的對象是已經(jīng)證明存在SQL注入的請求,找出183個請求,新增warning、webroot、usr三個關(guān)鍵字;實驗四是隨機尋找的get請求,因為存在漏洞的請求較少,沒有新增關(guān)鍵字。

經(jīng)過分析可以看出,該算法可以以一個較高的正確率自動化分析web應(yīng)用請求,并自學(xué)習(xí)添加關(guān)鍵字??朔藛渭冴P(guān)鍵字分析與NRE的不足,同時又兼具了二者的優(yōu)點。其不足之處在于,需要大量的測試數(shù)據(jù)來進(jìn)行訓(xùn)練,初始關(guān)鍵字頻度的設(shè)定對于算法運行時的正確性與效率有著較高的影響,但這一參數(shù)的設(shè)定需要在長時間實踐中確定,而且隨著程序員web開發(fā)習(xí)慣的變化應(yīng)做出相應(yīng)的調(diào)整,這也是我們下一步研究改進(jìn)的方向。

5結(jié)束語

本文提出的自學(xué)習(xí)響應(yīng)分析算法實現(xiàn)了對響應(yīng)的自動化分析與判定,對于web應(yīng)用滲透測試程序自動化的發(fā)展有著積極的意義。進(jìn)一步的研究工作是改進(jìn)將關(guān)鍵字從準(zhǔn)關(guān)鍵字詞庫加入到關(guān)鍵字詞庫的算法,使得自學(xué)習(xí)響應(yīng)分析算法能夠更快更準(zhǔn)確的將關(guān)鍵字找到并加入關(guān)鍵字詞庫。

參考文獻(xiàn):

[1] 張炳帥. web安全深度剖析 [M]. 北京:電子工業(yè)出版社, 2015.

[2] 于莉莉,杜蒙杉,張平. web安全性測試技術(shù)綜述[J]. 計算機應(yīng)用研究,2012(11):4001-4005.

[3] 邢斌,高嶺,孫騫. 一種自動化的滲透測試系統(tǒng)的設(shè)計與實現(xiàn)[J]. 計算機應(yīng)用研究,2010, 27(4): 1384-1387.

[4] 潘古兵,周彥暉. 基于靜態(tài)分析和動態(tài)檢測的XSS漏洞發(fā)現(xiàn) [J]. 計算機科學(xué),2012(39): 51-53.

[5] 張宗之. 基于爬蟲技術(shù)的web應(yīng)用漏洞挖掘的研究[D].北京:北京郵電大學(xué),2012.

[6] 浦石. Web安全滲透測試研究 [D].西安:西安電子科技大學(xué), 2010.

[7] 趙麗娟. Web應(yīng)用程序滲透測試方法研究 [D].長沙:中南大學(xué), 2014.

[8] Huang Y W, Huang S K, Lin T P. Web application security assessment by fault injection and behavior monitoring[A].Proceedings of the 12th International Conference on World Wide Web,2003[C]. Budapest, Hungary,2003.

[9] Raghavan S, Garcia-Molina H. Crawling the HiddenWeb[A]. Proceedings of the 27th VLDB Conference 2001[C]. Roma,Italy,2001.

[10] 蔡小剛,何麗,周利華. 基于Java的Web互動軟件設(shè)計與實現(xiàn)[J].計算機測量與控制,2003:44-46.

A New Algorithm of Self-learning Web Application Response Analysis

Ma Jiong, Huang Xiaofang, Tao Qi, Zhang Yawen

(College of Computer Science & Technology, Southwest University of Science & Technology,Mianyang621010, China)

Abstract:Little research about the analysis of web applications’s response has been done . Its level of automation and intelligence is very low. And web penetration still requires human intervention which directly limit its efficiency . To solve this problem,key words analysis and negative response extraction have been studied, and with the help of the two technology a algorithm named self-learnning response analysis is proposed. At first the algorithm use key words to ananlyse the response. If it fails, heuristic analysis technology is used to work it out. The key words extracted from the response will be stored in the database which is used to keep key words. Experimental results show that the algorithm can analyse the response quickly and correctly. And it can analyse the response that key words analysis can not. At the same time, it is more efficient than negative response extraction.

Keywords:web application; response analysis; self-learning

文章編號:1671-4598(2016)02-0251-04

DOI:10.16526/j.cnki.11-4762/tp.2016.02.069

中圖分類號:TP391

文獻(xiàn)標(biāo)識碼:A

作者簡介:馬炅(1990-),男,山東泰安人,碩士研究生,主要從事網(wǎng)絡(luò)安全方向的研究。

基金項目:國家自然科學(xué)基金項目(61303230);四川省科技支撐計劃項目(11ZS2010)。

收稿日期:2015-08-26;修回日期:2015-09-17。

肥城市| 元江| 枣强县| 卓资县| 镇赉县| 台北县| 华安县| 苗栗县| 临沭县| 子长县| 七台河市| 岑巩县| 二连浩特市| 曲阳县| 汝南县| 子洲县| 乌拉特中旗| 张掖市| 彰武县| 剑河县| 成安县| 尉犁县| 都匀市| 盈江县| 平南县| 三穗县| 蒙城县| 沁源县| 曲水县| 海安县| 峨眉山市| 常山县| 白河县| 伊春市| 台江县| 中阳县| 湘潭县| 碌曲县| 曲阳县| 阿瓦提县| 洛扎县|