• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于ECA規(guī)則和動(dòng)態(tài)污點(diǎn)分析的SQL注入攻擊在線檢測(cè)

    2023-05-24 03:18:58劉吉會(huì)何成萬(wàn)
    計(jì)算機(jī)應(yīng)用 2023年5期
    關(guān)鍵詞:污點(diǎn)字符串語(yǔ)句

    劉吉會(huì),何成萬(wàn)

    (武漢工程大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,武漢 430205)

    0 引言

    互聯(lián)網(wǎng)服務(wù)的廣泛使用使Web 應(yīng)用日漸復(fù)雜,Web 應(yīng)用的安全問(wèn)題也因其易用性和開(kāi)放性而日益顯著,造成的漏洞越來(lái)越多[1-3]。在開(kāi)放式Web 應(yīng)用程序安全項(xiàng)目(Open Web Application Security Project,OWASP)發(fā)布的2013 年和2017年的Web 安全漏洞Top10[4]中,注入漏洞穩(wěn)居第一,其中以SQL 注入為主體。SQL 注入攻擊是一種代碼注入攻擊[5-6]。Web 應(yīng)用程序中的SQL 語(yǔ)句通常由程序中受信任的常量字符串和用戶輸入等不受信任的外部數(shù)據(jù)動(dòng)態(tài)拼接在一起,這會(huì)導(dǎo)致不受信任的數(shù)據(jù)(例如用戶輸入)被數(shù)據(jù)庫(kù)引擎作為SQL 代碼片段執(zhí)行[7]。攻擊者通過(guò)精心構(gòu)造各種未經(jīng)驗(yàn)證的畸形外部輸入數(shù)據(jù),欺騙數(shù)據(jù)庫(kù)服務(wù)器執(zhí)行惡意構(gòu)造的SQL 語(yǔ)句以達(dá)到攻擊的目的,對(duì)Web 應(yīng)用潛在的數(shù)據(jù)庫(kù)安全構(gòu)成嚴(yán)重的威脅。因此,對(duì)SQL 注入攻擊的檢測(cè)研究具有非常重要的意義。

    現(xiàn)有的SQL 注入攻擊檢測(cè)主要采用基于SQL 語(yǔ)句合法性進(jìn)行判別的方法來(lái)檢測(cè)攻擊[8]。根據(jù)檢測(cè)原理的不同,大致分為基于污點(diǎn)分析的方法、基于規(guī)則匹配的方法、基于文本向量化和機(jī)器學(xué)習(xí)的方法?;谖谋鞠蛄炕蜋C(jī)器學(xué)習(xí)的方法屬于新興的方法,由于數(shù)據(jù)集不夠、分類模型不完善、SQL 語(yǔ)句特征提取困難等問(wèn)題,存在著諸多挑戰(zhàn);而且在實(shí)際應(yīng)用部署中,實(shí)現(xiàn)實(shí)時(shí)在線檢測(cè)比較困難?;谝?guī)則匹配的方法是傳統(tǒng)的SQL 注入攻擊檢測(cè)方法,又分為靜態(tài)檢測(cè)、動(dòng)態(tài)檢測(cè)、動(dòng)靜結(jié)合檢測(cè)。靜態(tài)檢測(cè)如JDBCChecker(Java DataBase Connectivity Checker)[9]就是在不運(yùn)行程序的情況下通過(guò)源碼分析是否存在SQL 注入的可能。由于需要分析源代碼,無(wú)法發(fā)現(xiàn)運(yùn)行時(shí)發(fā)生的部分攻擊,漏報(bào)率高且浪費(fèi)人力物力,檢測(cè)效率低下。動(dòng)態(tài)檢測(cè)如CANDID(dynamic CANDIDate evaluations)[10]在程序 運(yùn)行時(shí) 動(dòng)態(tài)挖 掘預(yù)期 的SQL 查詢結(jié)構(gòu)與構(gòu)造的SQL 語(yǔ)句結(jié)構(gòu)比對(duì),在無(wú)法獲得源代碼情況下通過(guò)程序運(yùn)行時(shí)動(dòng)態(tài)生成的模型來(lái)判斷是否存在SQL 注入攻擊。動(dòng)靜結(jié)合檢測(cè)如AMNESIA(Analysis and Monitoring for NEutralizing SQL-Injection Attacks)[11]靜態(tài)分析應(yīng)用程序生成正常SQL 語(yǔ)句查詢模型,然后在程序運(yùn)行時(shí)進(jìn)行動(dòng)態(tài)監(jiān)控,比較構(gòu)造的SQL 語(yǔ)句是否符合靜態(tài)分析生成的SQL 語(yǔ)句模型,從而判斷是否存在SQL 注入攻擊并防御。基于規(guī)則匹配的方法在應(yīng)用部署中要么需要源代碼,要么需要在程序運(yùn)行前進(jìn)行程序插樁修改原始程序行為,這類方法的可重用性不足,且不能在Web 應(yīng)用開(kāi)啟后加載檢測(cè)組件以達(dá)到在線檢測(cè)的目的?;谖埸c(diǎn)分析的方法大多需要修改應(yīng)用程序的執(zhí)行引擎,或需要修改應(yīng)用的源代碼,或通過(guò)代碼重寫技術(shù)對(duì)Web 應(yīng)用進(jìn)行預(yù)編譯才能加載檢測(cè)組件。這些技術(shù)無(wú)法在應(yīng)用運(yùn)行時(shí)在線加載檢測(cè)組件,且與原始應(yīng)用耦合性較高,容易干擾原始應(yīng)用的業(yè)務(wù)邏輯,無(wú)法做到檢測(cè)組件的可重用性和在線檢測(cè)。

    ECA(Event Condition Action)規(guī)則語(yǔ)言在Java 語(yǔ)義級(jí)別可以精確指定將要轉(zhuǎn)換的類及其中的方法以修改原始應(yīng)用程序的行為或增加額外的功能。Byteman[12]是一個(gè)字節(jié)碼修改工具,采用這種清晰、簡(jiǎn)單且易于使用的基于Java 的ECA規(guī)則語(yǔ)言,使得它在應(yīng)用程序加載時(shí)或運(yùn)行時(shí)更改應(yīng)用程序的行為變得簡(jiǎn)單。它工作時(shí)原始應(yīng)用程序無(wú)須重寫和編譯。

    本文提出一種基于ECA 規(guī)則和動(dòng)態(tài)污點(diǎn)分析的在線檢測(cè)SQL 注入攻擊的模型。借助ECA 規(guī)則語(yǔ)言封裝動(dòng)態(tài)污點(diǎn)分析的整個(gè)過(guò)程,在Web 應(yīng)用運(yùn)行時(shí)通過(guò)安裝ECA 規(guī)則腳本重新轉(zhuǎn)換構(gòu)成應(yīng)用程序和虛擬機(jī)程序的原始字節(jié)碼,從而在用戶提交請(qǐng)求時(shí)觸發(fā)相關(guān)檢測(cè)組件的執(zhí)行,在線檢測(cè)是否存在SQL 注入攻擊。ECA 規(guī)則語(yǔ)言構(gòu)成的檢測(cè)腳本完全獨(dú)立于Web 應(yīng)用的業(yè)務(wù)邏輯,在Web 應(yīng)用啟動(dòng)后,整個(gè)檢測(cè)腳本將被轉(zhuǎn)化為內(nèi)聯(lián)Java 代碼注入到Web 應(yīng)用及其所屬的虛擬機(jī)中。實(shí)驗(yàn)使用Byteman 實(shí)現(xiàn)了本文所提模型,并利用該模型在文獻(xiàn)[11]使用的Web 應(yīng)用bookstore 和WebGoat[13]上做實(shí)驗(yàn),由ECA 規(guī)則語(yǔ)言封裝的檢測(cè)腳本經(jīng)過(guò)安裝進(jìn)這些應(yīng)用的Byteman 代理讀取并自動(dòng)轉(zhuǎn)換構(gòu)成Web 應(yīng)用和虛擬機(jī)的字節(jié)碼,從而將檢測(cè)代碼無(wú)縫插入到正在運(yùn)行的應(yīng)用基層子程序中。經(jīng)過(guò)實(shí)驗(yàn)驗(yàn)證,這是一種低侵入性、輕量級(jí)的SQL 注入攻擊檢測(cè)方法,能夠在不修改應(yīng)用程序執(zhí)行引擎和源碼的前提下,實(shí)現(xiàn)Web 應(yīng)用的在線檢測(cè),且可以檢測(cè)出6種常見(jiàn)的SQL 注入攻擊類型。

    1 相關(guān)工作

    Ray 等[5-6]定義了代碼注入攻擊。Halfond 等[14]對(duì)迄今為止已知的不同類型的SQL 注入攻擊進(jìn)行了廣泛的回顧。SQL 注入攻擊檢測(cè)主要采用基于SQL 語(yǔ)句合法性判別的方法來(lái)檢測(cè)攻擊。依據(jù)檢測(cè)原理的不同,分為基于規(guī)則匹配的方法、基于污點(diǎn)的分析方法、基于文本向量化和機(jī)器學(xué)習(xí)的方法。

    基于規(guī)則匹配的檢測(cè)方法通過(guò)創(chuàng)建特定的規(guī)則并對(duì)違反規(guī)則的行為進(jìn)行識(shí)別來(lái)檢測(cè)攻擊。其中:正則表達(dá)式匹配的方法通過(guò)構(gòu)建正則表達(dá)式對(duì)與所構(gòu)建的正則表達(dá)式相違背的用戶輸入進(jìn)行檢測(cè)過(guò)濾[15]。語(yǔ)法樹(shù)特征匹配的方法,如Bandhakavi 等[10]提出的方法,通過(guò)動(dòng)態(tài)挖掘針對(duì)用戶任何輸入的、體現(xiàn)程序開(kāi)發(fā)人員意圖的查詢結(jié)構(gòu),并將此結(jié)構(gòu)與實(shí)際動(dòng)態(tài)生成的SQL 查詢語(yǔ)句結(jié)構(gòu)相比較以檢測(cè)是否發(fā)生SQL 注入攻 擊。與之類 似的是Halfond 等[11]提出的AMNESIA,在靜態(tài)分析階段,通過(guò)獲取正常查詢語(yǔ)句結(jié)構(gòu)構(gòu)建合法查詢的模型;在動(dòng)態(tài)階段,監(jiān)視SQL 語(yǔ)句的構(gòu)建,并將構(gòu)建的SQL 語(yǔ)句與靜態(tài)階段建立的合法查詢模型進(jìn)行比較以檢測(cè)攻擊。文獻(xiàn)[16]的研究繼承了AMNESIA 的思想,借助靜態(tài)代碼工具獲取SQL 語(yǔ)句模型,利用面向方面編程(Aspect-Oriented Programming,AOP)技術(shù)捕獲程序執(zhí)行中產(chǎn)生的SQL 語(yǔ)句,將靜態(tài)SQL 語(yǔ)句模型與產(chǎn)生的SQL 語(yǔ)句進(jìn)行比較,判斷是否存在SQL 注入攻擊。文獻(xiàn)[17]中提出一種基于XML(eXtensible Markup Language)且只檢測(cè)重言式SQL 注入攻擊的方法。該方法包含一個(gè)XML 文件生成器,攔截用戶輸入并轉(zhuǎn)換成XML 格式;然后XML 文件將用戶憑據(jù)傳遞給Xschema 驗(yàn)證器,將生成的用戶查詢與Xschema 文件中預(yù)定義的合法查詢進(jìn)行比較,兩個(gè)查詢匹配時(shí)才允許其訪問(wèn),否則阻止訪問(wèn)。該方法執(zhí)行時(shí)間尚可,但檢測(cè)攻擊的類型單一。

    基于污點(diǎn)分析的方案通過(guò)污點(diǎn)的標(biāo)記和傳播,可以準(zhǔn)確區(qū)分SQL 語(yǔ)句的可信部分和不可信部分。污點(diǎn)檢查比較可靠,主要分為靜態(tài)污點(diǎn)分析和動(dòng)態(tài)污點(diǎn)分析。在靜態(tài)污點(diǎn)分析中:Jovanovic 等[18]提出的Pixy 使用流敏感、進(jìn)程間和上下文敏感的靜態(tài)數(shù)據(jù)流分析方法來(lái)挖掘Web 應(yīng)用程序漏洞;Livshits 等[19]使用靜態(tài)數(shù)據(jù)流分析技術(shù)檢測(cè)標(biāo)記的用戶輸入是否到達(dá)SQL 語(yǔ)句執(zhí)行點(diǎn)以挖掘SQL 注入漏洞;Wassermann等[20]將SQL 語(yǔ)句構(gòu)造過(guò)程抽象為上下文無(wú)關(guān)文法,并使用靜態(tài)污點(diǎn)分析方法來(lái)判斷文法中的非終結(jié)符是否與用戶輸入有關(guān)。由于靜態(tài)污點(diǎn)分析不能很好地處理Web 應(yīng)用語(yǔ)言的動(dòng)態(tài)性,會(huì)引入較高的誤報(bào)率,再加上保守的程序分析,使誤報(bào)率會(huì)更高。

    動(dòng)態(tài)污點(diǎn)分析方法可以更好地處理程序的動(dòng)態(tài)特性。Haldar 等[21]提出了一種動(dòng)態(tài)解決方案,在運(yùn)行時(shí)標(biāo)記和跟蹤用戶輸入,并防止用戶不正當(dāng)使用以惡意影響程序的執(zhí)行;Perl 的污點(diǎn)模式[22]明確地將來(lái)自程序外部的數(shù)據(jù)標(biāo)記為受污染,防止受污染的數(shù)據(jù)被用作某些敏感函數(shù)的參數(shù);Nguyen-Tuong 等[23]修改PHP 執(zhí)行引擎中String 類的數(shù)據(jù)結(jié)構(gòu)和內(nèi)置函數(shù),在字符級(jí)對(duì)不可信數(shù)據(jù)進(jìn)行污點(diǎn)標(biāo)記與傳播,并在匯聚點(diǎn)處分析SQL 語(yǔ)句語(yǔ)法結(jié)構(gòu);Rafailidis 等[24]設(shè)計(jì)了污點(diǎn)傳播算法來(lái)實(shí)現(xiàn)實(shí)施安全策略的內(nèi)聯(lián)監(jiān)視器;Chin等[25]針對(duì)Java 實(shí)現(xiàn)了高效率的字符級(jí)別的污點(diǎn)傳播算法;董敏[26]基于C++語(yǔ)言的特性以影子內(nèi)存原理封裝基本數(shù)據(jù)類型,擴(kuò)展污點(diǎn)標(biāo)記位,重載運(yùn)算符以實(shí)現(xiàn)數(shù)據(jù)在程序運(yùn)行時(shí)的實(shí)時(shí)傳播過(guò)程,并在污點(diǎn)匯聚點(diǎn)處解析SQL 語(yǔ)句的污點(diǎn)狀態(tài)以觸發(fā)報(bào)警裝置;Halfond 等[27]則提出了積極污點(diǎn)標(biāo)記方法的新概念,污點(diǎn)標(biāo)記可信數(shù)據(jù),如程序中的硬編碼字符串,并動(dòng)態(tài)跟蹤污點(diǎn)傳播軌跡,可有效解決不可信輸入來(lái)源廣泛、難以完整標(biāo)記的問(wèn)題。

    從以上工作可以看出,對(duì)于SQL 注入攻擊檢測(cè),動(dòng)態(tài)污點(diǎn)追蹤機(jī)制提供額外的污點(diǎn)信息來(lái)判斷SQL 注入攻擊行為,提高了檢測(cè)準(zhǔn)確性,且沒(méi)有復(fù)雜的靜態(tài)分析開(kāi)銷。文獻(xiàn)[28-29]將此機(jī)制與AOP 的思想結(jié)合,使SQL 注入攻擊的安全關(guān)注點(diǎn)從應(yīng)用邏輯中分離出來(lái)由方面封裝,賦予檢測(cè)模型更高的可重用性。從代碼級(jí)別捕獲Web 應(yīng)用基礎(chǔ)設(shè)施的污點(diǎn)數(shù)據(jù)的流動(dòng),通過(guò)方面編織器將污點(diǎn)檢測(cè)代碼織入原始Web 應(yīng)用相關(guān)的安全關(guān)注點(diǎn)中,在關(guān)注點(diǎn)中模擬動(dòng)態(tài)污點(diǎn)分析的各個(gè)流程,避免了對(duì)Web 應(yīng)用源碼及執(zhí)行引擎的直接修改。他們的方法既實(shí)現(xiàn)了對(duì)多數(shù)SQL 注入攻擊類型的檢測(cè),又對(duì)攻擊檢測(cè)代碼的可重用實(shí)現(xiàn)作出努力;但他們的方法部署需要預(yù)編譯加載檢測(cè)組件,在線加載檢測(cè)組件難以實(shí)現(xiàn)。

    基于文本向量和機(jī)器學(xué)習(xí)的方法針對(duì)SQL 語(yǔ)句的合法性進(jìn)行判斷。它們針對(duì)正常和惡意SQL 語(yǔ)句進(jìn)行特征向量的提取和向量化,選取合適的分類模型進(jìn)行數(shù)據(jù)集的訓(xùn)練。由此研究人員提出了許多方法和改進(jìn)的措施。如李紅靈等[30]提出的基于支持向量機(jī)(Support Vector Machine,SVM)和文本特征向量提取的SQL 注入攻擊檢測(cè)技術(shù)、蘇林萍等[31]提出的基于N-gram 和詞頻逆向文件頻率(Term Frequency Inverse Document Frequency,TF-IDF)的SQL 注入攻擊檢測(cè)方法等。相關(guān)數(shù)據(jù)集的數(shù)據(jù)量不夠、分類模型的不完善以及SQL 語(yǔ)句特征提取困難等問(wèn)題,使這個(gè)方面的研究存在諸多困難;而模型檢測(cè)的準(zhǔn)確度和效率完全取決于數(shù)據(jù)集的質(zhì)量。

    2 本文模型

    ECA 規(guī)則精確指定在運(yùn)行時(shí)應(yīng)如何改變應(yīng)用程序行為。規(guī)則的三個(gè)組成部分事件(Event)、條件(Condition)、動(dòng)作(Action)分別定義如下:1)在應(yīng)用程序執(zhí)行期間應(yīng)該發(fā)生副作用的地方;2)副作用是否應(yīng)該發(fā)生;3)副作用應(yīng)該是什么。因此,ECA 規(guī)則可以識(shí)別應(yīng)用程序中外部數(shù)據(jù)流動(dòng)經(jīng)過(guò)的函數(shù),并在該函數(shù)執(zhí)行過(guò)程中在規(guī)則指定的位置插入相應(yīng)的副作用。如果條件判斷為真,副作用就會(huì)發(fā)生,就會(huì)改變?cè)紤?yīng)用的行為;反之,副作用不會(huì)發(fā)生。

    污點(diǎn)分析技術(shù)[32]包括污點(diǎn)源、污點(diǎn)匯聚點(diǎn)和無(wú)害化處理等部分。其中,污點(diǎn)源表示將污點(diǎn)數(shù)據(jù)引入系統(tǒng)中;污點(diǎn)匯聚點(diǎn)表示系統(tǒng)將污點(diǎn)數(shù)據(jù)輸出到敏感數(shù)據(jù)區(qū)或外界,造成敏感數(shù)據(jù)區(qū)被改寫或機(jī)密數(shù)據(jù)被泄漏;無(wú)害化處理表示通過(guò)數(shù)據(jù)加密或重新賦值等操作使數(shù)據(jù)傳播不再對(duì)系統(tǒng)的完整性和機(jī)密性產(chǎn)生危害。污點(diǎn)分析就是分析程序中由污點(diǎn)源引入的數(shù)據(jù)能否不經(jīng)無(wú)害化處理而直接傳播到污點(diǎn)匯聚點(diǎn)[33]。由于ECA 規(guī)則的特性,它可以精確識(shí)別污點(diǎn)源函數(shù)、污點(diǎn)傳播經(jīng)過(guò)的函數(shù)和污點(diǎn)匯聚點(diǎn)函數(shù),在這些函數(shù)對(duì)應(yīng)位置中插入的副作用就是污點(diǎn)標(biāo)記、污點(diǎn)傳播、污點(diǎn)檢查動(dòng)作,而副作用發(fā)生的條件就是判斷函數(shù)參數(shù)及函數(shù)調(diào)用者對(duì)象是否攜帶污點(diǎn),若攜帶污點(diǎn),則執(zhí)行相應(yīng)的污點(diǎn)分析動(dòng)作。

    本文提出的基于ECA 規(guī)則和動(dòng)態(tài)污點(diǎn)分析的SQL 注入攻擊檢測(cè)模型如圖1 所示。

    圖1 基于ECA規(guī)則和動(dòng)態(tài)污點(diǎn)分析的SQL注入攻擊檢測(cè)模型Fig.1 SQL injection attack detection model based on ECA rules and dynamic taint analysis

    它的處理流程主要分為三個(gè)步驟:第一,針對(duì)污點(diǎn)源的ECA 規(guī)則自動(dòng)識(shí)別污點(diǎn)源,在污點(diǎn)源處對(duì)被引入系統(tǒng)的外部數(shù)據(jù)進(jìn)行污點(diǎn)標(biāo)記;第二,針對(duì)污點(diǎn)傳播的ECA 規(guī)則自動(dòng)識(shí)別污點(diǎn)傳播經(jīng)過(guò)的函數(shù),判斷函數(shù)參數(shù)以及函數(shù)調(diào)用者對(duì)象的污點(diǎn)狀態(tài),以此決定是否標(biāo)記函數(shù)返回值,從而在程序運(yùn)行時(shí)實(shí)時(shí)跟蹤污點(diǎn)數(shù)據(jù)的流向;第三,針對(duì)污點(diǎn)匯聚點(diǎn)的ECA 規(guī)則自動(dòng)識(shí)別污點(diǎn)匯聚點(diǎn),在污點(diǎn)匯聚點(diǎn)處對(duì)將要執(zhí)行的SQL 語(yǔ)句進(jìn)行詞法語(yǔ)法分析評(píng)估其污點(diǎn)狀態(tài),從而判斷是否存在SQL 注入攻擊。在Web 應(yīng)用運(yùn)行時(shí),安裝ECA 規(guī)則,實(shí)現(xiàn)檢測(cè)模塊的自動(dòng)在線加載。此時(shí),檢測(cè)模塊就會(huì)在用戶提交請(qǐng)求后發(fā)揮作用。ECA 規(guī)則比較系統(tǒng)完整地模擬了動(dòng)態(tài)污點(diǎn)分析過(guò)程,實(shí)現(xiàn)了針對(duì)待測(cè)Web 應(yīng)用中外部數(shù)據(jù)進(jìn)入系統(tǒng)后從污點(diǎn)源到污點(diǎn)匯聚點(diǎn)經(jīng)過(guò)的所有可能的基本函數(shù)的自動(dòng)識(shí)別以及在相應(yīng)函數(shù)中插入相應(yīng)的污點(diǎn)分析邏輯。這些基本函數(shù)包括服務(wù)器請(qǐng)求接口的方法(污點(diǎn)源,如ServeltRequest.getParameter())、字符串類中具有污點(diǎn)傳播能力的字符串操作方法(污點(diǎn)傳播經(jīng)過(guò)的函數(shù),如String.append())、Java 數(shù)據(jù)庫(kù)連接(Java Database Connectivity,JDBC)接口中的方法(污點(diǎn)匯聚點(diǎn),如Statement.executeQuery())。在用戶發(fā)起請(qǐng)求后,Web 應(yīng)用中與該請(qǐng)求相關(guān)的基本函數(shù)的執(zhí)行就會(huì)觸發(fā)與之相關(guān)的ECA 規(guī)則的執(zhí)行,相關(guān)規(guī)則就會(huì)隨著污點(diǎn)數(shù)據(jù)在系統(tǒng)中的流動(dòng)而自動(dòng)觸發(fā)執(zhí)行污點(diǎn)標(biāo)記、污點(diǎn)傳播、污點(diǎn)檢查動(dòng)作,從而判斷當(dāng)前用戶的請(qǐng)求是否存在SQL注入攻擊。當(dāng)Web 應(yīng)用處理用戶請(qǐng)求時(shí),外部數(shù)據(jù)實(shí)際會(huì)經(jīng)過(guò)哪些基本函數(shù)的處理對(duì)用戶而言是模糊的,對(duì)ECA 規(guī)則而言是透明的。檢測(cè)模塊獨(dú)立于原始Web 應(yīng)用的業(yè)務(wù)邏輯,作為一個(gè)整體被ECA 規(guī)則定義,在線安裝ECA 規(guī)則可以將檢測(cè)模塊動(dòng)態(tài)插入到正在運(yùn)行的Web 應(yīng)用中;同時(shí),也可以在線卸載ECA 規(guī)則,被規(guī)則影響的基本函數(shù)就會(huì)恢復(fù)原狀。安裝卸載規(guī)則的過(guò)程中,無(wú)須重新編譯、打包、部署Web應(yīng)用。

    2.1 污點(diǎn)標(biāo)記算法

    本文基于Java EE(Java platform,Enterprise Edition)框架作具體論述。不可信數(shù)據(jù)進(jìn)入程序中,參與SQL 語(yǔ)句的動(dòng)態(tài)構(gòu)建,并最終被數(shù)據(jù)庫(kù)服務(wù)器當(dāng)作SQL 代碼執(zhí)行。由于SQL注入攻擊涉及的都是字符串的構(gòu)建,因此本文為JDK(Java Development Kit)中的String、StringBuffer、StringBuilder 三個(gè)字符串類的實(shí)例建立一個(gè)映射。每一個(gè)字符串實(shí)例與一個(gè)StringData 類實(shí)例相對(duì)應(yīng),相對(duì)應(yīng)的StringData 類實(shí)例存儲(chǔ)了該字符串實(shí)例的污點(diǎn)狀態(tài)信息。StringData 類包含一個(gè)布爾變量字段和一個(gè)布爾數(shù)組字段:布爾變量表征該實(shí)例是否被污染,布爾數(shù)組則表征該字符串實(shí)例的每個(gè)字符的污染狀況。若布爾變量為false,則相應(yīng)的布爾數(shù)組為空,這樣可以節(jié)省內(nèi)存。

    動(dòng)態(tài)污點(diǎn)標(biāo)記如圖2 所示,在Web 應(yīng)用運(yùn)行時(shí),污點(diǎn)源ECA 規(guī)則一經(jīng)安裝,就會(huì)自動(dòng)識(shí)別污點(diǎn)引入函數(shù),在該函數(shù)業(yè)務(wù)邏輯中增加對(duì)規(guī)則的觸發(fā)調(diào)用。當(dāng)用戶提交的數(shù)據(jù)經(jīng)過(guò)污點(diǎn)引入函數(shù)時(shí),污點(diǎn)標(biāo)記規(guī)則自動(dòng)觸發(fā),評(píng)估條件為真執(zhí)行污點(diǎn)標(biāo)記動(dòng)作,標(biāo)記用戶提交的數(shù)據(jù)。

    圖2 污點(diǎn)標(biāo)記示意圖Fig.2 Schematic diagram of taint marking

    污點(diǎn)標(biāo)記的算法如算法1 所示,創(chuàng)建一個(gè)StringData 類,初始化該類字段,布爾變量字段賦為true,布爾數(shù)組字段的每一個(gè)數(shù)組元素賦值為true,然后以方法參數(shù)param為鍵將新創(chuàng)建的StringData 實(shí)例存儲(chǔ)到taintMaps 映射表中。這種標(biāo)記的好處在于既不用擴(kuò)展字符串類String 等的污點(diǎn)屬性,使污點(diǎn)標(biāo)記的邏輯與原來(lái)字符串處理邏輯弱耦合,也不用在某些字符串處理函數(shù)再進(jìn)行額外的污點(diǎn)標(biāo)記和污點(diǎn)去除的操作,還可以保證污點(diǎn)標(biāo)記的精度。

    算法1 污點(diǎn)標(biāo)記算法。

    2.2 污點(diǎn)傳播算法

    污點(diǎn)傳播算法的設(shè)計(jì)參考文獻(xiàn)[21,27-28]的思想。污點(diǎn)傳播分析要解決的就是外來(lái)數(shù)據(jù)在程序內(nèi)部的實(shí)時(shí)傳播跟蹤與存儲(chǔ)的問(wèn)題。ECA 規(guī)則負(fù)責(zé)識(shí)別污點(diǎn)傳播經(jīng)過(guò)的函數(shù),然后在規(guī)則動(dòng)作執(zhí)行條件中判斷經(jīng)過(guò)函數(shù)的調(diào)用者和參數(shù)是否被污染:若被污染,在該字符串函數(shù)返回之前,規(guī)則將根據(jù)函數(shù)的調(diào)用者和參數(shù)的污點(diǎn)狀態(tài)將它們的污點(diǎn)狀態(tài)合并組合傳播給函數(shù)返回值;反之不執(zhí)行相關(guān)的污點(diǎn)傳播動(dòng)作。污點(diǎn)傳播邏輯由ECA 規(guī)則定義,而字符串處理函數(shù)的邏輯則在字符串操作類中,從而設(shè)計(jì)出既不會(huì)破壞程序執(zhí)行邏輯,又能保持污點(diǎn)方法跟蹤污點(diǎn)數(shù)據(jù)的傳播軌跡的方法。

    針對(duì)JDK 字符串類中的基礎(chǔ)字符串函數(shù),本文逐一實(shí)現(xiàn)污點(diǎn)傳播邏輯。污點(diǎn)傳播算法如算法2所示,分三種情況進(jìn)行討論:1)如果JDK 字符串類中函數(shù)(如toString()、subString()等)只有攜帶污點(diǎn)的字符串調(diào)用者對(duì)象,則將字符串調(diào)用者對(duì)象的污點(diǎn)狀態(tài)傳播給函數(shù)返回值;2)如果JDK 字符串類中函數(shù)(如構(gòu)造函數(shù))參數(shù)為攜帶污點(diǎn)的字符串對(duì)象,則將該字符串對(duì)象的污點(diǎn)狀態(tài)傳播給函數(shù)返回值;3)如果JDK 字符串類中函數(shù)是這一類函數(shù)(如append()、replace()等),則函數(shù)調(diào)用者對(duì)象和參數(shù)對(duì)象均可能攜帶污點(diǎn),將這二者可能攜帶的污點(diǎn)狀態(tài)合并傳播給函數(shù)返回值。通過(guò)該算法實(shí)現(xiàn)JDK字符串類中基礎(chǔ)字符串函數(shù)級(jí)別的污點(diǎn)傳播分析,避免了傳統(tǒng)的基于指令級(jí)別的污點(diǎn)傳播分析。

    算法2 污點(diǎn)傳播算法

    由于字符串類為引用對(duì)象類型,字符串類之間賦值的本質(zhì)是向某個(gè)內(nèi)存的指針賦值。本文污點(diǎn)的存儲(chǔ)方式是基于映射的方式,即一個(gè)字符串對(duì)象對(duì)應(yīng)一個(gè)污點(diǎn)存儲(chǔ)的位置,當(dāng)帶污點(diǎn)的字符串對(duì)象賦值給另一個(gè)變量,則另一個(gè)變量與被賦值的變量指向同一個(gè)存儲(chǔ)污點(diǎn)的內(nèi)存,賦值操作不用更新taintMaps 映射,即自動(dòng)將污點(diǎn)從等號(hào)右邊傳向左邊。

    2.3 污點(diǎn)檢查算法

    標(biāo)準(zhǔn)Servlet 程序中所有和數(shù)據(jù)庫(kù)交互的相關(guān)操作都封裝在JDBC 庫(kù)中。SQL 注入污點(diǎn)匯聚點(diǎn)是消耗用戶輸入的敏感函數(shù),如executeQuery()、executeUpdate()等。使用污點(diǎn)檢查規(guī)則就可以在函數(shù)開(kāi)始執(zhí)行前捕獲這些敏感函數(shù)的參數(shù)并對(duì)它們進(jìn)行語(yǔ)法解析,從而判斷是否發(fā)生SQL 注入攻擊。若判斷發(fā)生SQL 注入攻擊,則污點(diǎn)檢查規(guī)則執(zhí)行通知開(kāi)發(fā)人員的動(dòng)作。

    對(duì)程序中動(dòng)態(tài)構(gòu)建的SQL 語(yǔ)句進(jìn)行詞法語(yǔ)法分析以構(gòu)建語(yǔ)法分析樹(shù),遍歷語(yǔ)法分析樹(shù)的所有終端結(jié)點(diǎn),檢查它們的污點(diǎn)狀態(tài)。若污點(diǎn)僅僅分布在字符串文本和數(shù)字文本中,則沒(méi)有發(fā)生SQL 注入攻擊;若污點(diǎn)部分或全部分布在SQL 關(guān)鍵字、操作符、特殊字符等,則可以認(rèn)為發(fā)生SQL 注入攻擊[27]。為了降低污點(diǎn)傳播性能的損失,每次執(zhí)行語(yǔ)法解析之前都會(huì)清空taintMaps 中存儲(chǔ)的鍵值對(duì)。污點(diǎn)檢查算法如算法3 所示。

    算法3 污點(diǎn)檢查算法

    3 模型實(shí)現(xiàn)

    本文基于Byteman 工具實(shí)現(xiàn)了所提出的模型。Byteman規(guī)則引擎負(fù)責(zé)解析ECA 規(guī)則,將它表示的內(nèi)聯(lián)Java 代碼轉(zhuǎn)化為字節(jié)碼,由Byteman 代理插入到Web 應(yīng)用的字節(jié)碼中。由此,在Web 應(yīng)用請(qǐng)求數(shù)據(jù)流動(dòng)的過(guò)程中,就會(huì)執(zhí)行ECA 規(guī)則集指定的污點(diǎn)分析動(dòng)作。ECA 規(guī)則語(yǔ)言涉及到的內(nèi)置操作集由Byteman 的幫助類加以擴(kuò)展或替換。由Byteman 幫助類實(shí)現(xiàn)有關(guān)動(dòng)態(tài)污點(diǎn)分析動(dòng)作的內(nèi)置操作集,就可以使ECA規(guī)則語(yǔ)言具有污點(diǎn)分析的功能。基于Byteman 工具實(shí)現(xiàn)模型共分為四個(gè)部分:Byteman 幫助類的定義、污點(diǎn)標(biāo)記實(shí)現(xiàn)、污點(diǎn)傳播實(shí)現(xiàn)以及污點(diǎn)檢查實(shí)現(xiàn)。

    3.1 Byteman幫助類的定義

    Byteman 單個(gè)ECA 規(guī)則的基本架構(gòu)如圖3 所示。ECA 規(guī)則語(yǔ)言中,E(event)為規(guī)則事件,用來(lái)規(guī)范標(biāo)識(shí)與目標(biāo)類關(guān)聯(lián)的目標(biāo)方法中的特定位置。目標(biāo)方法可以是靜態(tài)或?qū)嵗椒ɑ驑?gòu)造函數(shù)。RULE、CLASS、METHOD、AT 子句定義規(guī)則事件。C為condition,由IF子句定義。A為actions,由DO 子句定義,當(dāng)與規(guī)則匹配的類及方法執(zhí)行時(shí),就會(huì)觸發(fā)該規(guī)則的執(zhí)行。由該規(guī)則轉(zhuǎn)化地注入應(yīng)用程序中的字節(jié)碼執(zhí)行過(guò)程是:首先判斷IF子句的condition表示的條件是否為真,若為真,則執(zhí)行DO 子句后面的actions 表示的單個(gè)或多個(gè)動(dòng)作;否則,不執(zhí)行由DO 子句定義的動(dòng)作,即規(guī)則雖然觸發(fā)但沒(méi)有執(zhí)行實(shí)際的動(dòng)作。Byteman 工具存在的意義在于為用戶提供ECA 規(guī)則語(yǔ)言,使用戶可以在Java 語(yǔ)義級(jí)別直觀地修改運(yùn)行中的應(yīng)用程序和JVM 的字節(jié)碼。Byteman 的底層規(guī)則引擎通過(guò)Java代理機(jī)制實(shí)現(xiàn)了ECA規(guī)則到字節(jié)碼的自動(dòng)轉(zhuǎn)換。

    圖3 單個(gè)ECA規(guī)則的基本架構(gòu)Fig.3 Basic structure for single ECA rule

    在圖3 中,HELPER 子句定義的是與該規(guī)則相關(guān)聯(lián)的、由用戶自行定義的幫助類。對(duì)于ECA 規(guī)則而言,可以使用的內(nèi)置操作集并不固定。規(guī)則引擎將規(guī)則中調(diào)用的內(nèi)置操作集與該規(guī)則相關(guān)聯(lián)的幫助類的公共實(shí)例方法相對(duì)應(yīng),任何被指定為幫助類的類必須是非抽象和可繼承的,它的公共實(shí)例方法自動(dòng)變?yōu)橐?guī)則事件、條件、動(dòng)作中可調(diào)用的內(nèi)置操作集。在圖4(a)~(c)的3 個(gè)規(guī)則中,setTaintedInSource、isTainted、setTaintedByMethod、parse 等內(nèi)置操作對(duì)應(yīng)下面自定義幫助類HelperSub2 的公共成員方法。所以規(guī)則condition 或actions 子句對(duì)某些方法的調(diào)用實(shí)質(zhì)就是對(duì)該規(guī)則關(guān)聯(lián)的幫助類的公共實(shí)例方法的調(diào)用。在圖4 中,污點(diǎn)標(biāo)記、污點(diǎn)傳播、污點(diǎn)檢查規(guī)則腳本都與幫助類HelperSub2 相關(guān)聯(lián),由此有關(guān)污點(diǎn)標(biāo)記、污點(diǎn)傳播、污點(diǎn)檢查和污點(diǎn)存儲(chǔ)的具體實(shí)現(xiàn)也是在該幫助類中完成的。該類編寫完成打包為jar 包,在Web 應(yīng)用啟動(dòng)后,使用Byteman 寫好的腳本bmsubmit 命令于命令行上在線提交該jar 包到引導(dǎo)類路徑中,以擴(kuò)展在線提交規(guī)則集的內(nèi)置操作集。根據(jù)圖4 所示的內(nèi)容,下面將詳細(xì)闡述污點(diǎn)分析規(guī)則腳本的編寫以及相應(yīng)的污點(diǎn)標(biāo)記、傳播、檢查算法的實(shí)現(xiàn)。

    圖4 Byteman幫助類的定義Fig.4 Definition of Byteman Helper class

    3.2 污點(diǎn)標(biāo)記實(shí)現(xiàn)

    以圖5 所示的污點(diǎn)規(guī)則示例1 進(jìn)行描述,RULE 子句中RULE 關(guān)鍵字后面為規(guī)則名,INTERFACE、METHOD、AT 子句則表明該規(guī)則觸發(fā)執(zhí)行的位置,即在所有實(shí)現(xiàn)javax.servlet.ServletRequest 接口的實(shí)現(xiàn)類中的getParameter 方法返回之前才觸發(fā)該規(guī)則的執(zhí)行。IF 子句為規(guī)則動(dòng)作是否執(zhí)行的條件,DO 子句為該規(guī)則觸發(fā)后具體執(zhí)行的操作,setTriggering(false)方法總是返回true,對(duì)getParameter 方法返回的字符串$!執(zhí)行污點(diǎn)標(biāo)記的動(dòng)作,具體地設(shè)置污點(diǎn)標(biāo)記的實(shí)現(xiàn)在Byteman 自定義幫助類HelperSub2 中完成。在該規(guī)則中,$!為Byteman 的特殊變量,自動(dòng)與getParameter 方法的返回值綁定。

    圖5 污點(diǎn)規(guī)則示例1Fig.5 Taint rule example 1

    與圖5 類似的ECA 規(guī)則腳本共同監(jiān)視應(yīng)用可能引入外部數(shù)據(jù)的函數(shù),一旦這些函數(shù)執(zhí)行,就會(huì)執(zhí)行相應(yīng)的污點(diǎn)標(biāo)記動(dòng)作。這些腳本都與幫助類HelperSub2 相關(guān)聯(lián),腳本調(diào)用的污點(diǎn)標(biāo)記動(dòng)作之一setTaintedInSource()在該幫助類中作一個(gè)公共成員方法來(lái)實(shí)現(xiàn)。核心代碼如下:

    3.3 污點(diǎn)傳播實(shí)現(xiàn)

    監(jiān)控污點(diǎn)經(jīng)過(guò)的字符串操作函數(shù)的規(guī)則集都與HelperSub2 類相關(guān)聯(lián),從而將針對(duì)字符串操作函數(shù)的污點(diǎn)設(shè)置方法整合在一個(gè)類中。一系列監(jiān)控污點(diǎn)傳播經(jīng)過(guò)的函數(shù)的規(guī)則集和它們調(diào)用的在幫助類中實(shí)現(xiàn)的各污點(diǎn)傳播動(dòng)作構(gòu)成了本文所提模型中污點(diǎn)傳播算法的具體實(shí)現(xiàn)。

    針對(duì)JDK 字符串類中每個(gè)字符串操作函數(shù)均有相應(yīng)的規(guī)則需要編寫。以圖6 所示的規(guī)則示例2 舉例闡述,該規(guī)則匹配StringBuilder 類中的append(String)方法,判斷$!,$1的污點(diǎn)狀態(tài)以決定是否在該方法返回之前給該方法返回值設(shè)置污點(diǎn)標(biāo)記。該規(guī)則中$1 與append 方法的第一個(gè)參數(shù)自動(dòng)綁定。設(shè)置污點(diǎn)方法是setTaintedByAppend(),該方法針對(duì)append()方法進(jìn)行處理,具體污點(diǎn)處理操作在自定義幫助類HelperSub2 中實(shí)現(xiàn)。由于利用Byteman 比較完整地實(shí)現(xiàn)了針對(duì)污點(diǎn)傳播經(jīng)過(guò)的字符串函數(shù)的規(guī)則,但實(shí)際應(yīng)用到哪些字符串函數(shù)對(duì)于用戶而言是模糊的,對(duì)于規(guī)則而言卻是透明的。由此,用戶不需要知道數(shù)據(jù)流經(jīng)過(guò)哪些具體的字符串操作函數(shù),由規(guī)則自動(dòng)識(shí)別而觸發(fā)執(zhí)行污點(diǎn)傳播動(dòng)作。

    圖6 污點(diǎn)規(guī)則示例2Fig.6 Taint rule example 2

    針對(duì)圖 6 規(guī)則調(diào) 用的污 點(diǎn)傳播動(dòng)作setTaintedByAppend ($!,$1),在幫助類HelperSub2 中實(shí)現(xiàn)的核心代碼如下:

    判斷函數(shù)參數(shù)是否攜帶污點(diǎn)的內(nèi)置操作isTainted()在幫助類HelperSub2 中實(shí)現(xiàn)的核心代碼如下:

    3.4 污點(diǎn)檢查實(shí)現(xiàn)

    圖7 規(guī)則示例3 顯示的規(guī)則識(shí)別所有實(shí)現(xiàn)Statement 接口的實(shí)現(xiàn)類的executeQuery()方法的執(zhí)行,在該方法執(zhí)行第一條語(yǔ)句前判斷規(guī)則條件以執(zhí)行通知開(kāi)發(fā)人員動(dòng)作。在規(guī)則條件中,首先檢查該方法參數(shù)是否攜帶污點(diǎn),若攜帶污點(diǎn),則規(guī)則調(diào)用parse()方法對(duì)方法參數(shù)即動(dòng)態(tài)構(gòu)建的SQL 語(yǔ)句進(jìn)行詞法語(yǔ)法分析,從而判斷是否存在SQL 注入攻擊。對(duì)于所有敏感函數(shù)接口(如executeUpdate 等),均有相應(yīng)的規(guī)則與之對(duì)應(yīng),這些規(guī)則調(diào)用HelperSub2 類中的parse 方法,污點(diǎn)檢查算法在parse 方法中實(shí)現(xiàn)。

    圖7 污點(diǎn)規(guī)則示例3Fig.7 Taint rule example 3

    parse 方法實(shí)現(xiàn)的核心代碼如下:

    4 實(shí)驗(yàn)與結(jié)果分析

    為驗(yàn)證本文所提模型的有效性,在文獻(xiàn)[11]中使用的bookstore 和WebGoat[13]上進(jìn)行測(cè)試。為了在這些Web應(yīng)用上進(jìn)行測(cè)試,還需要針對(duì)每一個(gè)應(yīng)用的SQL 注入攻擊測(cè)試集(負(fù)樣本)和正常訪問(wèn)請(qǐng)求集(正樣本),負(fù)樣本中含有多種類型的SQL 注入攻擊,正樣本包含富文本字面量及無(wú)SQL 語(yǔ)義字符。在筆記本電腦上搭建實(shí)驗(yàn)環(huán)境,利用正負(fù)樣本測(cè)試集測(cè)試目標(biāo)應(yīng)用以驗(yàn)證SQL 注入攻擊在線檢測(cè)模型的有效性。

    4.1 實(shí)驗(yàn)設(shè)置與測(cè)試結(jié)果分析

    首先啟動(dòng)Web 應(yīng)用,此時(shí)在命令行輸入jps 查詢應(yīng)用執(zhí)行的進(jìn)程號(hào),并輸入Byteman 寫好的命令bminstall,將Byteman 代理安裝到對(duì)應(yīng)進(jìn)程(正在運(yùn)行的Web 應(yīng)用)的Java虛擬機(jī)中,使用bmsubmit 命令提交自定義幫助類jar 包,然后在線提交ECA 規(guī)則集。此時(shí)的Web 應(yīng)用已經(jīng)加載了在線檢測(cè)模塊,模塊隨時(shí)監(jiān)測(cè)Web 應(yīng)用接收的請(qǐng)求。在虛擬機(jī)Linux 系統(tǒng)中使用wget 命令批量提交請(qǐng)求以及手動(dòng)注入,模擬攻擊者頻繁發(fā)送包含SQL 注入行為的請(qǐng)求和正常的請(qǐng)求,檢測(cè)模型會(huì)對(duì)每一個(gè)請(qǐng)求在應(yīng)用中產(chǎn)生的SQL 語(yǔ)句進(jìn)行評(píng)估以判斷是否存在SQL 注入攻擊行為。對(duì)檢測(cè)結(jié)果進(jìn)行統(tǒng)計(jì)之后,結(jié)果如表1~3 所示。

    表1 SQL注入測(cè)試用例及檢測(cè)結(jié)果Tab.1 SQL injection test cases and detection results

    表1 列出了各種SQL 注入攻擊類型的測(cè)試用例代表的攻擊字符信息和檢測(cè)結(jié)果,所提模型能根據(jù)污染的敏感攻擊字符在SQL 語(yǔ)法分析樹(shù)中的位置判斷動(dòng)態(tài)生成的SQL 語(yǔ)句的合法性,從而判斷出表1 中的測(cè)試用例存在SQL 注入攻擊行為。

    表2 列出了針對(duì)每個(gè)Web 應(yīng)用攻擊的SQL 注入攻擊請(qǐng)求樣本數(shù)和成功檢測(cè)到攻擊的樣本數(shù)。針對(duì)兩個(gè)Web 應(yīng)用發(fā)送大約1 200 個(gè)SQL 注入攻擊請(qǐng)求樣本,發(fā)現(xiàn)本文模型可以檢測(cè)到絕大多數(shù)的攻擊樣本,說(shuō)明該模型具有一定的檢測(cè)能力。

    表2 惡意請(qǐng)求樣本檢測(cè)結(jié)果Tab.2 Detection results of malicious request samples

    表3 給出了針對(duì)每個(gè)Web 應(yīng)用發(fā)送的正常請(qǐng)求樣本數(shù)和檢測(cè)到SQL 注入攻擊行為的樣本數(shù)。從表中數(shù)據(jù)可以看出,發(fā)送了大約800 個(gè)正常請(qǐng)求樣本,本文檢測(cè)模型沒(méi)有檢測(cè)到SQL 注入攻擊行為,說(shuō)明該模型并沒(méi)有將正常的請(qǐng)求誤認(rèn)為存在SQL 注入攻擊行為的惡意請(qǐng)求,即不存在誤報(bào)的情況。

    表3 正常請(qǐng)求樣本檢測(cè)結(jié)果Tab.3 Detection results of normal request samples

    綜上所述,可以發(fā)現(xiàn)本文模型能夠檢測(cè)出常見(jiàn)SQL 注入攻擊類型,如重言式、非法或邏輯錯(cuò)誤查詢、聯(lián)合查詢等,針對(duì)發(fā)送的SQL 注入攻擊請(qǐng)求樣本能識(shí)別出絕大多數(shù)具有SQL 注入攻擊行為的請(qǐng)求樣本,針對(duì)正常請(qǐng)求沒(méi)有出現(xiàn)誤報(bào)。上述實(shí)驗(yàn)結(jié)果可以說(shuō)明本文模型是有效的。

    4.2 與其他檢測(cè)方法的比較分析

    由于有些檢測(cè)方法源碼并不開(kāi)放,難以復(fù)現(xiàn),只能通過(guò)閱讀大量的文獻(xiàn)分別從檢測(cè)能力和部署要求等方面進(jìn)行粗略的分析評(píng)估。每種檢測(cè)方法的檢測(cè)能力見(jiàn)表4,每種檢測(cè)方法的實(shí)施部署要求見(jiàn)表5。其中:表4 使用“√”表示可以檢測(cè)到此種類型的攻擊;“*”表示部分可以檢測(cè)的情況;“×”表示不能檢測(cè)該類型的攻擊。

    表4 不同方法的檢測(cè)能力比較Tab.4 Comparison of detection capability of different methods

    表5 不同方法的部署要求比較Tab.5 Comparison of deployment requirements for different methods

    從表4 以看出,文獻(xiàn)[9]的方法側(cè)重于類型安全,文獻(xiàn)[17]的方法側(cè)重于重言式,它們只能檢測(cè)SQL 注入攻擊的一小部分,而當(dāng)前其他一些主流方法基本都可以檢測(cè)到所有類型的SQL 注入攻擊,文獻(xiàn)[30-31]中通過(guò)機(jī)器學(xué)習(xí)與特征向量提取的方法構(gòu)建檢測(cè)模型,模型訓(xùn)練準(zhǔn)確率分別可以達(dá)到91.05%、98.67%。本文方法檢測(cè)準(zhǔn)確率達(dá)到99.42%,在檢測(cè)能力上可以與這些方法相當(dāng)。

    從表5 可以看出,文獻(xiàn)[10-11,27]的方法采用某種插樁工具離線插樁來(lái)加載檢測(cè)模塊,文獻(xiàn)[23]的方法修改了PHP解釋器,文獻(xiàn)[26]的方法則重新定義字符串類及其相關(guān)的賦值連接操作,用這種語(yǔ)言編寫有漏洞的Web 應(yīng)用來(lái)加載檢測(cè)模塊。本文方法既不修改運(yùn)行時(shí)系統(tǒng),也不需要修改原始字符串類,在未作任何修改的Web 應(yīng)用啟動(dòng)后運(yùn)行時(shí)就可以在線提交規(guī)則集以加載檢測(cè)模塊,部署方式更加靈活方便。

    另外,本文和文獻(xiàn)[28]都采用代碼注入的方式將檢測(cè)代碼注入Web 應(yīng)用程序?qū)崿F(xiàn)SQL 注入攻擊檢測(cè)。文獻(xiàn)[28]的方法采用AOP 實(shí)現(xiàn)靜態(tài)注入,而本文使用ECA 規(guī)則實(shí)現(xiàn)了在線注入,可以實(shí)現(xiàn)Web 應(yīng)用的在線檢測(cè),并且ECA 規(guī)則可以在線卸載,使Web 應(yīng)用恢復(fù)原狀。因此,本文模型是一個(gè)低侵入性的無(wú)須重新編譯、打包、部署應(yīng)用的SQL 注入攻擊檢測(cè)模型。另外,文獻(xiàn)[28]的方法對(duì)不可信數(shù)據(jù)進(jìn)行首尾標(biāo)記,并把拼接后的字符串的屬性taint 設(shè)為true,而本文方法對(duì)不可信數(shù)據(jù)采用映射的方式進(jìn)行污點(diǎn)標(biāo)記與存儲(chǔ),即每一個(gè)不可信數(shù)據(jù)對(duì)象與一個(gè)存儲(chǔ)污點(diǎn)信息的對(duì)象相對(duì)應(yīng),這樣標(biāo)記的好處是不影響應(yīng)用的字符串處理邏輯,與應(yīng)用邏輯弱耦合,而且可以保證精度。

    4.3 模型實(shí)時(shí)性分析

    本文模型在加載后,除了可以檢測(cè)SQL 注入攻擊行為,還要考慮它對(duì)原始Web 應(yīng)用造成的性能損失,即當(dāng)用戶發(fā)起請(qǐng)求后,檢測(cè)模型能否及時(shí)給出檢測(cè)結(jié)果。在Web 應(yīng)用的3個(gè)注入點(diǎn),測(cè)試加載檢測(cè)模塊前、后提交正常和惡意請(qǐng)求后得到響應(yīng)的時(shí)間,每個(gè)請(qǐng)求提交200 次,計(jì)算出平均響應(yīng)時(shí)間。通過(guò)比較兩者時(shí)間的差異,初步評(píng)估模型施加給應(yīng)用的性能開(kāi)銷。測(cè)試結(jié)果如表6 所示。從表6 可以看出,3 個(gè)注入點(diǎn)測(cè)試中,當(dāng)發(fā)送正常請(qǐng)求時(shí),加載檢測(cè)組件后,平均響應(yīng)時(shí)間最多增加11 ms;當(dāng)發(fā)送惡意請(qǐng)求時(shí),加載檢測(cè)組件后的平均響應(yīng)時(shí)間最多增加13 ms。由此可以初步評(píng)估,本文模型加載后對(duì)Web 應(yīng)用的施加的影響比較小,對(duì)正常和惡意的請(qǐng)求,模型能及時(shí)判斷出是否存在SQL 注入攻擊行為。

    表6 注入點(diǎn)加載前后的平均響應(yīng)時(shí)間比較 單位:msTab.6 Comparison of average response time before and after loading injection points unit:ms

    5 結(jié)語(yǔ)

    針對(duì)當(dāng)前SQL 注入攻擊檢測(cè)方法不能在線注入檢測(cè)代碼的不足,本文提出了一種基于ECA 規(guī)則和動(dòng)態(tài)污點(diǎn)分析的SQL 注入攻擊檢測(cè)模型。該模型在Web 應(yīng)用運(yùn)行時(shí)安裝ECA 規(guī)則,自動(dòng)加載SQL 注入攻擊檢測(cè)代碼。在攻擊者發(fā)送請(qǐng)求時(shí)自動(dòng)觸發(fā)檢測(cè)組件的執(zhí)行,從而在線檢測(cè)Web 應(yīng)用是否受到SQL 注入攻擊。整個(gè)檢測(cè)模塊由ECA 規(guī)則腳本封裝在一起,與Web 應(yīng)用原來(lái)的邏輯相互獨(dú)立,腳本可在線安裝和卸載,具有輕量級(jí)和低侵入性的部署優(yōu)點(diǎn),在腳本安裝卸載過(guò)程無(wú)須修改應(yīng)用程序執(zhí)行引擎和源碼,無(wú)須重新編譯、打包、部署Web 應(yīng)用。本文基于Byteman 實(shí)現(xiàn)了所提模型,并通過(guò)實(shí)驗(yàn)驗(yàn)證了模型的有效性。但本文方法也具有局限性,只能解決污點(diǎn)傳播中數(shù)據(jù)依賴傳播,沒(méi)有考慮控制依賴傳播。因此未來(lái)的研究計(jì)劃中,將本文方法適用于其他種類的Web 安全威脅防御中。

    猜你喜歡
    污點(diǎn)字符串語(yǔ)句
    基于代碼重寫的動(dòng)態(tài)污點(diǎn)分析
    重點(diǎn):語(yǔ)句銜接
    精彩語(yǔ)句
    使用Lightroom污點(diǎn)去除工具清理照片中的瑕疵
    我國(guó)“污點(diǎn)證人”刑事責(zé)任豁免制度的構(gòu)建
    一種新的基于對(duì)稱性的字符串相似性處理算法
    如何搞定語(yǔ)句銜接題
    依據(jù)字符串匹配的中文分詞模型研究
    一種針對(duì)Java中字符串的內(nèi)存管理方案
    作文語(yǔ)句實(shí)錄
    国产麻豆69| 色尼玛亚洲综合影院| 这个男人来自地球电影免费观看| 禁无遮挡网站| 久99久视频精品免费| 69精品国产乱码久久久| 国产精品秋霞免费鲁丝片| 精品日产1卡2卡| 人妻久久中文字幕网| 国产亚洲av嫩草精品影院| 国产精品久久久久久人妻精品电影| 一个人观看的视频www高清免费观看 | 在线观看免费日韩欧美大片| 亚洲人成77777在线视频| www.999成人在线观看| 国产av一区二区精品久久| 国产一区二区三区在线臀色熟女| 啦啦啦 在线观看视频| 长腿黑丝高跟| 免费少妇av软件| 国产精品久久久av美女十八| 欧美+亚洲+日韩+国产| 国产xxxxx性猛交| 久热这里只有精品99| 亚洲av成人av| 亚洲七黄色美女视频| 国产亚洲欧美在线一区二区| 亚洲国产精品成人综合色| 精品欧美国产一区二区三| 亚洲成人国产一区在线观看| 中文字幕人妻熟女乱码| 国产成人影院久久av| av网站免费在线观看视频| 香蕉久久夜色| 国产av一区二区精品久久| 国产一区二区三区综合在线观看| 亚洲av成人av| 69av精品久久久久久| 国产成人一区二区三区免费视频网站| 免费看十八禁软件| 午夜精品久久久久久毛片777| 欧美成人免费av一区二区三区| 久久午夜综合久久蜜桃| 国产在线精品亚洲第一网站| 欧美绝顶高潮抽搐喷水| 午夜福利高清视频| 国产欧美日韩一区二区三| 黄色女人牲交| 天天添夜夜摸| 久久九九热精品免费| 美女 人体艺术 gogo| 黑人欧美特级aaaaaa片| 欧美大码av| 国产亚洲精品综合一区在线观看 | 在线天堂中文资源库| 久久人妻福利社区极品人妻图片| 99在线视频只有这里精品首页| 亚洲人成伊人成综合网2020| 久久影院123| 欧美一级a爱片免费观看看 | 在线免费观看的www视频| 精品乱码久久久久久99久播| 国产精品自产拍在线观看55亚洲| 久久精品人人爽人人爽视色| 身体一侧抽搐| 乱人伦中国视频| 久久久国产欧美日韩av| 亚洲国产毛片av蜜桃av| av天堂在线播放| 99国产极品粉嫩在线观看| 欧美黑人精品巨大| 亚洲av美国av| 变态另类丝袜制服| 亚洲欧美日韩无卡精品| 亚洲 国产 在线| 婷婷六月久久综合丁香| 久久久国产精品麻豆| av网站免费在线观看视频| 18禁黄网站禁片午夜丰满| 国产精品久久电影中文字幕| 波多野结衣巨乳人妻| 侵犯人妻中文字幕一二三四区| 成人国产一区最新在线观看| 精品一品国产午夜福利视频| 99热只有精品国产| 18禁美女被吸乳视频| 男人操女人黄网站| 自拍欧美九色日韩亚洲蝌蚪91| 久久伊人香网站| 可以在线观看毛片的网站| 成人国产综合亚洲| 成年版毛片免费区| 亚洲三区欧美一区| 亚洲精品中文字幕在线视频| 亚洲国产欧美日韩在线播放| 黄色 视频免费看| 日本五十路高清| 久久精品国产亚洲av香蕉五月| 国产真人三级小视频在线观看| 日韩精品青青久久久久久| 精品人妻在线不人妻| 国产一区二区三区在线臀色熟女| 亚洲狠狠婷婷综合久久图片| 国产精品久久视频播放| 三级毛片av免费| 久久久久久久久免费视频了| 国产激情欧美一区二区| 淫妇啪啪啪对白视频| 亚洲国产日韩欧美精品在线观看 | 国内毛片毛片毛片毛片毛片| 黑丝袜美女国产一区| 国内毛片毛片毛片毛片毛片| 高清黄色对白视频在线免费看| 精品久久久久久久毛片微露脸| 波多野结衣av一区二区av| 免费看a级黄色片| av天堂在线播放| 深夜精品福利| 成人免费观看视频高清| 久久精品影院6| 久久精品人人爽人人爽视色| 色综合站精品国产| 最好的美女福利视频网| 精品国产亚洲在线| 女性被躁到高潮视频| 精品福利观看| 午夜视频精品福利| 美女免费视频网站| 国产成年人精品一区二区| 99热只有精品国产| or卡值多少钱| 真人一进一出gif抽搐免费| 女人精品久久久久毛片| 别揉我奶头~嗯~啊~动态视频| 性少妇av在线| 亚洲欧美精品综合久久99| 中文字幕高清在线视频| 亚洲av五月六月丁香网| 亚洲 国产 在线| 免费少妇av软件| 亚洲人成77777在线视频| 麻豆av在线久日| 在线观看免费午夜福利视频| 亚洲成国产人片在线观看| 国产精品电影一区二区三区| 一本综合久久免费| 国产欧美日韩一区二区三区在线| 久久精品国产亚洲av香蕉五月| 俄罗斯特黄特色一大片| 国产成人一区二区三区免费视频网站| 亚洲国产精品久久男人天堂| 一本大道久久a久久精品| 午夜福利高清视频| 国产精品免费一区二区三区在线| 国产免费av片在线观看野外av| 色综合亚洲欧美另类图片| 母亲3免费完整高清在线观看| 国产极品粉嫩免费观看在线| 国产亚洲欧美精品永久| 欧美一级a爱片免费观看看 | 久热这里只有精品99| 久久精品国产综合久久久| 一级a爱视频在线免费观看| 9色porny在线观看| 99香蕉大伊视频| 欧美黑人精品巨大| 夜夜爽天天搞| 亚洲精品国产色婷婷电影| 中文亚洲av片在线观看爽| 免费av毛片视频| 嫁个100分男人电影在线观看| 国产日韩一区二区三区精品不卡| 每晚都被弄得嗷嗷叫到高潮| 女生性感内裤真人,穿戴方法视频| 国产国语露脸激情在线看| 国产极品粉嫩免费观看在线| 欧美久久黑人一区二区| 身体一侧抽搐| 国产一区二区三区在线臀色熟女| 久久久久久亚洲精品国产蜜桃av| 黄色毛片三级朝国网站| 国产精品亚洲一级av第二区| 午夜福利欧美成人| 免费女性裸体啪啪无遮挡网站| 国产极品粉嫩免费观看在线| 在线观看日韩欧美| 亚洲伊人色综图| av免费在线观看网站| 久久久久久人人人人人| 国产高清激情床上av| 国产av精品麻豆| 好男人在线观看高清免费视频 | 亚洲人成电影免费在线| 91老司机精品| 又紧又爽又黄一区二区| 国产一卡二卡三卡精品| 欧美久久黑人一区二区| 国产精品一区二区在线不卡| 最新美女视频免费是黄的| 日本免费a在线| 香蕉久久夜色| 亚洲电影在线观看av| 久久久久久人人人人人| 一区福利在线观看| 美女午夜性视频免费| 黑丝袜美女国产一区| 亚洲人成电影观看| 午夜免费观看网址| 又大又爽又粗| 国产亚洲欧美98| 电影成人av| aaaaa片日本免费| 精品卡一卡二卡四卡免费| 国产男靠女视频免费网站| 国产精品一区二区三区四区久久 | 中文字幕久久专区| 成年版毛片免费区| 欧美日本亚洲视频在线播放| 国产精品香港三级国产av潘金莲| 欧美黑人欧美精品刺激| 精品熟女少妇八av免费久了| 99久久99久久久精品蜜桃| 黄色成人免费大全| 精品国产一区二区三区四区第35| 国产午夜精品久久久久久| 男女之事视频高清在线观看| av福利片在线| 久久久久国产一级毛片高清牌| 国产精品一区二区免费欧美| 麻豆一二三区av精品| www.自偷自拍.com| 一二三四社区在线视频社区8| 日日干狠狠操夜夜爽| 欧洲精品卡2卡3卡4卡5卡区| 亚洲第一av免费看| 午夜免费成人在线视频| 国产一区二区在线av高清观看| 大香蕉久久成人网| 精品第一国产精品| 亚洲欧美精品综合一区二区三区| 国产亚洲精品第一综合不卡| 国产一区二区在线av高清观看| 麻豆av在线久日| 一卡2卡三卡四卡精品乱码亚洲| 岛国在线观看网站| 天天躁狠狠躁夜夜躁狠狠躁| 午夜影院日韩av| 国产午夜精品久久久久久| 99精品久久久久人妻精品| 最新美女视频免费是黄的| 少妇 在线观看| 精品电影一区二区在线| 午夜福利,免费看| 满18在线观看网站| 97超级碰碰碰精品色视频在线观看| 久久国产亚洲av麻豆专区| 麻豆久久精品国产亚洲av| АⅤ资源中文在线天堂| 国产高清有码在线观看视频 | 国产精品一区二区免费欧美| 亚洲色图av天堂| 一区福利在线观看| 日本 欧美在线| 婷婷丁香在线五月| 国产成+人综合+亚洲专区| 啦啦啦免费观看视频1| 两个人视频免费观看高清| 欧美中文综合在线视频| 欧美精品亚洲一区二区| 麻豆一二三区av精品| 两性午夜刺激爽爽歪歪视频在线观看 | 婷婷六月久久综合丁香| 亚洲五月天丁香| 一卡2卡三卡四卡精品乱码亚洲| 女性被躁到高潮视频| 搡老岳熟女国产| 色综合婷婷激情| 99国产精品一区二区三区| 午夜福利18| 亚洲精品中文字幕一二三四区| 成人国语在线视频| 亚洲中文日韩欧美视频| 亚洲伊人色综图| 国产成人精品在线电影| 女人精品久久久久毛片| 精品久久久久久久久久免费视频| 国产一区二区三区视频了| 日韩成人在线观看一区二区三区| 欧美日本视频| 亚洲中文字幕日韩| 久久婷婷人人爽人人干人人爱 | 日本在线视频免费播放| 国产精品国产高清国产av| 午夜福利一区二区在线看| 老鸭窝网址在线观看| 国产在线精品亚洲第一网站| 成人特级黄色片久久久久久久| 精品乱码久久久久久99久播| 最近最新免费中文字幕在线| 久久影院123| 身体一侧抽搐| 黄片小视频在线播放| 久久午夜亚洲精品久久| 欧美久久黑人一区二区| 12—13女人毛片做爰片一| 久久精品影院6| 人人妻人人澡人人看| 欧美性长视频在线观看| 乱人伦中国视频| 亚洲av熟女| 亚洲男人的天堂狠狠| 午夜视频精品福利| 母亲3免费完整高清在线观看| 国产99久久九九免费精品| 欧美亚洲日本最大视频资源| 国产一区二区三区综合在线观看| 亚洲精品一卡2卡三卡4卡5卡| 日韩欧美国产一区二区入口| 久久中文字幕人妻熟女| 99久久综合精品五月天人人| 在线观看舔阴道视频| 亚洲精品粉嫩美女一区| 成人国产综合亚洲| 88av欧美| 少妇的丰满在线观看| 午夜久久久在线观看| 超碰成人久久| 欧美精品亚洲一区二区| 日韩欧美免费精品| 在线观看免费午夜福利视频| 黄色成人免费大全| 久久人妻福利社区极品人妻图片| 伦理电影免费视频| 女人高潮潮喷娇喘18禁视频| 色精品久久人妻99蜜桃| 大陆偷拍与自拍| www.精华液| 午夜免费成人在线视频| 亚洲人成电影观看| 99久久99久久久精品蜜桃| 少妇被粗大的猛进出69影院| 久久午夜亚洲精品久久| 欧美乱码精品一区二区三区| 在线永久观看黄色视频| 69精品国产乱码久久久| 不卡av一区二区三区| 一进一出好大好爽视频| 日韩有码中文字幕| 欧美日韩瑟瑟在线播放| 欧美黑人欧美精品刺激| 亚洲成国产人片在线观看| 在线观看www视频免费| 天天添夜夜摸| 黑人欧美特级aaaaaa片| av天堂在线播放| 国产成人影院久久av| 99久久99久久久精品蜜桃| 午夜免费观看网址| 国产亚洲欧美98| 亚洲精品国产区一区二| 男女之事视频高清在线观看| 国内精品久久久久精免费| 涩涩av久久男人的天堂| 十八禁人妻一区二区| 久久久久国产精品人妻aⅴ院| 大陆偷拍与自拍| 怎么达到女性高潮| av欧美777| 国产亚洲欧美98| 99久久久亚洲精品蜜臀av| 久久精品人人爽人人爽视色| 亚洲精品国产色婷婷电影| 男人舔女人的私密视频| 两个人视频免费观看高清| 99国产精品99久久久久| 国产精品久久久人人做人人爽| 99久久精品国产亚洲精品| 无限看片的www在线观看| 国产精品香港三级国产av潘金莲| 国产麻豆成人av免费视频| 欧美不卡视频在线免费观看 | 中文字幕最新亚洲高清| 天天躁夜夜躁狠狠躁躁| 最近最新免费中文字幕在线| 亚洲午夜理论影院| 国产精品久久久人人做人人爽| 成人国语在线视频| 99久久久亚洲精品蜜臀av| av超薄肉色丝袜交足视频| 最新美女视频免费是黄的| 禁无遮挡网站| 女人精品久久久久毛片| 777久久人妻少妇嫩草av网站| 琪琪午夜伦伦电影理论片6080| 制服诱惑二区| 国产精品国产高清国产av| 久久精品人人爽人人爽视色| 自拍欧美九色日韩亚洲蝌蚪91| 亚洲最大成人中文| 午夜福利,免费看| 免费在线观看亚洲国产| 色老头精品视频在线观看| 亚洲欧美日韩无卡精品| 黑人巨大精品欧美一区二区蜜桃| 少妇裸体淫交视频免费看高清 | 色在线成人网| 亚洲精品久久国产高清桃花| 国产亚洲精品综合一区在线观看 | 在线国产一区二区在线| 亚洲av成人av| 色av中文字幕| 少妇粗大呻吟视频| 日韩大码丰满熟妇| 欧美国产精品va在线观看不卡| 亚洲熟妇熟女久久| 午夜久久久久精精品| 免费av毛片视频| 午夜成年电影在线免费观看| 亚洲国产看品久久| 在线观看免费日韩欧美大片| 99久久99久久久精品蜜桃| 99国产精品免费福利视频| 国产aⅴ精品一区二区三区波| 乱人伦中国视频| 最近最新中文字幕大全免费视频| 亚洲欧美精品综合久久99| 亚洲国产欧美日韩在线播放| 精品乱码久久久久久99久播| 国产欧美日韩综合在线一区二区| 黑人操中国人逼视频| 精品日产1卡2卡| 老熟妇仑乱视频hdxx| 亚洲成av片中文字幕在线观看| 最新美女视频免费是黄的| 999久久久国产精品视频| 国产免费av片在线观看野外av| 99久久综合精品五月天人人| 国产一区在线观看成人免费| 91麻豆av在线| 精品一品国产午夜福利视频| 熟女少妇亚洲综合色aaa.| 天天躁狠狠躁夜夜躁狠狠躁| 可以在线观看的亚洲视频| 亚洲男人的天堂狠狠| 国产成人欧美在线观看| 身体一侧抽搐| 免费观看人在逋| 我的亚洲天堂| 日韩欧美三级三区| 欧美色欧美亚洲另类二区 | 日本精品一区二区三区蜜桃| 精品久久久久久成人av| 午夜福利高清视频| 禁无遮挡网站| 在线十欧美十亚洲十日本专区| 美女高潮到喷水免费观看| 中文字幕最新亚洲高清| 免费av毛片视频| 国产av一区在线观看免费| 一进一出好大好爽视频| 欧美成人免费av一区二区三区| 日本五十路高清| 夜夜夜夜夜久久久久| 好男人电影高清在线观看| 岛国视频午夜一区免费看| 性欧美人与动物交配| 在线观看www视频免费| 精品免费久久久久久久清纯| 色尼玛亚洲综合影院| 天天躁夜夜躁狠狠躁躁| 18美女黄网站色大片免费观看| 欧美激情高清一区二区三区| 久久久久精品国产欧美久久久| 国产精品久久久久久亚洲av鲁大| 99国产综合亚洲精品| 国产激情久久老熟女| 999精品在线视频| 国产伦人伦偷精品视频| 黄色丝袜av网址大全| 一二三四在线观看免费中文在| 老汉色av国产亚洲站长工具| 国产欧美日韩综合在线一区二区| 日韩国内少妇激情av| 欧美日本亚洲视频在线播放| 亚洲精华国产精华精| 淫妇啪啪啪对白视频| 亚洲美女黄片视频| 这个男人来自地球电影免费观看| 欧美一级毛片孕妇| 午夜福利影视在线免费观看| 国产精品一区二区三区四区久久 | 亚洲av成人一区二区三| 日韩精品中文字幕看吧| 99精品欧美一区二区三区四区| 黄色片一级片一级黄色片| 欧美乱码精品一区二区三区| 亚洲精品粉嫩美女一区| 国产亚洲欧美精品永久| 99久久久亚洲精品蜜臀av| 久久香蕉国产精品| 久久精品国产99精品国产亚洲性色 | 无限看片的www在线观看| 人人妻人人澡欧美一区二区 | 婷婷精品国产亚洲av在线| 人人妻人人澡人人看| 一边摸一边抽搐一进一出视频| 精品国产美女av久久久久小说| 国产区一区二久久| 亚洲精品国产区一区二| 亚洲国产精品成人综合色| 色综合婷婷激情| 国产欧美日韩一区二区三| 在线天堂中文资源库| 淫秽高清视频在线观看| 夜夜躁狠狠躁天天躁| 日韩欧美三级三区| 精品第一国产精品| av视频免费观看在线观看| 国产亚洲欧美98| 日韩国内少妇激情av| 免费在线观看视频国产中文字幕亚洲| 精品人妻1区二区| 波多野结衣一区麻豆| 久久精品亚洲精品国产色婷小说| 男女做爰动态图高潮gif福利片 | 日韩有码中文字幕| 亚洲人成网站在线播放欧美日韩| 国产精品 国内视频| 中文字幕高清在线视频| 国产一卡二卡三卡精品| 国内久久婷婷六月综合欲色啪| 免费在线观看影片大全网站| 久久精品国产亚洲av高清一级| 亚洲va日本ⅴa欧美va伊人久久| 露出奶头的视频| 成人精品一区二区免费| 亚洲av成人av| 最近最新免费中文字幕在线| 亚洲专区字幕在线| 国产又爽黄色视频| 正在播放国产对白刺激| 亚洲av成人av| 男女下面插进去视频免费观看| 国产区一区二久久| 乱人伦中国视频| 两人在一起打扑克的视频| 少妇粗大呻吟视频| bbb黄色大片| 国产日韩一区二区三区精品不卡| 男女午夜视频在线观看| 少妇的丰满在线观看| 亚洲欧美日韩另类电影网站| 禁无遮挡网站| 免费在线观看影片大全网站| 午夜老司机福利片| 亚洲国产精品999在线| 欧美丝袜亚洲另类 | 久久精品91蜜桃| 在线观看日韩欧美| 国产欧美日韩一区二区三区在线| 日本撒尿小便嘘嘘汇集6| 亚洲成人精品中文字幕电影| 国产成人一区二区三区免费视频网站| 日韩成人在线观看一区二区三区| 亚洲avbb在线观看| 国产不卡一卡二| 多毛熟女@视频| 99国产精品免费福利视频| 国产精品一区二区免费欧美| 丰满的人妻完整版| 久久影院123| www.999成人在线观看| 久久青草综合色| 国产精品自产拍在线观看55亚洲| 免费久久久久久久精品成人欧美视频| 在线观看免费视频日本深夜| 国产欧美日韩精品亚洲av| 国产精品永久免费网站| 午夜视频精品福利| 十八禁人妻一区二区| 欧美大码av| 在线av久久热| 日韩国内少妇激情av| 亚洲av日韩精品久久久久久密| 亚洲成国产人片在线观看| 18禁观看日本| 69精品国产乱码久久久| 妹子高潮喷水视频| 18禁裸乳无遮挡免费网站照片 | 神马国产精品三级电影在线观看 | 国产区一区二久久| 日本vs欧美在线观看视频| 亚洲熟女毛片儿| 在线观看午夜福利视频| 变态另类成人亚洲欧美熟女 | 我的亚洲天堂| 十八禁网站免费在线| 丝袜美足系列| 亚洲无线在线观看| 美国免费a级毛片| 十八禁人妻一区二区| 天天躁夜夜躁狠狠躁躁| 大码成人一级视频| 国产精品久久久人人做人人爽| 天堂影院成人在线观看| 美女高潮喷水抽搐中文字幕| 亚洲男人的天堂狠狠| 色播在线永久视频| 一个人免费在线观看的高清视频| 91精品国产国语对白视频| 满18在线观看网站| 亚洲成人免费电影在线观看| 午夜精品久久久久久毛片777| 国产在线观看jvid| 夜夜躁狠狠躁天天躁|