王苗苗,錢步仁,許瑩瑩,王雪鳳
(1.中國石油大學(北京)地球物理與信息工程學院,北京 102249;2.國網山東電力公司招遠市供電公司 山東 招遠265400)
基于通用規則的SQL注入攻擊檢測與防御系統的研究
王苗苗1,錢步仁1,許瑩瑩1,王雪鳳2
(1.中國石油大學(北京)地球物理與信息工程學院,北京 102249;2.國網山東電力公司招遠市供電公司 山東 招遠265400)
Web技術是通過Web采用HTTP或HTTPS協議訪問外部并對外部請求提供服務和響應的應用程序,Web應用日益成為軟件開發的主流之一,隨之而來的是,Web應用程序中存在的多種安全漏洞漸漸顯露出來,這些給人們的生活、工作、學習都帶來了巨大的損失。面對Web網站存在的種種安全漏洞問題,文章通過對大量SQL注入攻擊報文的攻擊特征進行總結分析,結合SQL注入攻擊的攻擊特征和攻擊原理,提出了一種基于通用規則的SQL注入攻擊檢測與防御的方法,并利用SQL注入檢測工具Sqlmap進行SQL注入攻擊模擬同時對網絡流量捕捉抓包,對上述檢測防御方法進行驗證。SQL注入檢測工具利用自帶網絡爬蟲通過HTTP協議和URL鏈接來遍歷網頁并獲取頁面數據信息,然后進行SQL注入嘗試并通過抓包工具捕捉網絡攻擊流量,提取攻擊特征,總結通用規則,更新規則庫,最終結合IPS入侵防御系統告警或阻斷來提升網絡環境的安全性。實驗測試表明,該方法可有效檢測SQL注入攻擊漏洞。
SQL注入漏洞;檢測工具;通用規則;特征提取;入侵檢測系統
隨著計算機網絡的普及化,互聯網給人們的生活、工作、學習等帶來了極大的便利,同時也產生了越來越多的網絡安全危害。Web技術是目前應用度最高的互聯網應用技術,它是用戶向服務器提交請求查詢并得到服務器響應,獲得請求頁面的技術總稱[1]。Web技術是通過Web采用HTTP或HTTPS協議訪問外部并對外部請求提供服務和響應的應用程序,客戶端通過瀏覽器請求訪問Web服務器,通過統一資源標識符(URI)標識、定位服務器上的數據信息。Web應用的易用性好、信息共享度高、擴展性好以及多功能復用性等多種優點使互聯網成為一項必備的社會基本設施,Web應用也日益成為軟件開發的主流之一[2]。
在我國針對網站SQL注入漏洞的檢測和研究,特別是通過網絡爬蟲查找各網頁中所含的漏洞的研究并不是很多,而且還普遍存在著對SQL注入漏洞檢測的高漏報率、低準確率等現象,并且多半相關應用都沒有詳細分析SQL注入檢測與防御技術的原理。文中針對SQL注入漏洞檢測與防御的方法,利用SQL注入檢測工具中自帶的網絡爬蟲覆蓋率較高的特點,對某些鏈接進行了檢測;通過對網絡攻擊流量的抓取及攻擊特征的提取,提出了總結更新SQL注入攻擊對應的漏洞通用規則庫,并將該通用規則應用到SQL注入攻擊的檢測中,最終結合IPS入侵防御系統的告警或阻斷動作來提升網絡環境的安全性,降低了SQL注入檢測防御系統檢測的漏報率,并將該系統相關的核心技術進行了分析。
1.1 SQL注入攻擊
目前雖然還沒有對SQL注入攻擊技術進行標準定義,但微軟中國技術中心從兩個方面進行了闡述[3]:
1)腳本注入式的攻擊;
2)惡意用戶輸入用來影響被執行的SQL腳本。
利用SQL注入攻擊,惡意攻擊者就可以獲得并且掌控整個網站的內容,同時可以篡改網站后端及底層數據庫數據,更甚至可以給整個網站注入木馬程序,從而通過獲取的管理員權限任意瀏覽獲取網站上的文件數據或者給網頁掛上木馬和各種惡意程序,最終達到控制整個服務器的目的[4]。
1.2 SQL注入攻擊方法
當我們訪問某個需要用戶提交數據登錄的網頁時,Web應用服務程序一般都會通過向數據庫發出請求查詢命令,驗證該用戶登錄信息及身份是否有效。其檢驗證的方法大多數可能就是在請求程序中構造SQL查詢語句,例如:
“Select*from Users where UserName=‘”+user +“’and PassWord=‘”+password+“’”;
這里,在用戶登錄頁面上需要輸入的用戶名和密碼就是替代user和password的信息。假使我們使用的登錄用戶名為Admin,密碼為1234,那么Web應用向數據庫服務器發送請求的SQL語句為:
Select*from Users where UserName=‘Admin’and PassWord=‘1234’;
Web應用程序期望數據庫能夠返回一組與所登錄用戶相對應的數據。SQL語言與其他編程語言相似,也使用某些字符來表示對某段代碼進行注釋或忽略。其中,符號“--”為單行注釋符,該符號代表數據庫服務器可以忽略掉該注釋付后面的所有內容,該注釋符極其有效,下面就簡單介紹一下它的特殊作用。如果我們不在user中輸入Admin,而是輸入:
Admin’or 1=1--
這樣,數據庫的服務器接收應用程序發送的SQL語句就變為:
Select*from Users where UserName=‘Admin’or 1=1--‘and PassWord=‘1234’;
我們知道,1=1的結果總是為真(true),由于or運算符中兩個操作數只要有一個為真,結果就會為真,因此上面提交的查詢語句會返回Users表中的全部信息。即便所獲取的用戶信息有可能并不完全顯示給用戶,但我們已經能夠利用所獲取的信息成功登錄到網站上了,這種情況,我們就稱之為SQL注入攻擊。
1.3 IPS入侵防御系統簡介
入侵防御系統(IPS)[5]是指不僅能夠檢測到攻擊入侵的發生,而且能利用一定的響應方式,實時地中止入侵行為的發生和發展,實時地保護信息系統不受實質性攻擊的一種智能化的安全體系。IPS是一種主動的、積極的入侵防范、阻止系統,其設計旨在預先對入侵活動和攻擊性網絡流量進行檢測和攔截,避免其造成任何損失,而不是簡單地在惡意流量傳送時或傳送后才發出警報。它部署在網絡的進出口處,當它檢測到攻擊企圖后,它會自動地將攻擊包丟掉或采取措施將攻擊源阻斷[6]。文中通過將通用規則整合到規則庫中,然后將IPS系統中規則庫升級,最終對攻擊報文進行告警或阻斷。
文章主要研究的基于通用規則的SQL注入攻擊檢測預防與防御系統是搭建在IPS系統之上的,其框架結構如圖1所示。

