亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于語(yǔ)義分析的SQL注入行為檢測(cè)方案研究

        2019-11-28 13:40:32曹鵬飛潘緒超王凡潘曉峰包婷婷
        計(jì)算機(jī)時(shí)代 2019年11期

        曹鵬飛 潘緒超 王凡 潘曉峰 包婷婷

        摘 ?要: 目前SQL注入攻擊已成為Web安全領(lǐng)域中最為常見的攻擊方式,SQL注入攻擊可以泄露用戶信息,獲取系統(tǒng)權(quán)限和篡改網(wǎng)頁(yè)信息等。文章設(shè)計(jì)了基于語(yǔ)義分析的SQL注入行為檢測(cè)方案,能夠?qū)粜袨閺恼Z(yǔ)義的角度進(jìn)行檢測(cè)。該方案包括數(shù)據(jù)預(yù)處理,抽象語(yǔ)法樹,語(yǔ)義分析等功能模塊,針對(duì)漏洞相關(guān)語(yǔ)言的編譯器,通過對(duì)攻擊者輸入的內(nèi)容串進(jìn)行語(yǔ)法語(yǔ)義檢查來判斷該請(qǐng)求的惡意程度,理解攻擊者意圖,能實(shí)現(xiàn)對(duì)SQL注入攻擊的精準(zhǔn)識(shí)別。

        關(guān)鍵詞: SQL注入; Web攻擊; 語(yǔ)法分析; 語(yǔ)義分析

        中圖分類號(hào):TP399 ? ? ? ? ?文獻(xiàn)標(biāo)志碼:A ? ? 文章編號(hào):1006-8228(2019)11-18-05

        Abstract: At present, SQL injection attack has become the most common attack mode in the field of Web security. SQL injection attack can reveal user information, obtain system privileges and tamper with Webpage information. This paper designs a SQL injection behavior detection scheme based on semantic analysis, which can detect attack behavior from the semantic point of view. The function modules of the scheme include data preprocessing, abstract grammar tree and semantic analysis etc. For the compiler of vulnerability-related languages, the malicious degree of the request can be judged by checking the grammatical semantics of the attacker's input content strings, and the attacker's intention can be understood. It can realize the accurate identification of SQL injection attacks.

        Key words: SQL injection; Web attack; syntax analysis; semantic analysis

        0 引言

        隨著互聯(lián)網(wǎng)迅速發(fā)展,Web應(yīng)用程序在各個(gè)領(lǐng)域都廣泛應(yīng)用,但Web應(yīng)用程序的構(gòu)造也越來越復(fù)雜,隨之帶來的攻擊問題也越發(fā)嚴(yán)重,SQL注入攻擊已經(jīng)成為首要威脅[1]。傳統(tǒng)的SQL注入檢測(cè)方法是基于規(guī)則或特定的檢測(cè)模式,需要先分析特定注入產(chǎn)生的原因,再制定相應(yīng)的檢測(cè)規(guī)則。隨著大數(shù)據(jù)技術(shù)的普及應(yīng)用以及詞法、語(yǔ)義方法的日漸成熟,基于上下文邏輯實(shí)現(xiàn)攻擊檢測(cè),能夠降低誤報(bào)率、提升精準(zhǔn)率、提高檢測(cè)效率[2]。

        本文針對(duì)傳統(tǒng)規(guī)則檢測(cè)模式的不足提出了從語(yǔ)義分析的角度來進(jìn)行SQL注入行為檢測(cè),從詞法、語(yǔ)法的結(jié)合深層貫穿邏輯的查找,在傳統(tǒng)的正則匹配的基礎(chǔ)上,提高了檢測(cè)準(zhǔn)確度。能在不知曉網(wǎng)站結(jié)構(gòu)的情況下,僅通過分析用戶的輸入就可以檢測(cè)出可能的SQL注入行為并進(jìn)行預(yù)警。

        1 基于語(yǔ)義分析的SQL注入行為檢測(cè)方案設(shè)計(jì)

        本文以Web引擎擴(kuò)展為載體,通過對(duì)關(guān)鍵信息進(jìn)行語(yǔ)法分析,得到代碼的關(guān)鍵元素為節(jié)點(diǎn)和相關(guān)依賴關(guān)系,并通過語(yǔ)法分析模塊實(shí)現(xiàn)語(yǔ)義理解從而完成SQL注入行為檢測(cè),在分析過程中提出抽象語(yǔ)法樹的建立,通過語(yǔ)義分析得出SQL注入危險(xiǎn)狀態(tài)值,準(zhǔn)確定位SQL注入行為的惡意發(fā)生行為點(diǎn),篩除噪音[3]。如圖1所示,系統(tǒng)結(jié)構(gòu)包括預(yù)處理模塊和語(yǔ)義分析模塊。

        預(yù)處理模塊:將用戶輸入信息進(jìn)行關(guān)鍵字的提取,通過詞法分析與語(yǔ)法分析結(jié)合,生成抽象語(yǔ)法樹。根據(jù)正常語(yǔ)句返回結(jié)果的異同,測(cè)試該處是否存在SQL注入行為。

        語(yǔ)義分析模塊:檢測(cè)是否存在SQL注入行為,依靠傳統(tǒng)的正則匹配的方法,存在漏檢情況。本模塊結(jié)合Adaboost算法與FP-growth算法形成完整的語(yǔ)義分析模型,從上下文的邏輯商增強(qiáng)檢測(cè)的準(zhǔn)確性。

        1.1 預(yù)處理模塊

        預(yù)處理模塊利用了詞法分析和語(yǔ)法分析對(duì)接收的待檢測(cè)文件進(jìn)行初步的分析,主要流程如圖2。

        預(yù)處理主要在Web環(huán)境下解析(Parser),構(gòu)建由詞法分析器和語(yǔ)法分析器組合的預(yù)處理模塊。如用戶輸入一串帶有SQL注入攻擊的語(yǔ)句,將用戶輸入的關(guān)鍵信息放入預(yù)處理器中。詞法分析器首先進(jìn)行字符集合分析,生成屬性關(guān)鍵字(Tokens)格式化傳入語(yǔ)法分析器中進(jìn)行抽象語(yǔ)法樹的節(jié)點(diǎn)整合,最終輸出抽象語(yǔ)法樹。對(duì)具有SQL注入的信息進(jìn)行定位。

        1.2 語(yǔ)法分析模塊

        SQL注入攻擊利用SQL語(yǔ)法中保留字、運(yùn)算符作為輸入內(nèi)容,通過預(yù)處理對(duì)Web環(huán)境下的SQL注入輸入進(jìn)行分析定位,并使用抽象語(yǔ)法樹的構(gòu)建,讓后續(xù)的機(jī)器能夠在全文上下邏輯中整體理解輸入內(nèi)容。語(yǔ)法分析模塊主要在結(jié)合算法解決SQL注入的檢測(cè)的不夠全面以及之前的依靠正則匹配不斷加規(guī)則的檢測(cè)技術(shù)。

        利用AdaBoost算法分析當(dāng)前迭代最優(yōu)弱危險(xiǎn)分析器[4],計(jì)算最優(yōu)弱分析器的權(quán)重,并根據(jù)錯(cuò)誤率更新分析樣本權(quán)重,然后不斷重復(fù)以上步驟,直到達(dá)到能夠終止條件為止。終止條件是強(qiáng)分析器的錯(cuò)誤率低于最低錯(cuò)誤率閾值或者達(dá)到最大危險(xiǎn)分析迭代次數(shù)。計(jì)算公式如下:

        采用FP-Growth算法[5][6],進(jìn)行關(guān)聯(lián)分析,實(shí)現(xiàn)通過上下邏輯的分析,檢測(cè)出是否存在SQL注入攻擊行為。此算法有兩個(gè)運(yùn)算階段,第一階段使用循環(huán)掃描信息查找滿足最小支持度地關(guān)聯(lián)項(xiàng)集,第二階段則運(yùn)用連續(xù)低階的關(guān)聯(lián)項(xiàng)集,從而確認(rèn)高階關(guān)聯(lián)項(xiàng)集的支持度,并且篩選出其中最小支持度的關(guān)聯(lián)項(xiàng)集,最終達(dá)到所有關(guān)聯(lián)項(xiàng)集都被挖掘出,并且得出關(guān)聯(lián)規(guī)則。

        2 系統(tǒng)實(shí)現(xiàn)

        2.1 系統(tǒng)總體實(shí)現(xiàn)

        SQL注入檢測(cè)框架結(jié)構(gòu),如圖3所示。

        該系統(tǒng)主要布置在客戶端及服務(wù)器端之間,由數(shù)據(jù)收集模塊、預(yù)處理模塊,以及語(yǔ)義分析模塊組成。其中,數(shù)據(jù)收集模塊利用抓包工具采集用戶輸入,預(yù)處理模塊分析關(guān)鍵信息并輸出抽象語(yǔ)法樹,發(fā)現(xiàn)是否存在SQL注入語(yǔ)句。語(yǔ)義分析模塊主要運(yùn)用語(yǔ)義分析方法進(jìn)一步上下的邏輯解析。

        SQL注入行為實(shí)施主要通過HTTP協(xié)議中的內(nèi)容向服務(wù)器發(fā)送帶有SQL注入命令的請(qǐng)求來完成注入攻擊。對(duì)于HTTP協(xié)議來說,主要有3種方式向服務(wù)網(wǎng)端提交數(shù)據(jù):以GET方式在URL鏈接的參數(shù)中提交;以POST方式在HTTP協(xié)議的數(shù)據(jù)體中提交;以COOKIE方式提交。本設(shè)計(jì)主要針對(duì)是URL和HTTP協(xié)議數(shù)據(jù)體中的數(shù)據(jù)。

        2.2 預(yù)處理模塊實(shí)現(xiàn)

        將Web應(yīng)用程序中輸入信息放置預(yù)處理模塊,處理過程分為詞法分析和語(yǔ)法分析。詞法分析模塊選取當(dāng)前Web解釋器使用的Parser分析器,提取解釋器的標(biāo)準(zhǔn)定義規(guī)則文件。語(yǔ)法分析程序Bison根據(jù)標(biāo)準(zhǔn)定義語(yǔ)法規(guī)則還原語(yǔ)法中的程序邏輯,構(gòu)建完整的抽象語(yǔ)法樹AST。預(yù)處理模塊包括flex詞法分析和Bison語(yǔ)法分析。

        系統(tǒng)調(diào)用start()函數(shù)啟動(dòng)詞法分析,逐個(gè)掃描每一個(gè)詞法單元,調(diào)用new()函數(shù)建立新的葉子節(jié)點(diǎn),通過return返回。詞法單元在抽象語(yǔ)法樹中是終結(jié)點(diǎn)(葉子節(jié)點(diǎn))。第三個(gè)參數(shù)是data,是詞法單元行編號(hào)。詞法分析需要對(duì)每個(gè)終節(jié)點(diǎn)建立葉子節(jié)點(diǎn),來給語(yǔ)法分析過程調(diào)用。

        start(){

        start.a=new("IF",0,data);return IF;

        start.a=new("ELSE",0,data); return ELSE;

        start.a=new("WHILE",0,data); return WHILE;

        start.a=new("PLUS",0,data); return PLUS;

        start.a=new("MINUS",0,data); return MINUS;}

        通過對(duì)照SQL詞法與語(yǔ)法分析轉(zhuǎn)換表,代碼實(shí)現(xiàn)AST節(jié)點(diǎn)的類型分類:

        typedef ?{

        TYPE_NONE ? ? ? ?= 0

        , TYPE_KEYWORD ? ? = (int)'k'

        , TYPE_UNION ? ? ? = (int)'U'

        , TYPE_GROUP ? ? ? = (int)'B'

        , TYPE_EXPRESSION ?= (int)'E'

        , TYPE_SQLTYPE ? ? = (int)'t'

        , TYPE_FUNCTION ? ?= (int)'f'

        , TYPE_BAREWORD ? ?= (int)'n'

        , TYPE_NUMBER ? ? ?= (int)'1'

        , TYPE_VARIABLE ? ?= (int)'v'

        , TYPE_STRING ? ? ?= (int)'s'

        , TYPE_OPERATOR ? ?= (int)'o'

        , TYPE_LOGIC_OPERATOR = (int)'&'

        , TYPE_COMMENT ? ? = (int)'c'

        } sqli_token_types;

        上述生成Token完成了抽象語(yǔ)法樹中的節(jié)點(diǎn)分類,主要包括SQLObject、SQLExpr、SQLStatement三種類型。抽象樹通過自底向上的方式建立,先將詞法單元建立對(duì)應(yīng)的葉子節(jié)點(diǎn),由詞法單元葉子節(jié)點(diǎn)產(chǎn)生新的父節(jié)點(diǎn),進(jìn)行規(guī)約,直到起始單元,完成整顆語(yǔ)法樹的建立。

        抽象語(yǔ)法樹[7]的建立需要對(duì)節(jié)點(diǎn)進(jìn)行打印,SQLUtils()函數(shù)將SQLExpr或者SQLStatement類型打印為String類型,便于后續(xù)的語(yǔ)義分析模型進(jìn)行自定義遍歷處理。

        SQLUtils() {

        static String toSQLString(SQLObject sqlObj, String dbType);

        static String toSQLString(List statementList, String dbType);}

        2.3 語(yǔ)義分析模塊實(shí)現(xiàn)

        語(yǔ)義分析模塊結(jié)合AdaBoost算法和FP-Growth算法的基礎(chǔ)上實(shí)現(xiàn)基于上下邏輯的快速,全面的SQL注入攻擊檢測(cè)。AdaBoost算法以其進(jìn)行SQL注入樣本迭代分析的方法,實(shí)現(xiàn)降低漏檢率,提高精確度。算法的實(shí)現(xiàn),要先建立數(shù)據(jù)集并轉(zhuǎn)換為后續(xù)需要的方式,然后結(jié)合加權(quán)原則尋找最佳單層決策樹。

        Find(dataMatrix,dimen,threshVal,threshIneq){

        retArray=ones((shape(dataMatrix)[0],1))

        if threshIneq=='lt':

        retArray[dataMatrix[:,dimen]<=threshVal]=-1.0

        else:

        retArray[dataMatrix[:,dimen]>threshVal]=-1.0

        def buildStump(dtArry,Labels,D):

        dataMatrix=mat(dtArry);

        labelMat=mat(Labels).T;

        m,n=shape(dataMatrix);numSteps=10.0;

        bestStump={};

        bestClasEst=mat(zeros((m,1)))

        minError=inf

        }

        代碼中Find()函數(shù)完成了建立單層決策樹,并進(jìn)行樣本分類,計(jì)算出錯(cuò)誤率。錯(cuò)誤率的計(jì)算是對(duì)應(yīng)在相對(duì)權(quán)重上的,最后進(jìn)行累加得到分析器的錯(cuò)誤率。

        Create(self, nameValue, numOccur, parentNode)

        函數(shù)Create()使用數(shù)據(jù)集以及最小支持度作為參數(shù)來構(gòu)建FP樹。

        函數(shù)Outlet()對(duì)用戶輸入的SQL語(yǔ)句進(jìn)行上下邏輯的遍歷,尋找出關(guān)聯(lián)集,并進(jìn)行排序更新樹,最終輸出存在的SQL注入攻擊的行為檢測(cè)結(jié)果。

        Outlet(){

        freqItemSet = set(SQLSample.keys())

        updateFPtree(orderedItem,retTree,SQLSample,count)

        return retTree, SQLSample;

        }

        3 實(shí)驗(yàn)

        3.1 實(shí)驗(yàn)環(huán)境

        本文環(huán)境在LAMP架構(gòu)下的Web應(yīng)用進(jìn)行安全防護(hù)測(cè)試,具體環(huán)境如下:

        操作系統(tǒng):Ubuntu 16.04 LTS;

        Web服務(wù)器:Apache、PHP語(yǔ)言;

        數(shù)據(jù)庫(kù):MySQL;

        解釋器:JavaScript Parser。

        本文使用開源Python庫(kù)Libinjection作為預(yù)處理、詞法和語(yǔ)法分析模塊實(shí)現(xiàn)平臺(tái),關(guān)鍵字為檢測(cè)對(duì)象,對(duì)該系統(tǒng)的性能進(jìn)行測(cè)試,指標(biāo)包括漏報(bào)率和誤報(bào)率,時(shí)間作為主要的相應(yīng)時(shí)間。

        3.2 實(shí)驗(yàn)方法

        本文測(cè)試的樣本數(shù)據(jù)來源于Github上SQL注入攻擊樣本,選取共計(jì)2000條,其中刪除部分生僻以及類似的SQL注入攻擊語(yǔ)句,挑選1500條作為最終測(cè)試樣本,在實(shí)驗(yàn)過程中,使用抓包WireShark工具來收集網(wǎng)站頁(yè)面返回的實(shí)際信息。

        3.3 實(shí)驗(yàn)結(jié)果

        經(jīng)過測(cè)試,威脅等級(jí)判斷結(jié)果如1表所示:

        實(shí)驗(yàn)結(jié)果表明,該模型可以很好的定位SQL注入危險(xiǎn)級(jí)別,同時(shí)有著低漏報(bào)率,高速率的特點(diǎn)。分析威脅等級(jí)后,使用同樣1500個(gè)測(cè)試樣本進(jìn)行語(yǔ)義分析的檢測(cè)與其他正則匹配檢測(cè)的數(shù)據(jù)對(duì)比,結(jié)果如表2。

        通過語(yǔ)義分析模型和正則匹配模型對(duì)相同的1500個(gè)SQL注入樣本進(jìn)行檢測(cè)對(duì)比發(fā)現(xiàn),語(yǔ)義分析模型對(duì)于Web程序下的SQL注入行為檢測(cè)較為穩(wěn)定,能保持幾乎全部檢測(cè),但是正則匹配模型對(duì)于時(shí)間盲注型,Get型具有較差的檢測(cè)效果,整體檢測(cè)不穩(wěn)定,尤其對(duì)于需要不斷更新匹配庫(kù)的注入類型,不能保證第一時(shí)間的檢測(cè)預(yù)警,而語(yǔ)義分析在這方面做地更好。

        如圖4所示,語(yǔ)義分析在檢測(cè)的速度上遠(yuǎn)遠(yuǎn)高于傳統(tǒng)正則匹配。一定程度上提升了系統(tǒng)檢測(cè)性能,降低了檢測(cè)時(shí)間的消耗。在檢測(cè)效果上,語(yǔ)義分析可以將漏檢率降到最低,更全面的保證了對(duì)于SQL注入行為的精確檢測(cè)。

        如圖5所示,基于語(yǔ)義分析的檢測(cè)方法可以有效的提高Web應(yīng)用程序中的SQL注入攻擊行為的檢測(cè)率,降低漏洞率,同時(shí)提升了檢測(cè)的效率。此模型在一定的版本中已相對(duì)穩(wěn)定。實(shí)驗(yàn)表明,該系統(tǒng)在關(guān)鍵字的檢測(cè)中,有較快的檢測(cè)效率和較高的檢測(cè)率,整體情況能夠滿足在線防御的需求。

        4 結(jié)束語(yǔ)

        近年來,隨著大數(shù)據(jù)、人工智能、區(qū)塊鏈等技術(shù)的發(fā)展,與科技加速融合,新業(yè)務(wù)、新技術(shù)的大量涌現(xiàn),導(dǎo)致Web安全問題越來越多。一旦發(fā)生安全風(fēng)險(xiǎn),不僅會(huì)威脅到用戶的利益,也會(huì)給企業(yè)本身帶來巨大的損失。

        本文設(shè)計(jì)并實(shí)現(xiàn)了基于語(yǔ)義分析模型的Web應(yīng)用程序中SQL注入行為的檢測(cè)。最后實(shí)驗(yàn)結(jié)果表明,通過Payload進(jìn)行一系列詞法、語(yǔ)法、語(yǔ)義的分析,能有效的縮短檢測(cè)時(shí)間和提高檢測(cè)率,降低漏檢率。

        參考文獻(xiàn)(References):

        [1] 吳斌,劉循.SQL注入攻擊及漏洞檢測(cè)防范技術(shù)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2017(1):76-78

        [2] 王苗苗,錢步仁,許瑩瑩等.基于通用規(guī)則的SQL注入攻擊檢測(cè)與防御系統(tǒng)的研究[J].電子設(shè)計(jì)工程,2017.25(5):24-28

        [3] 周穎,方勇,黃誠(chéng)等.面向PHP應(yīng)用程序的SQL注入行為檢測(cè)[J].計(jì)算機(jī)應(yīng)用,2018.38(1):201-206

        [4] Zhu J,Zou H,Rosset S,et al.Multi-class AdaBoost[J].Statistics & Its Interface,2006.2(3):349-360

        [5] Shang X,Sattler K U,Geist I.SQL Based Frequent Pattern Mining with FP-Growth[M].Applications of Declarative Programming and Knowledge Management. 2005.

        [6] Sonewar P A,Thosar S D.Detection of SQL injection and XSS attacks in three tier web applications[C].International Conference on Computing Communication Control & Automation. 2017.

        [7] Mcwhirter P R,Kifayat K,Shi Q,et al.SQL Injection Attack classification through the feature extraction of SQL query strings using a Gap-Weighted String Subsequence Kernel[J]. Journal of Information Security & Applications,2018.40:199-216

        公和我做好爽添厨房| 国产乱人伦真实精品视频| 少妇高潮惨叫久久久久电影| 欧美熟妇色ⅹxxx欧美妇| 东方aⅴ免费观看久久av| 久久99国产乱子伦精品免费| 91精品视品在线播放| 成人免费丝袜美腿视频| 尤物精品国产亚洲亚洲av麻豆| 国产精品国产三级国产av品爱网| 日本阿v网站在线观看中文| 在线无码国产精品亚洲а∨| 亚洲av色香蕉一区二区三区软件| 久久综合99re88久久爱| 久久精品国产www456c0m| 黑人巨大精品欧美在线观看| 亚洲av区一区二区三区| 亚洲国产综合在线亚洲区亚洲av| 人人妻人人狠人人爽| 中文字幕喷水一区二区| 无人视频在线播放在线观看免费| 亚洲国产中文字幕精品| 精品亚洲成a人片在线观看| 青草热久精品视频在线观看| 日韩人妖一区二区三区| 欧美又大粗又爽又黄大片视频| 国产涩涩视频在线观看| 男女扒开双腿猛进入免费看污| 日日噜噜夜夜狠狠久久av| 一区二区日本免费观看| 内射人妻无套中出无码| 久久99精品久久久久久hb无码| 免费大学生国产在线观看p| 99视频偷拍视频一区二区三区| 亚洲国产成人精品无码区在线播放 | 日韩av在线不卡一区二区三区| 中文字幕一区在线直播| 欧美肥妇毛多水多bbxx水蜜桃| 亚洲色无码播放| 国产乱人伦真实精品视频| 久久精品国产在热亚洲不卡|