999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2019-11-28 13:40:32曹鵬飛潘緒超王凡潘曉峰包婷婷
計算機時代 2019年11期

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

摘 ?要: 目前SQL注入攻擊已成為Web安全領域中最為常見的攻擊方式,SQL注入攻擊可以泄露用戶信息,獲取系統權限和篡改網頁信息等。文章設計了基于語義分析的SQL注入行為檢測方案,能夠對攻擊行為從語義的角度進行檢測。該方案包括數據預處理,抽象語法樹,語義分析等功能模塊,針對漏洞相關語言的編譯器,通過對攻擊者輸入的內容串進行語法語義檢查來判斷該請求的惡意程度,理解攻擊者意圖,能實現對SQL注入攻擊的精準識別。

關鍵詞: SQL注入; Web攻擊; 語法分析; 語義分析

中圖分類號:TP399 ? ? ? ? ?文獻標志碼: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 引言

隨著互聯網迅速發展,Web應用程序在各個領域都廣泛應用,但Web應用程序的構造也越來越復雜,隨之帶來的攻擊問題也越發嚴重,SQL注入攻擊已經成為首要威脅[1]。傳統的SQL注入檢測方法是基于規則或特定的檢測模式,需要先分析特定注入產生的原因,再制定相應的檢測規則。隨著大數據技術的普及應用以及詞法、語義方法的日漸成熟,基于上下文邏輯實現攻擊檢測,能夠降低誤報率、提升精準率、提高檢測效率[2]。

本文針對傳統規則檢測模式的不足提出了從語義分析的角度來進行SQL注入行為檢測,從詞法、語法的結合深層貫穿邏輯的查找,在傳統的正則匹配的基礎上,提高了檢測準確度。能在不知曉網站結構的情況下,僅通過分析用戶的輸入就可以檢測出可能的SQL注入行為并進行預警。

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

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

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

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

1.1 預處理模塊

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

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

1.2 語法分析模塊

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

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

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

2 系統實現

2.1 系統總體實現

SQL注入檢測框架結構,如圖3所示。

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

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

2.2 預處理模塊實現

將Web應用程序中輸入信息放置預處理模塊,處理過程分為詞法分析和語法分析。詞法分析模塊選取當前Web解釋器使用的Parser分析器,提取解釋器的標準定義規則文件。語法分析程序Bison根據標準定義語法規則還原語法中的程序邏輯,構建完整的抽象語法樹AST。預處理模塊包括flex詞法分析和Bison語法分析。

系統調用start()函數啟動詞法分析,逐個掃描每一個詞法單元,調用new()函數建立新的葉子節點,通過return返回。詞法單元在抽象語法樹中是終結點(葉子節點)。第三個參數是data,是詞法單元行編號。詞法分析需要對每個終節點建立葉子節點,來給語法分析過程調用。

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詞法與語法分析轉換表,代碼實現AST節點的類型分類:

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

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

SQLUtils() {

static String toSQLString(SQLObject sqlObj, String dbType);

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

2.3 語義分析模塊實現

語義分析模塊結合AdaBoost算法和FP-Growth算法的基礎上實現基于上下邏輯的快速,全面的SQL注入攻擊檢測。AdaBoost算法以其進行SQL注入樣本迭代分析的方法,實現降低漏檢率,提高精確度。算法的實現,要先建立數據集并轉換為后續需要的方式,然后結合加權原則尋找最佳單層決策樹。

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()函數完成了建立單層決策樹,并進行樣本分類,計算出錯誤率。錯誤率的計算是對應在相對權重上的,最后進行累加得到分析器的錯誤率。

Create(self, nameValue, numOccur, parentNode)

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

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

Outlet(){

freqItemSet = set(SQLSample.keys())

updateFPtree(orderedItem,retTree,SQLSample,count)

return retTree, SQLSample;

}

3 實驗

3.1 實驗環境

本文環境在LAMP架構下的Web應用進行安全防護測試,具體環境如下:

操作系統:Ubuntu 16.04 LTS;

Web服務器:Apache、PHP語言;

數據庫:MySQL;

解釋器:JavaScript Parser。

本文使用開源Python庫Libinjection作為預處理、詞法和語法分析模塊實現平臺,關鍵字為檢測對象,對該系統的性能進行測試,指標包括漏報率和誤報率,時間作為主要的相應時間。

3.2 實驗方法

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

3.3 實驗結果

經過測試,威脅等級判斷結果如1表所示:

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

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

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

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

4 結束語

近年來,隨著大數據、人工智能、區塊鏈等技術的發展,與科技加速融合,新業務、新技術的大量涌現,導致Web安全問題越來越多。一旦發生安全風險,不僅會威脅到用戶的利益,也會給企業本身帶來巨大的損失。

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

參考文獻(References):

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

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

[3] 周穎,方勇,黃誠等.面向PHP應用程序的SQL注入行為檢測[J].計算機應用,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

主站蜘蛛池模板: 国产一区二区丝袜高跟鞋| 国产91无毒不卡在线观看| 国产精品永久不卡免费视频| 日本高清视频在线www色| 精品天海翼一区二区| 伦伦影院精品一区| 五月婷婷激情四射| 精品99在线观看| 国产日韩av在线播放| 国产亚洲欧美日韩在线观看一区二区| www.狠狠| 亚洲青涩在线| 日韩高清成人| 国产成人综合网| 国产96在线 | 91无码视频在线观看| 国产视频大全| 美女扒开下面流白浆在线试听| 色AV色 综合网站| 亚洲色欲色欲www网| 无码丝袜人妻| 成人国产三级在线播放| 久久精品无码中文字幕| 午夜国产精品视频| 五月天久久婷婷| av一区二区三区高清久久| 国产女人爽到高潮的免费视频| 亚洲成a人片| 999国产精品| 日韩毛片在线播放| 久久精品无码国产一区二区三区 | 欧美啪啪一区| 国产三级成人| 国产浮力第一页永久地址 | 在线观看av永久| 日韩欧美国产成人| 亚洲欧美激情另类| 欧美一级片在线| 亚洲一区国色天香| 扒开粉嫩的小缝隙喷白浆视频| 精品国产三级在线观看| 国产一国产一有一级毛片视频| 99热这里只有精品久久免费| 2020久久国产综合精品swag| 中文字幕乱码中文乱码51精品| 久久99精品国产麻豆宅宅| 亚洲欧洲日韩综合色天使| 日本一本正道综合久久dvd| 久久国产精品77777| 精品人妻一区二区三区蜜桃AⅤ | 亚洲欧美成人网| 久久中文电影| 亚洲人人视频| 久久青青草原亚洲av无码| 五月天综合网亚洲综合天堂网| 欧美笫一页| 综合色88| 一区二区影院| 日韩无码黄色| 国产网站在线看| 在线观看欧美国产| 国产人人干| 色吊丝av中文字幕| 亚洲精品成人7777在线观看| 精品福利网| 精品国产亚洲人成在线| 伊人久久大香线蕉aⅴ色| 天天做天天爱夜夜爽毛片毛片| 国产一级毛片yw| 国产视频欧美| a毛片在线播放| 午夜啪啪网| 国产91麻豆免费观看| 热这里只有精品国产热门精品| 91无码网站| 欧美三级自拍| a毛片在线| 无码中文字幕精品推荐| 免费a级毛片视频| 一区二区自拍| 青草视频在线观看国产| 国产成人福利在线视老湿机|