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

        ?

        基于語義分析的SQL注入行為檢測方案研究

        2019-11-28 13:40:32曹鵬飛潘緒超王凡潘曉峰包婷婷
        計算機時代 2019年11期
        關(guān)鍵詞:語義分析

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

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

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

        中圖分類號:TP399 ? ? ? ? ?文獻標(biāo)志碼:A ? ? 文章編號: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)用程序在各個領(lǐng)域都廣泛應(yīng)用,但Web應(yīng)用程序的構(gòu)造也越來越復(fù)雜,隨之帶來的攻擊問題也越發(fā)嚴(yán)重,SQL注入攻擊已經(jīng)成為首要威脅[1]。傳統(tǒng)的SQL注入檢測方法是基于規(guī)則或特定的檢測模式,需要先分析特定注入產(chǎn)生的原因,再制定相應(yīng)的檢測規(guī)則。隨著大數(shù)據(jù)技術(shù)的普及應(yīng)用以及詞法、語義方法的日漸成熟,基于上下文邏輯實現(xiàn)攻擊檢測,能夠降低誤報率、提升精準(zhǔn)率、提高檢測效率[2]。

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

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

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

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

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

        1.1 預(yù)處理模塊

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

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

        1.2 語法分析模塊

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

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

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

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

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

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

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

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

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

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

        系統(tǒng)調(diào)用start()函數(shù)啟動詞法分析,逐個掃描每一個詞法單元,調(diào)用new()函數(shù)建立新的葉子節(jié)點,通過return返回。詞法單元在抽象語法樹中是終結(jié)點(葉子節(jié)點)。第三個參數(shù)是data,是詞法單元行編號。詞法分析需要對每個終節(jié)點建立葉子節(jié)點,來給語法分析過程調(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;}

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

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

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

        SQLUtils() {

        static String toSQLString(SQLObject sqlObj, String dbType);

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

        2.3 語義分析模塊實現(xiàn)

        語義分析模塊結(jié)合AdaBoost算法和FP-Growth算法的基礎(chǔ)上實現(xiàn)基于上下邏輯的快速,全面的SQL注入攻擊檢測。AdaBoost算法以其進行SQL注入樣本迭代分析的方法,實現(xiàn)降低漏檢率,提高精確度。算法的實現(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ù)完成了建立單層決策樹,并進行樣本分類,計算出錯誤率。錯誤率的計算是對應(yīng)在相對權(quán)重上的,最后進行累加得到分析器的錯誤率。

        Create(self, nameValue, numOccur, parentNode)

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

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

        Outlet(){

        freqItemSet = set(SQLSample.keys())

        updateFPtree(orderedItem,retTree,SQLSample,count)

        return retTree, SQLSample;

        }

        3 實驗

        3.1 實驗環(huán)境

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

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

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

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

        解釋器:JavaScript Parser。

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

        3.2 實驗方法

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

        3.3 實驗結(jié)果

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

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

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

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

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

        4 結(jié)束語

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

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

        參考文獻(References):

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

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

        [3] 周穎,方勇,黃誠等.面向PHP應(yīng)用程序的SQL注入行為檢測[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

        猜你喜歡
        語義分析
        現(xiàn)代日語“結(jié)構(gòu)”一詞的語義及其漢譯分析
        基于正則表達(dá)式度量算法的智能評分設(shè)計
        遼河流域水環(huán)境管理技術(shù)庫構(gòu)建方法
        基于交叉配血的多賬戶識別模型研究
        基于LDA模型的95598熱點業(yè)務(wù)工單挖掘分析
        新興“被+X”結(jié)構(gòu)探析
        從認(rèn)知語義學(xué)的角度來看多義動詞“あげる”
        科技視界(2016年18期)2016-11-03 23:48:03
        中文短文本語法語義相似度算法
        語義分析算法在互聯(lián)網(wǎng)信息檢索中的應(yīng)用
        基于英漢平行語料庫語義分析的翻譯教學(xué)系統(tǒng)設(shè)計與應(yīng)用
        教師·中(2015年8期)2015-09-07 12:05:16
        国产在线 | 中文| 99亚洲女人私处高清视频| 日日碰狠狠躁久久躁96avv| 免费看一级a女人自慰免费| 一本久久伊人热热精品中文| 蜜桃一区二区三区视频| 人妻aⅴ中文字幕| 欧美日韩国产免费一区二区三区欧美日韩| 国产最新进精品视频| 成人看片黄a免费看那个网址 | 野外少妇愉情中文字幕| 国产乱人伦精品一区二区 | 四虎影视国产884a精品亚洲| 国产一区二区三区蜜桃| 中文字幕女同人妖熟女| 99久久精品国产一区二区| 国产成人亚洲综合无码| 国产爆乳乱码女大生Av| 爆乳午夜福利视频精品| 日本在线中文字幕一区| 日韩极品视频免费观看| 亚洲av成人片无码网站| 一边吃奶一边摸做爽视频| 欧美一级人与嘼视频免费播放| 人妻中文字幕av有码在线| 粉嫩的极品女神尤物在线| 亚洲乱码一区二区三区在线观看| 国产免费一区二区三区免费视频 | 内射中出日韩无国产剧情| 最近最好的中文字幕2019免费| 婷婷丁香五月中文字幕| 97色在线视频| 久久亚洲精精品中文字幕早川悠里| 性感美女脱内裤无遮挡| 久久天天躁狠狠躁夜夜躁2014| 午夜精品久久久久久中宇| 成人综合亚洲欧美一区h| 蜜桃视频羞羞在线观看| 娇妻在交换中哭喊着高潮| 国产精品搭讪系列在线观看| 国内偷拍视频一区二区|