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