圖1 SQL注入攻擊檢測防御系統結構
2.1 技術儲備
技術儲備部分主要分析總結SQL語言的語言特點及語法操作,以便對SQL注入語言中中的異常字段進行識別;分析各大主流數據庫的特性,以便了解各大數據庫特有的語法特性及語句特征;分析常見攻擊掃描工具,利用各個掃描工具進行SQL注入攻擊實驗攻防模擬,并抓取攻防過程中的數據流量,以便能夠根據數據流量提取出SQL注入攻擊特征的檢測字符;分析實際SQL注入攻擊方式,將以上過程所得到的研究成果形成通用化、層次化的SQL注入攻擊模型,即通用規則,并將該模型形成相應的規則庫語言,在實驗環境下進行攻防測試,驗證形成的攻擊模型的可行性,進而驗證該系統下SQL注入攻擊檢測與防御的性能。如達到要求,則將該模型特征語言精簡提煉并更新到IPS系統的特征庫中。下面詳細介紹一下通用化、層次化的SQL注入攻擊模型。
2.1.1 SQL注入攻擊模型
SQL注入攻擊模型也就是通用化、層次化的通用規則。在開始規則特征提取形成通用規則之前,先簡單介紹一下正則表達式。正則表達式使用單個字符串來描述、匹配一系列符合某個句法規則的字符串[7]。正則表達式是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規則字符串”,這個“規則字符串”用來表達對字符串的一種過濾邏輯[8]。
通過實驗模擬抓取報文及設備現存攻擊報文,分析總結了SQL注入攻擊典型類型的通用規則,并利用正則表達式進行描述。
在本文中將詳細介紹一下SQL注入典型的攻擊類型中的盲注、建表操作和跨表查詢。
“盲注”,就是在服務器沒有錯誤回顯時需要攻擊者手動進行的暴力猜解,不停地探測數據庫相關數據信息的值而完成的注入攻擊。因為缺少錯誤信息,服務器沒有錯誤回顯,這對于攻擊者來說就缺少了極其重要的“調試信息”,這就需要攻擊者必須找到一種方法來驗證注入的SQL語句是否得到了成功執行[9]。
1)布爾盲注
利用and 1=1、or 1=1、and 1=2判斷是否存在注入點進行抓包,通過掃描進行的布爾盲注。
正則表達式的規則特征:

