SQL注入:利用現(xiàn)有應(yīng)用程序,將(惡意)的SQL命令注入到后臺(tái)數(shù)據(jù)庫引擎執(zhí)行的能力,這是SQL注入的標(biāo)準(zhǔn)釋義。
隨著B/S模式被廣泛的應(yīng)用,用這種模式編寫應(yīng)用程序的程序員也越來越多,但由于開發(fā)人員的水平和經(jīng)驗(yàn)參差不齊,相當(dāng)一部分的開發(fā)人員在編寫代碼的時(shí)候,沒有對(duì)用戶的輸入數(shù)據(jù)或者是頁面中所攜帶的信息(如Cookie)進(jìn)行必要的合法性判斷,導(dǎo)致了攻擊者可以提交一段數(shù)據(jù)庫查詢代碼,根據(jù)程序返回的結(jié)果,獲得一些他想得到的數(shù)據(jù)。
SQL注入利用的是正常的HTTP服務(wù)端口,表面上看來和正常的web訪問沒有區(qū)別,隱蔽性極強(qiáng),不易被發(fā)現(xiàn)。
SQL注入過程
如上圖所示,SQL注入攻擊過程分為五個(gè)步驟:
第一步:判斷Web環(huán)境是否可以SQL注入。如果URL僅是對(duì)網(wǎng)頁的訪問,不存在SQL注入問題,如:http://news.xxx.com.cn/162414739931.shtml就是普通的網(wǎng)頁訪問。只有對(duì)數(shù)據(jù)庫進(jìn)行動(dòng)態(tài)查詢的業(yè)務(wù)才可能存在SQL注入,如:http://www.google.cn/webhp?id=39,其中?id=39表示數(shù)據(jù)庫查詢變量,這種語句會(huì)在數(shù)據(jù)庫中執(zhí)行,因此可能會(huì)給數(shù)據(jù)庫帶來威脅。
第二步:尋找SQL注入點(diǎn)。完成上一步的片斷后,就要尋找可利用的注入漏洞,通過輸入一些特殊語句,可以根據(jù)瀏覽器返回信息,判斷數(shù)據(jù)庫類型,從而構(gòu)建數(shù)據(jù)庫查詢語句找到注入點(diǎn)。
第三步:猜解用戶名和密碼。數(shù)據(jù)庫中存放的表名、字段名都是有規(guī)律可言的。通過構(gòu)建特殊數(shù)據(jù)庫語句在數(shù)據(jù)庫中依次查找表名、字段名、用戶名和密碼的長(zhǎng)度,以及內(nèi)容。這個(gè)猜測(cè)過程可以通過網(wǎng)上大量注入工具快速實(shí)現(xiàn),并借助破解網(wǎng)站輕易破譯用戶密碼。
第四步:尋找WEB管理后臺(tái)入口。通常WEB后臺(tái)管理的界面不面向普通用戶開放,要尋找到后臺(tái)的登陸路徑,可以利用掃描工具快速搜索到可能的登陸地址,依次進(jìn)行嘗試,就可以試出管理臺(tái)的入口地址。
第五步:入侵和破壞。成功登陸后臺(tái)管理后,接下來就可以任意進(jìn)行破壞行為,如篡改網(wǎng)頁、上傳木馬、修改、泄漏用戶信息等,并進(jìn)一步入侵?jǐn)?shù)據(jù)庫服務(wù)器。
SQL注入攻擊的特點(diǎn):
變種極多,有經(jīng)驗(yàn)的攻擊者會(huì)手動(dòng)調(diào)整攻擊參數(shù),致使攻擊數(shù)據(jù)的變種是不可枚舉的,這導(dǎo)致傳統(tǒng)的特征匹配檢測(cè)方法僅能識(shí)別相當(dāng)少的攻擊,難以防范。
攻擊過程簡(jiǎn)單,目前互聯(lián)網(wǎng)上流行眾多的SQL注入攻擊工具,攻擊者借助這些工具可很快對(duì)目標(biāo)WEB系統(tǒng)實(shí)施攻擊和破壞。
危害大,由于WEB編程語言自身的缺陷以及具有安全編程能力的開發(fā)人員少之又少,大多數(shù)WEB業(yè)務(wù)系統(tǒng)均具有被SQL注入攻擊的可能。而攻擊者一旦攻擊成功,可以對(duì)控制整個(gè)WEB業(yè)務(wù)系統(tǒng),對(duì)數(shù)據(jù)做任意的修改,破壞力達(dá)到及至。
SQL注入的危害和現(xiàn)狀
SQL注入的主要危害包括:
未經(jīng)授權(quán)狀況下操作數(shù)據(jù)庫中的數(shù)據(jù)
惡意篡改網(wǎng)頁內(nèi)容
私自添加系統(tǒng)帳號(hào)或者是數(shù)據(jù)庫使用者帳號(hào)
網(wǎng)頁掛木馬
而針對(duì)SQL注入漏洞的各種攻擊工具和攻擊教程更是層出不窮,掌握1~2種攻擊工具的script guy(腳本小子)就可以輕易的攻破網(wǎng)絡(luò)數(shù)據(jù)庫的防線:篡改數(shù)據(jù)、獲得權(quán)限……