幾年前,SQL注入在世界范圍內(nèi)很流行,但現(xiàn)在,SQL注入仍然是最流行的攻擊方法之一,開(kāi)發(fā)人員為此頭疼。當(dāng)然主要是因?yàn)樽⑷牍舻撵`活性,一個(gè)目的,多條語(yǔ)句,多種編寫(xiě)方法。SQL注入可以分為工具和手工兩種。由于自動(dòng)化,工具通常比手動(dòng)注入效率高得多,但與手動(dòng)注入相比,它們受到限制,因?yàn)樗鼈儧](méi)有針對(duì)性。
所有的輸入都可能是有害的,有參數(shù)的地方都可能存在SQL注入。但是由于瀏覽器的限制,http頭中的一些隱藏鏈接、API調(diào)用和參數(shù)往往被忽略。那么如何進(jìn)行全面的SQL注入挖掘呢?在滲透測(cè)試中,無(wú)論注入工具多么強(qiáng)大,都會(huì)有局限性,手動(dòng)注入可以解決這個(gè)弱點(diǎn)。當(dāng)然,手動(dòng)注入需要滲透者對(duì)數(shù)據(jù)庫(kù)的語(yǔ)法有一定的了解。但是由于SQL注入的靈活性和多樣性,如果詳細(xì)討論的話,恐怕可以寫(xiě)成單本書(shū)了。在這里,作者將選擇最具代表性的例子進(jìn)行論證。
注入遇到的一個(gè)常見(jiàn)情況是注入得到的加密密文無(wú)法求解。為了解決這個(gè)問(wèn)題,這里解釋幾種可行的方法。(1)使用國(guó)外的搜索引擎,往往會(huì)有意想不到的收獲,最常見(jiàn)的是Google。(2)用Whois查出管理員郵箱,然后發(fā)郵件通知管理員更改密碼。郵件內(nèi)容無(wú)非是“我們是XXX檢測(cè)中心,你的網(wǎng)站有風(fēng)險(xiǎn)。請(qǐng)立即更改管理員密
碼……”。(3)分析Cookie。有時(shí)加密的密文會(huì)出現(xiàn)在cookies中。這種情況下,cookies中的密文可以直接被管理員的密文替換。(4)在特定的注入環(huán)境中,原始密文有時(shí)可以被新密文替換。當(dāng)然這種方法的執(zhí)行條件比較苛刻,實(shí)踐中很少遇到。(5)使用密碼檢索功能。使用秘密安全問(wèn)題來(lái)檢索密碼是很常見(jiàn)的。在這種情況下,可以注入秘密安全問(wèn)題的答案,然后使用密碼檢索功能成功登錄目標(biāo)帳戶。(6)邏輯缺陷。比如一些登錄功能、修改功能、密碼檢索功能等都是以密文的形式直接在數(shù)據(jù)包中傳輸?shù)摹_@時(shí)可以用密文代替,這樣就可以登錄并更改密碼了。
如何防護(hù)SQL注入攻擊呢?
1.對(duì)代碼進(jìn)行過(guò)濾非法符號(hào)如之類的,對(duì)一些腳本標(biāo)簽scrpt以及img或frame都進(jìn)行過(guò)濾和替換。
2.對(duì)一些函數(shù)變量直接進(jìn)行強(qiáng)制定義,比如金額函數(shù)這里直接限定只能寫(xiě)入正整數(shù)類型的數(shù)值,那么其他的參數(shù)像姓名的話可以直接限定到只允許寫(xiě)入中文和英文的數(shù)值,其他的以此類推。
3.對(duì)一些帶入數(shù)據(jù)庫(kù)查詢和更新的語(yǔ)句,一定要看看get或post過(guò)來(lái)的數(shù)據(jù)參數(shù)是否是直接把參數(shù)類型鎖定好了的,防止被注入惡意語(yǔ)句導(dǎo)致被攻擊。
4.如果對(duì)著代碼方面的問(wèn)題不懂得話可以到網(wǎng)站安全公司去尋求幫助,國(guó)內(nèi)如SINESAFE,鷹盾安全,綠盟,啟明星辰等等。
我們專注高端建站,小程序開(kāi)發(fā)、軟件系統(tǒng)定制開(kāi)發(fā)、BUG修復(fù)、物聯(lián)網(wǎng)開(kāi)發(fā)、各類API接口對(duì)接開(kāi)發(fā)等。十余年開(kāi)發(fā)經(jīng)驗(yàn),每一個(gè)項(xiàng)目承諾做到滿意為止,多一次對(duì)比,一定讓您多一份收獲!