国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

SQL注入漏洞檢測防御關鍵技術(shù)綜述

2018-01-01 22:40:34葉良艷
關鍵詞:爬蟲攻擊者漏洞

葉良艷

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

一、引言

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

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

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

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

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

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

(一)重言式攻擊

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

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

聯(lián)合(UNION)查詢攻擊技術(shù)利用 SQL語句中的UNION操作符把多個select查詢語句整合到一起,攻擊者結(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,從而獲取用戶信息。

(三)附帶查詢攻擊

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

(四)邏輯錯誤查詢

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

(五)盲注

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

(六)存儲過程

有些存儲過程是默認開啟的,攻擊者利用這些存儲過程進行非法操作,如利用Xp_Cmdshell取得服務器的管理權(quán),增加用戶等功能。

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

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

(八)二階 SQL 注入

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

四、SQL注入攻擊檢測的關鍵技術(shù)

SQL注入漏洞主要是開發(fā)者編碼不夠嚴謹和程序自身的特點等造成,漏洞種類繁多,針對不同的漏洞,研究人員提出多種檢測技術(shù),下面介紹幾種常見的檢測技術(shù)。

(一)基于網(wǎng)絡爬蟲技術(shù)的檢測

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

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

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

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

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

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

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

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

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

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

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

(一)安全編碼

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

(二)用戶等級制和鑒別

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

(三)屏蔽出錯信息

攻擊者利用錯誤提示信息對Web網(wǎng)站進行猜解爆破,開發(fā)者通過屏蔽出錯信息來預防攻擊者攻擊。例如:用戶登錄密碼輸入錯誤時,錯誤提示信息不能設為“密碼錯誤”,而應改為“用戶名或密碼錯誤,”,防止用戶名信息泄露。若用戶名泄露,攻擊就會對其密碼進行暴力破解。

(四)SQL查詢串封裝

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

(五)SQL指令隨機化

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

(六)對敏感信息加密

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

(七)Web 應用防火墻(WAF)

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

六、總結(jié)

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

[1]王 丹,趙文兵,等.web應用常見注入式安全漏洞檢測關鍵技術(shù)綜述[J].北京工業(yè)大學學報,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]趙瑞穎.基于時間的SQL注入分析與防范[J].信息網(wǎng)絡安全.2010,(1):56-57.

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

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

[7]趙 亭,陸余良,等.基于表單爬蟲的WEB漏洞探測[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].計算機工程與科學.2013,(2):68-73.

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

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

猜你喜歡
爬蟲攻擊者漏洞
利用網(wǎng)絡爬蟲技術(shù)驗證房地產(chǎn)灰犀牛之說
漏洞
基于微分博弈的追逃問題最優(yōu)策略設計
自動化學報(2021年8期)2021-09-28 07:20:18
基于Python的網(wǎng)絡爬蟲和反爬蟲技術(shù)研究
正面迎接批判
愛你(2018年16期)2018-06-21 03:28:44
利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
電子測試(2018年1期)2018-04-18 11:53:04
大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡爬蟲技術(shù)
電子制作(2017年9期)2017-04-17 03:00:46
三明:“兩票制”堵住加價漏洞
漏洞在哪兒
兒童時代(2016年6期)2016-09-14 04:54:43
高鐵急救應補齊三漏洞
东方市| 潜江市| 开远市| 剑川县| 许昌县| 乐清市| 青河县| 白玉县| 徐汇区| 凤凰县| 辽阳市| 莱芜市| 宜州市| 习水县| 巍山| 磴口县| 汪清县| 福鼎市| 桃园市| 琼中| 徐汇区| 兰考县| 承德市| 墨脱县| 万宁市| 连城县| 会理县| 清水河县| 和平区| 横峰县| 龙陵县| 鄱阳县| 云南省| 隆化县| 桐柏县| 鄯善县| 顺昌县| 宁德市| 扎兰屯市| 平潭县| 安吉县|