摘 要 近幾年計算機技術以及基于Web網(wǎng)頁開發(fā)技術的發(fā)展,各種各樣針對Web網(wǎng)頁的攻擊行為也高頻發(fā)生,其中SQL注入攻擊行為是所有攻擊行為中經(jīng)常使用的一種攻擊行為。SQL注入攻擊簡單來說就是從普通的端口進行訪問,以達到對用戶數(shù)據(jù)庫中的數(shù)據(jù)信息進行掃描或盜取等攻擊和破壞行為。SQL注入攻擊行為表面上看,通常和一般的Web頁面訪問過程并無實質(zhì)性的差異,如果程序設計人員在數(shù)據(jù)發(fā)送給SQL查詢之前沒有對其發(fā)送的數(shù)據(jù)參數(shù)進行有效驗證,這種情況就可能出現(xiàn)SQL注入漏洞。本文是針對SQL注入攻擊行為的產(chǎn)生原理和工作過程進行詳細分析與研究。
【關鍵詞】SQL注入 Web 數(shù)據(jù)庫 攻擊流程
1 SQL注入攻擊與特點
1.1 SQL注入攻擊概念
SQL注入攻擊是指黑客尋找web應用程序中的漏洞或用戶能夠提交及篡改的數(shù)據(jù)頁面,精心構(gòu)造惡意的特殊SQL語句,把這些特殊的SQL指令語句插入到系統(tǒng)中原有的SQL語句中,通過執(zhí)行這些語句獲取用戶密鑰等敏感信息,還能獲取主機管理員權(quán)限以攻擊原有系統(tǒng)。
1.2 SQL注入攻擊特點
針對于個人用戶而言,經(jīng)常使用到的個人電腦防范措施就是安裝防火墻,然而對于SQL注入攻擊來說,其對SQL注入漏洞是沒有防范的有效措施。在通常情況下防火墻只是對合法用戶在進行服務器端數(shù)據(jù)訪問時允許Web服務器的正常連接,但是如果有SQL注入漏洞出現(xiàn),則攻擊者就會利用漏洞獲得服務器的訪問權(quán)限。因此,根據(jù)SQL注入攻擊行為通常對用戶數(shù)據(jù)庫的攻擊以及獲得服務器端的訪問權(quán)限,可以看出SQL注入行為具有以下三個特點:
1.2.1 普遍性
利用SQL語句和語法來進行SQL的攻擊過程,因此當Web運行的應用程序一旦忘記對獲得的SQL語句進行嚴密的過濾,就有可能造成SQL注入漏洞的出現(xiàn)。
1.2.2 技術要求低
在SQL注入技術出現(xiàn)后,由于其方便操作和可以避開防火墻進行攻擊,形成注入漏洞,黑客利用該特點開發(fā)了各種SQL注入工具,這些工具可以輕易的對已經(jīng)存在有SQL漏洞Web應用程序或網(wǎng)站進行有效攻擊,從而獲得系統(tǒng)控制權(quán)和使用權(quán)。
1.2.3 危害性大
在整個攻擊過程中,一旦SQL攻擊獲得成功,等于系統(tǒng)的控制大門敞開,這樣就會對用戶造成無法避免的損失,例如文件篡改、密碼丟失等情況,嚴重的會造成巨大的經(jīng)濟損失。
2 SQL注入產(chǎn)生原理
SQL注入攻擊行為是指黑客可以不經(jīng)過過濾機制實現(xiàn)訪問計算機端口,實現(xiàn)控制遠程服務器上的數(shù)據(jù)庫。目前,開發(fā)人員在進行Web網(wǎng)站或網(wǎng)頁開發(fā)的過程中,絕大多數(shù)的開發(fā)人員都使用SQL語言來存儲相應的應用程序在運行過程中所需要的應用數(shù)據(jù)信息,而存放這些應用程序中涉及的數(shù)據(jù)也是利用例如像MySQL這樣的SQL數(shù)據(jù)庫。跟其他語言一樣,SQL語法允許數(shù)據(jù)庫命令和用戶數(shù)據(jù)混合在一起。如果開發(fā)人員對SQL語言使用不嚴謹,用戶數(shù)據(jù)可能會被解釋成命令。這樣遠程用戶不但能向Web應用程序輸入數(shù)據(jù),而且還能在數(shù)據(jù)庫上執(zhí)行任意命令。因此對于SQL注入攻擊行為其產(chǎn)生的原理如下所描述[1]:
(1)SQL命令可查詢、插入、更新、刪除等,命令的串接,而以分號字符為不同命令的區(qū)別。
(2)SQL命令對傳入的字符串參數(shù)使用單引號字符,但連續(xù)2個單引號字符,在SQL數(shù)據(jù)庫中,則視為字符串中的一個單引號字符。
(3)SQL命令中,可以注入注解,連續(xù)2個減號字符 -- 后的文字為注解,或“/*”與“*/”所包起來的文字為注解。
(4)如果在組合SQL的命令字符串時,未針對單引號字符進行替換處理的話,會導致該字符變量在數(shù)輸入命令字符串時,被惡意篡改原來的SQL語法的作用,形成了新的語法。
3 SQL注入攻擊思路與攻擊過程
3.1 SQL注入攻擊思路描述
在SQL攻擊過程中,其攻擊的目的主要是通過尋找網(wǎng)站或網(wǎng)頁中存在的漏洞作為注入點,然后設置注入SQL語句來實現(xiàn)對用戶端端口的控制,從而獲得遠程服務器端的數(shù)據(jù)訪問權(quán)限,達到對用戶存儲在數(shù)據(jù)庫中的數(shù)據(jù)信息進行盜取或篡改的破壞行為。由此,SQL注入攻擊行為可以總結(jié)如下大體思路:
(1)攻擊者訪問存在SQL注入的網(wǎng)站,尋找注入點,一般使用單引號進行注入點測試。
(2)攻擊者構(gòu)造注入語句,使注入語句與代碼中的SQL語句結(jié)合生成新的語句,可是使用判斷語句and。
(3)新的SQL語句被提交到數(shù)據(jù)庫中,新的SQL語句與數(shù)據(jù)庫中的語句進行了拼接,從而產(chǎn)生了攻擊者想要的執(zhí)行語句。
(4)數(shù)據(jù)庫執(zhí)行了新的SQL語句,從而引發(fā)了原本不是系統(tǒng)管理員想要執(zhí)行的結(jié)果,這樣就產(chǎn)生了SQL注入。
3.2 SQL注入攻擊過程分析
在整個SQL注入攻擊過程中,可以分為以下幾個階段:
3.2.1 SQL注入漏洞的判斷
SQL注入一般存在于網(wǎng)址后帶有數(shù)字參數(shù)的動態(tài)網(wǎng)頁中,有的動態(tài)網(wǎng)頁中可能只存在一個參數(shù),有的有多個參數(shù),有的是數(shù)字型參數(shù),有的是字符串型參數(shù),不能一概而論。總之一旦是帶有參數(shù)的動態(tài)網(wǎng)頁訪問了數(shù)據(jù)庫,那么就有可能存在SQL注入。如果開發(fā)人員沒有安全意識,沒有添加過濾機制,存在SQL注入的可能性就非常大。
3.2.2 分析數(shù)據(jù)庫服務器類型
ACCESS與SQL SERVER是最常使用的數(shù)據(jù)庫服務器,雖然它們都支持T-SQL標準,但還有差異之處,并且不同的數(shù)據(jù)庫有不同的攻擊措施,必須要區(qū)別對待。
3.2.3 發(fā)現(xiàn)Web虛擬目錄
找到Web虛擬目錄,才可以確定放置php木馬的位置,進而得到user 權(quán)限。
3.2.4 上傳木馬
放入Web虛擬目錄的Scripts下,木馬病毒可以通過瀏覽器執(zhí)行它,從而得到系統(tǒng)的用戶權(quán)限,實現(xiàn)對系統(tǒng)的初步控制。
3.2.5 得到系統(tǒng)的管理員權(quán)限
木馬只有用戶權(quán)限,要想獲取對系統(tǒng)的完全控制,還要有系統(tǒng)的管理員權(quán)限。
通過分析可以看出,針對SQL注入攻擊流程是一個有著有序的注入攻擊行為。由開始的漏洞判斷到獲得系統(tǒng)的管理權(quán)限。利用圖1可以描述整個SQL注入攻擊流程。
4 總結(jié)
從應用層到數(shù)據(jù)存儲層的開發(fā)和管理行為會導致SQL注入問題,我們討論了動態(tài)字符串的構(gòu)造以及將SQL查詢組合成一個字符串,并與用戶提供的輸入連接操作引發(fā)SQL注入,因為攻擊者可以修改SQL查詢的邏輯和結(jié)構(gòu),進而執(zhí)行完全違背開發(fā)人員初衷的數(shù)據(jù)庫命令。
參考文獻
[1]劉文生,樂德廣,劉偉.SQL注入攻擊與防御技術研究[J].信息網(wǎng)絡安全,2015(09).
[2]張博.SQL注入攻擊與檢測技術研究[J].信息安全與通信保密,2010(05).
[3]余志高,周國祥.Web應用中SQL注入攻擊研究[J].信息安全與通信保密,2010(04).
[4]齊林,王靜云,蔡凌云,陳寧波.SQL注入攻擊檢測與防御研究[J].河北科技大學學報,2012(06).
[5]劉文晉.遠程滲透測試中的SQL注入攻擊技術研究[D].北京交通大學,2009.
作者簡介
卜旭(1986-),男,現(xiàn)為長春建筑學院電氣信息學院助教。主要研究方向為計算機軟件設計、網(wǎng)絡安全。
作者單位
長春建筑學院電氣信息學院 吉林省長春市 130607endprint