2)時間盲注
基于時間的盲注是一種高級技巧,在不同的數據庫中,都有著類似于BENCHMARK()的延時函數,通過延時函數的延時時間來進行時間盲注[10]。
總結正則表達式的規則特征:

所謂“建表操作”就是在用戶輸入時額外增加語句進行建表操作,使后臺數據庫中新增惡意用戶添加的新的數據表等內容[11]。
總結正則表達式的規則特征:

跨表查詢[12],就是將跨越數據庫的兩個表聯合進行數據查詢操作,將兩個表中各取得的數據合并整合為一個新的數據集,惡意用戶就可通過跨表查詢得到數據庫的各個表中的信息,從而暴力破解所有列名的值等危害。
總結正則表達式的規則特征為:

2.1.2 更新SQL注入攻擊通用規則規則庫
特征庫記錄了設備可識別的攻擊特征、病毒特征以及針對需要采取的相應動作等信息,因此對于安全設備來說,必須保證特征庫能夠實時更新升級。將上述總結的SQL注入攻擊特征的通用規則實時更新到IPS入侵檢測系統的規則庫中,然后在規則庫中進行攻擊報文的回放檢測,等待設備給出相關動作。
2.2 設備處理
在現實環境中運用更新好的IPS入侵檢測系統特征庫進行實戰檢測,將網絡流量進行預處理,處理成設備可以識別的數據報文,然后大量投放到設備中通過與系統中通用規則進行特征匹配。如果檢測的網絡流量符合SQL注入攻擊形成的通用模型,規則庫就會做出相應反應,流量被阻斷并上報設備發生攻擊;若該網絡流量并不匹配SQL注入攻擊模型,則規則庫會對流量不作處理,并上報設備放行該流量。
通過利用Sqlmap檢測工具進行實驗模擬,抓取攻擊流量,驗證該系統是否可用。
Sqlmap[13]是一個自動化的SQL注入工具,其主要功能是通過自帶網絡爬蟲進行掃描,發現并利用給定URL中的SQL注入漏洞,目前支持的數據庫是MS SQL Server、My SQL、ORACLE和POSTGRESQL。Sqlmap采用四種獨特的SQL注入技術,分別是盲推理SQL注入、UNION查詢SQL注入、堆查詢和基于時間的SQL盲注入。網絡爬蟲[14]是通過網頁的鏈接地址來尋找網頁的程序,它從網站的某一個頁面開始逐漸探尋網頁的內容,并持續循環下去,直到把整個網站所有的網頁都抓取完或到達預期目標為止。本文中利用Sqlmap進行SQL注入攻擊測試,在攻擊同時利用Wireshark抓包工具進行抓包,然后數據包中的攻擊特征,提取通用規則。
以下是利用Sqlmap進行SQL注入漏洞檢測的一個實例。
對于目標網站http://****.cn/shownews.php?id= 7519,首先我們將抓包工具WireShark和瀏覽器設置相同的代理端口IP地址,然后點擊start開始抓取SqlMap進行注入的攻擊流量。
1)SQL注入掃描
輸入要掃描的Web應用地址,Sqlmap檢測工具將逐一掃描網站下的所有鏈接,根據自帶網絡爬蟲判斷出頁面中是否存在SQL注入點;
2)后臺管理掃描
輸入要掃描的Web應用地址,系統逐一掃描網站下的所有鏈接,判斷出各鏈接的存在狀態,再由鏈接狀態判斷是否存在后臺管理的可能;
3)獲取數據庫信息
輸入存在SQL注入的地址,系統將反饋數據庫名稱和數據庫版本信息,判斷當前數據庫是否支持多句查詢和子查詢,判斷當前連接的數據庫用戶及用戶的權限;
4)獲取表名及列名
輸入存在SQL注入的地址,系統將猜解數據庫中表名及表中數據量,同時系統可以對某個表中的列進行猜解,猜解得到表中列名及數據量,如圖2所示。

