• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      SQL注入漏洞檢測(cè)防御關(guān)鍵技術(shù)綜述

      2018-01-01 22:40:34葉良艷
      關(guān)鍵詞:爬蟲(chóng)攻擊者漏洞

      葉良艷

      (安徽電子信息職業(yè)技術(shù)學(xué)院,安徽 蚌埠 233000)

      一、引言

      隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,web服務(wù)越來(lái)越被各大行業(yè)青睞,同時(shí)也伴隨著越來(lái)越多的web服務(wù)安全問(wèn)題,如SQL注入、跨站腳本、跨站請(qǐng)求偽造和DDOS攻擊等各種安全問(wèn)題。2013年OWASP發(fā)布SQL注入攻擊為十大WEB應(yīng)用安全漏洞中排名第一,其特點(diǎn)是在用戶輸入或者信息上傳時(shí),將惡意數(shù)據(jù)或者代碼上傳到web應(yīng)用系統(tǒng)中,導(dǎo)致系統(tǒng)崩潰、獲取敏感信息、或者篡改數(shù)據(jù),甚至控制系統(tǒng)等惡劣行為。特別是隨著Javascript腳本語(yǔ)言、Ajax技術(shù)的引入和普及,以及HTML5和WEB2.0等新興技術(shù)而發(fā)展的新型SQL注入技術(shù),使得web應(yīng)用程序安全問(wèn)題更加難以發(fā)現(xiàn)和檢測(cè)。

      二、SQL注入攻擊原理及成因

      SQL注入攻擊是通過(guò)構(gòu)建特殊的輸入作為參數(shù)傳入Web應(yīng)用程序,而這些輸入大都是SQL語(yǔ)法里的一些組合,通過(guò)執(zhí)行SQL語(yǔ)句進(jìn)而執(zhí)行攻擊者所要的操作,從而達(dá)到攻擊目的。SQL注入攻擊的技術(shù)門(mén)檻低、隱蔽性強(qiáng)、危害性大、殺毒軟件也無(wú)法查殺,一旦若獲取網(wǎng)站W(wǎng)ebShell權(quán)限,便可上傳網(wǎng)頁(yè)木馬、控制整站等違法操作。

      SQL注入攻擊主要是因開(kāi)發(fā)者缺乏安全意識(shí)、安全知識(shí)或安全編程經(jīng)驗(yàn)等,導(dǎo)致SQL語(yǔ)句書(shū)寫(xiě)不規(guī)范,代碼編寫(xiě)不夠完善等問(wèn)題。如:1)對(duì)用戶輸入沒(méi)有進(jìn)行過(guò)濾和驗(yàn)證;2)給用戶權(quán)限過(guò)大、數(shù)據(jù)庫(kù)操作權(quán)限過(guò)大;3)不當(dāng)?shù)腻e(cuò)誤處理;4)轉(zhuǎn)移字符處理不合適;5)使用字符串聯(lián)結(jié)組合多條SQL指令,導(dǎo)致數(shù)據(jù)和控制結(jié)構(gòu)使用同一傳輸通道[1]。

      三、SQL注入攻擊技術(shù)

      傳統(tǒng)SQL注入技術(shù)可以分為重言式攻擊、聯(lián)合查詢攻擊、附帶查詢攻擊、非法 /邏輯錯(cuò)誤查詢、聯(lián)合查詢、附帶查詢、重言式、基于響應(yīng)的SQL盲注等5種[2];新型SQL注入技術(shù)有客戶端SQL注入、防注檢測(cè)繞過(guò)技術(shù)和二階SQL注入[3]。

      (一)重言式攻擊

      重言式攻擊即攻擊者構(gòu)造SQL查詢條件恒為真,導(dǎo)致限定條件無(wú)效,繞過(guò)服務(wù)器對(duì)用戶的身份證驗(yàn)證,從而獲取數(shù)據(jù)庫(kù)中相應(yīng)信息。常用“or 1=1”恒等式實(shí)現(xiàn)查詢條件為真,例如登錄注冊(cè)的一條查詢語(yǔ)句"Select*from userswhere username='".$username."'and password='".$pwd."'",給該語(yǔ)句添加恒等式變?yōu)椋?Select*from userswhere username='‘ or 1=1 and password=’’",4繞過(guò)用戶驗(yàn)證,實(shí)現(xiàn)修改用戶密碼等攻擊行為。

      (二)聯(lián)合查詢攻擊

      聯(lián)合(UNION)查詢攻擊技術(shù)利用 SQL語(yǔ)句中的UNION操作符把多個(gè)select查詢語(yǔ)句整合到一起,攻擊者結(jié)合前面介紹的重言式攻擊使原查詢WHERE條件為false,最后返回攻擊者構(gòu)造的查詢結(jié)果。例如:SQL查詢:select title,content from article where id=$id,手工注入后變成:select title,content from article where id=1 and 1=2 union select 2,3 from user limit 0,1,從而獲取用戶信息。

      (三)附帶查詢攻擊

      附帶查詢攻擊是利用分號(hào)(;)在語(yǔ)句后面加入新的查詢語(yǔ)句,相當(dāng)執(zhí)行多條SQL語(yǔ)句,從而對(duì)數(shù)據(jù)庫(kù)進(jìn)行增加、刪處、修改等操作,甚至可以讀寫(xiě)底層操作系統(tǒng),其危害性極大。例如:”select*from student where id=1;delete from student;”數(shù)據(jù)庫(kù)的配置若不支持多語(yǔ)句,該攻擊難以實(shí)現(xiàn)。

      (四)邏輯錯(cuò)誤查詢

      邏輯錯(cuò)誤查詢主要通過(guò)構(gòu)造不能執(zhí)行的SQL語(yǔ)句引起數(shù)據(jù)庫(kù)錯(cuò)誤并返回錯(cuò)誤提示信息,攻擊者從錯(cuò)誤提示信息中獲取數(shù)據(jù)庫(kù)的類(lèi)型、版本和參數(shù)等。數(shù)據(jù)庫(kù)錯(cuò)誤包括語(yǔ)法、邏輯錯(cuò)誤和類(lèi)型轉(zhuǎn)換等。攻擊者通過(guò)構(gòu)造語(yǔ)法錯(cuò)誤語(yǔ)句獲取查詢中的參數(shù)信息,通過(guò)構(gòu)造邏輯錯(cuò)誤語(yǔ)句獲取數(shù)據(jù)庫(kù)的元數(shù)據(jù),通過(guò)構(gòu)造類(lèi)型轉(zhuǎn)換錯(cuò)誤語(yǔ)句推斷參數(shù)的數(shù)據(jù)類(lèi)型并獲取表中數(shù)據(jù)等信息。

      (五)盲注

      盲注[4]常用于開(kāi)發(fā)者對(duì)返回錯(cuò)誤信息進(jìn)行過(guò)濾,無(wú)法直接獲取數(shù)據(jù)庫(kù)相關(guān)信息,而采用對(duì)某一個(gè)參數(shù)構(gòu)造不同查詢語(yǔ)句,返回不同結(jié)果,攻擊者根據(jù)結(jié)果變化以及抓取數(shù)據(jù)包來(lái)推測(cè)出數(shù)據(jù)庫(kù)中有哪些參數(shù)、哪些表等。盲注有分時(shí)間盲注和內(nèi)容盲注,主要通過(guò)and 1=1和and 1=2以及BENCHMARK()函數(shù)實(shí)行盲注。

      (六)存儲(chǔ)過(guò)程

      有些存儲(chǔ)過(guò)程是默認(rèn)開(kāi)啟的,攻擊者利用這些存儲(chǔ)過(guò)程進(jìn)行非法操作,如利用Xp_Cmdshell取得服務(wù)器的管理權(quán),增加用戶等功能。

      (七)客戶端SQL注入技術(shù)

      隨著HTML5的新技術(shù)的出現(xiàn),帶來(lái)了便利同時(shí)也帶來(lái)了隱患,例如HTML5支持應(yīng)用程序離線運(yùn)行,并且容許數(shù)據(jù)存入客戶端等,若客戶端應(yīng)用程序運(yùn)行了攻擊者控制的客戶端數(shù)據(jù),就會(huì)產(chǎn)生客戶端SQL注入攻擊。客戶端SQL注入技術(shù)發(fā)送攻擊數(shù)據(jù)的渠道和提取數(shù)據(jù)的機(jī)制與傳統(tǒng)SQL注入技術(shù)有別,社交網(wǎng)絡(luò)、web郵件容易發(fā)送該類(lèi)型攻擊。

      (八)二階 SQL 注入

      二階SQL注入是攻擊者先構(gòu)造語(yǔ)句(有被轉(zhuǎn)義字符的語(yǔ)句),并通過(guò)http請(qǐng)求將惡意語(yǔ)句存入數(shù)據(jù)庫(kù)中,再次構(gòu)造語(yǔ)句(結(jié)合前面已經(jīng)存入數(shù)據(jù)庫(kù)的語(yǔ)句)實(shí)施攻擊,二階SQL注入經(jīng)過(guò)存儲(chǔ)和觸發(fā)兩個(gè)階段。假設(shè)一個(gè)網(wǎng)站數(shù)據(jù)庫(kù)中存在一個(gè)用戶名為:“root”,密碼為:“123456”。攻擊者注冊(cè)用戶名為:“root'-- ”,密碼為:“123”;用戶名“root'-- ”被存入數(shù)據(jù)庫(kù)中。攻擊者再次構(gòu)造語(yǔ)句修改該用戶密碼:“update user set password =“888888” where username='root'--'”,在數(shù)據(jù)庫(kù)語(yǔ)句這種“-- ”表示注釋?zhuān)虼恕?-”后面的語(yǔ)句不會(huì)執(zhí)行;最終攻擊者改變的不是“root'--”的密碼,而是root的密碼,從而實(shí)現(xiàn)攻擊,可見(jiàn)二階SQL注入更加難以被發(fā)現(xiàn)。

      四、SQL注入攻擊檢測(cè)的關(guān)鍵技術(shù)

      SQL注入漏洞主要是開(kāi)發(fā)者編碼不夠嚴(yán)謹(jǐn)和程序自身的特點(diǎn)等造成,漏洞種類(lèi)繁多,針對(duì)不同的漏洞,研究人員提出多種檢測(cè)技術(shù),下面介紹幾種常見(jiàn)的檢測(cè)技術(shù)。

      (一)基于網(wǎng)絡(luò)爬蟲(chóng)技術(shù)的檢測(cè)

      網(wǎng)絡(luò)爬蟲(chóng)是一種自動(dòng)的訪問(wèn)網(wǎng)頁(yè)元素程序。文獻(xiàn)【5】提出基于爬蟲(chóng)的SQL注入自動(dòng)化檢測(cè),其思想是將網(wǎng)絡(luò)爬蟲(chóng)技術(shù)和Fuzzingji技術(shù)結(jié)合,實(shí)現(xiàn)自動(dòng)化與智能化SQL注入檢測(cè)。文獻(xiàn)【6】提出基于改進(jìn)網(wǎng)絡(luò)爬蟲(chóng)技術(shù)的SQL注入漏洞檢測(cè),主要從兩個(gè)方面對(duì)其改進(jìn):①網(wǎng)絡(luò)爬蟲(chóng)抓取的新URL時(shí),剔除重復(fù)的URL和網(wǎng)站之外的URL;②對(duì)網(wǎng)絡(luò)的URL篩選策略和流程進(jìn)行改進(jìn)。從而降低了檢測(cè)的漏報(bào)率。文獻(xiàn)【7】提出基于表單爬蟲(chóng)的web漏洞探測(cè),收集表單頁(yè),構(gòu)造url發(fā)送請(qǐng)求,然后應(yīng)用相應(yīng)準(zhǔn)則和模式分析WEB服務(wù)器的反應(yīng),發(fā)現(xiàn)漏洞。

      (二)基于靜態(tài)分析

      基于靜態(tài)分析主要包括兩個(gè)部分:①靜態(tài)分析源碼中可能存在SQL注入漏洞,構(gòu)造路徑,創(chuàng)建檢測(cè)規(guī)則;②動(dòng)態(tài)執(zhí)行檢測(cè)規(guī)則,對(duì)用戶輸入進(jìn)行檢測(cè),并與比源SQL語(yǔ)句在語(yǔ)義和結(jié)構(gòu)上比較,判斷是否SQL注入攻擊,靜態(tài)檢測(cè)工具有Pixy【8】。文獻(xiàn)【9】在第一步添加了過(guò)濾用戶輸入,提高準(zhǔn)確性,在第二步添加了動(dòng)態(tài)構(gòu)造自動(dòng)機(jī)模型,提高實(shí)時(shí)性和準(zhǔn)確性。文獻(xiàn)【1】總結(jié)靜態(tài)分析技術(shù)有:基于語(yǔ)法、語(yǔ)義、javascript腳本分析的方法,基于字符串評(píng)價(jià)的方法,基于輸入輸出數(shù)據(jù)檢測(cè)方法,基于異常行為監(jiān)控的方法等。文獻(xiàn)【10】針對(duì)JAVA語(yǔ)言的web網(wǎng)站漏洞,提出基于缺陷模式匹配的針對(duì)字符流、中間代碼的分析方法、抽象語(yǔ)法樹(shù)和數(shù)據(jù)流分析方法多種方法混合,達(dá)到降低漏報(bào)率。

      (三)基于動(dòng)態(tài)分析

      基于動(dòng)態(tài)分析是先根據(jù)用戶的輸入信息來(lái)動(dòng)態(tài)構(gòu)造SQL查詢語(yǔ)句,對(duì)其執(zhí)行過(guò)程中控制流和數(shù)據(jù)流分析,通過(guò)設(shè)置斷點(diǎn)實(shí)時(shí)跟蹤控制狀態(tài)轉(zhuǎn)換來(lái)判斷調(diào)用函數(shù)漏洞,構(gòu)造邊界數(shù)據(jù)發(fā)現(xiàn)數(shù)據(jù)流漏洞。常用的動(dòng)態(tài)檢測(cè)方法有以下3種【11】:對(duì)合法請(qǐng)求的執(zhí)行流分析、上下文敏感字符和語(yǔ)法的分析樹(shù)判斷。

      (四)靜態(tài)分析和動(dòng)態(tài)分析相結(jié)合的方法

      靜態(tài)分析和動(dòng)態(tài)分析相結(jié)合的方法利用動(dòng)靜態(tài)的優(yōu)點(diǎn),將靜態(tài)源碼分析和運(yùn)行時(shí)實(shí)時(shí)監(jiān)控檢查相結(jié)合。高覆蓋率靜態(tài)源碼分析的檢測(cè)效果全面,但其處理程序類(lèi)有限,特別是腳本語(yǔ)言。目前有CodeSecure、Fortify 和 Rational Sofeware Analyzer等綜合分析工具。

      (五)基于污點(diǎn)分析技術(shù)的漏洞方法

      基于污點(diǎn)分析技術(shù)的漏洞檢測(cè)方法對(duì)基于污點(diǎn)數(shù)據(jù)傳播和使用過(guò)程的跟蹤,判斷它是否會(huì)引發(fā)SQL注入攻擊。文獻(xiàn)【1】介紹利用動(dòng)態(tài)污點(diǎn)分析技術(shù)、采用修改php解釋器的方法動(dòng)態(tài)跟蹤php中的污點(diǎn)數(shù)據(jù)、符號(hào)化執(zhí)行污點(diǎn)跟蹤、通過(guò)動(dòng)態(tài)污點(diǎn)滲透測(cè)試方法尋找客戶端javascript代碼注入和動(dòng)態(tài)污點(diǎn)分析與程序錯(cuò)誤有關(guān)輸入數(shù)據(jù)集合等方法。

      五、SQL注入攻擊防御技術(shù)

      從SQL注入漏洞成因角度出發(fā),SQL注入攻擊防御從開(kāi)發(fā)者編碼開(kāi)始防御,即安全編碼,同時(shí)設(shè)置用戶等級(jí)、屏蔽出錯(cuò)信息、封裝SQL查詢串、SQL指令隨機(jī)化、對(duì)敏感信息加密及應(yīng)用WEB防火墻。

      (一)安全編碼

      SQL注入漏洞常因開(kāi)發(fā)者編碼不規(guī)范導(dǎo)致的,所以進(jìn)行安全編碼提高其防御功能。安全編碼是對(duì)用戶輸入進(jìn)行過(guò)濾,如對(duì)(and|or).+?(>|<|=|in|like)|/*.+?*/|<s*script|等關(guān)鍵字符串過(guò)濾,從而降低一些SQL注入攻擊,該防御措施的誤報(bào)率較高,因有時(shí)這些關(guān)鍵字符是合法的,不過(guò)該防御技術(shù)是最直接防御方案。

      (二)用戶等級(jí)制和鑒別

      不同用戶等級(jí)對(duì)資源的訪問(wèn)操作權(quán)限不同,從而提高網(wǎng)站的安全性,同時(shí)用戶登錄時(shí)對(duì)其身份鑒別也很重要,目前常用方法有數(shù)字證書(shū)認(rèn)證,智能卡認(rèn)證和個(gè)人特征識(shí)別等。

      (三)屏蔽出錯(cuò)信息

      攻擊者利用錯(cuò)誤提示信息對(duì)Web網(wǎng)站進(jìn)行猜解爆破,開(kāi)發(fā)者通過(guò)屏蔽出錯(cuò)信息來(lái)預(yù)防攻擊者攻擊。例如:用戶登錄密碼輸入錯(cuò)誤時(shí),錯(cuò)誤提示信息不能設(shè)為“密碼錯(cuò)誤”,而應(yīng)改為“用戶名或密碼錯(cuò)誤,”,防止用戶名信息泄露。若用戶名泄露,攻擊就會(huì)對(duì)其密碼進(jìn)行暴力破解。

      (四)SQL查詢串封裝

      構(gòu)造類(lèi)將數(shù)據(jù)庫(kù)中表明、屬性名和屬性數(shù)據(jù)構(gòu)造到類(lèi)中,開(kāi)發(fā)者直接使用類(lèi)動(dòng)態(tài)構(gòu)建SQL查詢串,從而消除了特殊字符對(duì)SQL查詢串結(jié)構(gòu)的改變。

      (五)SQL指令隨機(jī)化

      SQL指令隨機(jī)化是通過(guò)對(duì)SQL關(guān)鍵字后添加一個(gè)隨機(jī)整數(shù),有效阻止任何SQL注入攻擊,該方法是Boyd等提出的一種新的SQL防注技術(shù),但其弊端是系統(tǒng)運(yùn)行開(kāi)銷(xiāo)大。

      (六)對(duì)敏感信息加密

      攻擊者攻擊終極目標(biāo)是數(shù)據(jù)庫(kù),所以數(shù)據(jù)和數(shù)據(jù)庫(kù)的安全性比較重要,可以采取對(duì)數(shù)據(jù)重要的字段進(jìn)行加密,對(duì)傳輸?shù)臄?shù)據(jù)加密等措施提高網(wǎng)站的安全性。例如:用戶登錄實(shí)行MD5加密。

      (七)Web 應(yīng)用防火墻(WAF)

      Web應(yīng)用防護(hù)系統(tǒng)(Web Application Firewall,簡(jiǎn)稱(chēng):WAF)用以解決諸如防火墻一類(lèi)傳統(tǒng)設(shè)備束手無(wú)策的Web應(yīng)用安全問(wèn)題,其應(yīng)用功能有審計(jì)設(shè)備、訪問(wèn)控制設(shè)備、架構(gòu)網(wǎng)絡(luò)設(shè)計(jì)工具和加固工具等,可以有效防止網(wǎng)頁(yè)篡改、信息泄露、木馬植入等惡意網(wǎng)絡(luò)入侵行為。

      六、總結(jié)

      本文介紹了SQL注入的危害、攻擊原理,詳細(xì)闡述了針對(duì)SQL注入漏洞,研究人員提出的SQL注入檢測(cè)方法和SQL注入預(yù)防方法,為SQL注入防御系統(tǒng)設(shè)計(jì)提供指導(dǎo)意見(jiàn)。今后研究方向:進(jìn)一步融合靜態(tài)源碼特征與動(dòng)態(tài)執(zhí)行路徑之間的聯(lián)系和制約,提高檢測(cè)準(zhǔn)備率和覆蓋率;探索自動(dòng)化漏洞分析,提高web應(yīng)用軟件檢測(cè)漏洞;提高漏洞檢測(cè)覆蓋率和準(zhǔn)確率的同時(shí),如何降低其資源消耗等。

      [1]王 丹,趙文兵,等.web應(yīng)用常見(jiàn)注入式安全漏洞檢測(cè)關(guān)鍵技術(shù)綜述[J].北京工業(yè)大學(xué)學(xué)報(bào),2016,(12):62-68.

      [2]HALFOND W G,VIEGAS J,ORSO A.A Classification of SQL-injection Attacks and Countermeasures[C]//IEEE.IEEE InternationalSymposium on Secure Software Engineering,March 13-15,2006,McLean,Virginia.Piscataway,NJ:IEEE,2006,(1):13-15.

      [3]李 鑫,張維緯,等.新型SQL注入及其防御技術(shù)研究與分析[J].理論研究.2016,(2):66-73.

      [4]趙瑞穎.基于時(shí)間的SQL注入分析與防范[J].信息網(wǎng)絡(luò)安全.2010,(1):56-57.

      [5]肖秋平.基于爬蟲(chóng)的SQL注入自動(dòng)化檢測(cè)系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)與網(wǎng)絡(luò).2017,(2):70-72.

      [6]彭 庚.基于改進(jìn)網(wǎng)絡(luò)爬蟲(chóng)技術(shù)的sql注入漏洞檢測(cè)[J].計(jì)算機(jī)應(yīng)用究.2010,(7):2605-2607.

      [7]趙 亭,陸余良,等.基于表單爬蟲(chóng)的WEB漏洞探測(cè)[J].計(jì)算機(jī)工程,2008,34(9):186-188.

      [8]JOVANOVIC N,KRUEGEL C,KIRDA E.Pixy:astatic analysis tool for detecting Web application vulnerabilities[C]//Proceedings of 2006 IEEE Symposium on Secrity and Privacy.Oakland:IEEE,2006:258-263.

      [9]秦廣贊,郭 帆,等.一種防SQL注入的靜態(tài)分析方法[J].計(jì)算機(jī)工程與科學(xué).2013,(2):68-73.

      [10]孔 軍.基于JAVA WEB靜態(tài)源碼分析的應(yīng)用系統(tǒng)中安全漏洞檢測(cè)的研究與實(shí)現(xiàn)[D].北京郵電大學(xué)2017-03.

      [11]田玉杰,趙澤茂,等.基于分類(lèi)的SQL注入攻擊雙層防御模型研究[J].信息網(wǎng)絡(luò)安全.2015,(6):1-6.

      猜你喜歡
      爬蟲(chóng)攻擊者漏洞
      利用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說(shuō)
      漏洞
      基于微分博弈的追逃問(wèn)題最優(yōu)策略設(shè)計(jì)
      基于Python的網(wǎng)絡(luò)爬蟲(chóng)和反爬蟲(chóng)技術(shù)研究
      正面迎接批判
      愛(ài)你(2018年16期)2018-06-21 03:28:44
      利用爬蟲(chóng)技術(shù)的Geo-Gnutel la VANET流量采集
      大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲(chóng)技術(shù)
      電子制作(2017年9期)2017-04-17 03:00:46
      三明:“兩票制”堵住加價(jià)漏洞
      漏洞在哪兒
      高鐵急救應(yīng)補(bǔ)齊三漏洞
      环江| 通许县| 台安县| 河池市| 南阳市| 金华市| 盖州市| 股票| 蒙山县| 齐齐哈尔市| 包头市| 阆中市| 达尔| 莱西市| 多伦县| 紫金县| 康保县| 淮阳县| 伽师县| 成武县| 呼图壁县| 五河县| 岑溪市| 虹口区| 宁陵县| 岳池县| 即墨市| 巍山| 松江区| 瓮安县| 麻阳| 出国| 吉木萨尔县| 望江县| 桂阳县| 兰州市| 宜川县| 正安县| 南靖县| 汪清县| 沽源县|