圖2 Sqlmap獲取數據庫字段名稱和類型
5)獲取數據內容
在上步的基礎上進一步探索數據表中username和password獲取用戶名和密碼等個人信息,其結果如圖3所示。

圖3 Sqlmap獲取數據庫字段值
在進行 SqlMap的注入過程中,我們通過WireShark進行抓包,分析其中一條攻擊流量,數據流量如圖4所示。

圖4 Wireshatk抓包數據流量
對設備進行調試配置,將全部攻擊流量投入設備中進行報文回放,看設備界面是否有命中信息,如圖5所示。

圖5 設備命中信息
從圖5中可以看出回放的報文命中了規則庫中的兩個規則(SID2000135和SID2000132),同時設備檢測出該報文中攻擊特征的名稱為SQL注入攻擊,IPS系統對該流量采取的動作是Alert告警已提醒人員注意查看該流量。因此,圖5驗證了該系統的可行性。
通過實驗驗證基于通用規則的SQL注入攻擊檢測與防御系統對攻擊的檢測、防御能力。實驗中,首先通過實驗抓取大量SQL注入攻擊報文,將抓取報文及系統現有SQL注入報文編碼并存入設備中待設備回放,將通用規則更新至IPS規則庫中,升級設備,回放攻擊報文,看設備是否識別攻擊做出告警或者阻斷操作,最后計算檢出率。
4.1 實驗測試
進行大量報文的回放,同時連接虛擬機,并在虛擬機中打開Ixia應用,連接設備進行檢出率的顯示,將識別結果整理成表格,如表1所示。

表1 報文的檢測情況
從表格中可以看出,設備回放了478個攻擊報文,其中429個檢測出為SQL注入攻擊報文,49個未被識別為攻擊報文,錯誤報文及跳過報文個數均為0。
4.2 實驗結果
通過檢出率計算公式:檢出率=Blocked Strikes Count/Total Strikes Count*100%[15],可以得出該檢測防御系統檢出率約為89.75%。針對未被檢出的報文可以單獨分析,查看報文是否數據加密或者數據變性,根據報文自身攻擊特征單獨提取攻擊特征更新到規則庫中,這樣既可以減少規則庫中的總規則數量,又可以減少規則庫的內存,提升運行速率。
至此,實驗驗證了通過抓取大量抓取SQL注入攻擊報文,總結通用規則,更新IPS入侵檢測系統規則庫,進而采取告警或阻斷動作,最終實現提升IPS系統中SQL注入檢測與防御能力的設計是有效可行的,同時還降低了規則庫中規則的總數量,降低了內存占用。
文中通過分析SQL注入攻擊原理及攻擊特征,利用檢測工具進行SQL注入攻擊模擬,基于大量攻擊流量總結出通用規則,并在IPS入侵檢測系統防御告警模式下實現對攻擊流量的告警或阻斷。實驗證明該方法切實有效,可有效提升IPS系統中針對SQL注入攻擊的檢測防御水平,同時通用規則對防御未知的SQL注入攻擊具有良好的參考價值。
[1]張哲.Web應用中安全漏洞檢測技術的研究[D].西安:西安電子科技大學,2011.
[2]付堂歡,白中英.基于網絡的Web漏洞掃描系統的分析與設計[D].北京:北京郵電大學,2012.
[3]劉帥.SQL注入攻擊及其防范檢測技術的研究[J].電腦知識與技術,2009,5(28):770-772.
[4]Brian Pinkerton.Web Crawler:Finding What People Want[M].Doctor of Philosophy University of Washington,2000.
[5]百度百科.S Intrusion Prevention Systems(IPS)[EB/ OL].[2016-02-21].http://nss.co.uk.
[6]李玉娟,李傳林.一種基于Agent的入侵檢測系統模型[J].計算機應用研究,2004,17(6):77-78.
[7]李小花,孫建華,陳浩.程序分析技術在SQL注入防御中的應用研究 [J].小型微型計算機系統,2011,32(6):1089-1093.
[8]百度百科.S正則表達式[EB/OL].[2014-3-20].http://baike.baidu.com/link?url=ngfljPWuYY0ewxjgeY0LYRxPb6i0zHt4KuYbzZuUX3u0dyr_z3r6HFm-RdSTumJphWT0Knzu0nmwUyuKtBJ-ru_.
[9]顏浩,蔣巍,蔣天發.SQLI和XSS漏洞檢測與防御技術研究[J].信息網絡安全,2011(12):51-53.
[10]彭賡,范明鈺.基于改進網絡爬蟲技術的SQL注入漏洞檢測[J].計算機應用研究,2010,27(7):2605-2607.
[11]丁允超.SQL注入攻擊原理及其防范措施[J].重慶科技學院學報:自然科學版,2012,14(5):136-137.
[12]姚振軍.正則表達式在漢英對照中國文化術語抽取中應用[J].大連理工大學學報,2010(2):56-58.
[13]吳飛.網絡安全之腳本入侵[J].福建電腦,2010(11):176-177.
[14]繆綸,葉茂.SQL注入攻擊及WEB應用安全防范技術研究與實踐[J].計算機應用,2009(1):49.
[15]Ixia.S Ixia [EB/OL].[2016-03-01].http://www.ixiacom.com/.
Research of SQL injection attacks detection defense system based on the general rules
WANG Miao-miao1,QIAN Bu-ren1,XU Ying-ying1,WANG Xue-feng2
(1.College of Geophysics and Information Engineering,China University of Petroleum,Beijing 102249,China;2.State Grid Zhaoyuan Power Supply Company,Zhaoyuan 265400,China)
Web technology is to use HTTP or HTTPS protocol to provide service,and the application of the Web application has gradually become one of the mainstream of software development,but the various existing security vulnerabilities in Web application also exposed,bring huge economic losses.To solve the problem of Web site security,based on a large number of SQL injection attacks message,this paper summarizes and analyses attack characteristics,combined with the feature of SQL injection attacks,is put forward based on the general rules of SQL injection detect and defense method,and use the testing tool Sqlmap to SQL injection attacks for network traffic capture caught at the same time,the above testing defensive method is validated.The testing tools using the built-in web crawler through the HTTP protocol and URL link traverse the web information,inject and capture the network attack traffic,extract attack feature,summarizes the general rule and update the rule base,finally combine IPS intrusion prevention system alarms or block to improve the environment of network security.Experiments show that the method can effectively detect SQL injection attacks.
SQL injection vulnerabilities;inspection tools;general rules;feature extraction;IPS
TN91
:A
:1674-6236(2017)05-0024-05
2016-03-10稿件編號:201603127
王苗苗(1991—),女,山東招遠人,碩士研究生。研究方向:信號檢測與處理技術。