sql注入是一種安全漏洞。攻擊者可以利用這個安全漏洞向網(wǎng)絡(luò)表格輸入框中添加sql代碼以獲得訪問權(quán)。手工測試sql注入的方法過去一直是確定數(shù)據(jù)庫是否存在安全漏洞的惟一方法。挖掘返回的錯誤信息、增加省略符號并且設(shè)法猜測數(shù)據(jù)庫結(jié)構(gòu)信息是一項長期的和艱苦的過程。而且,這并不能保證你發(fā)現(xiàn)所有的sql注入安全漏洞,很少能夠查看或者提取數(shù)據(jù)。
現(xiàn)在,有一些工具能夠?qū)嵤゛ql注入攻擊。一些免費的和商業(yè)性的黑客工具都能夠?qū)嵤┻@種攻擊。
如果你有一個連接到后端數(shù)據(jù)庫的web前端,允許asp、asp、.net、cgi和類似的腳本語言支持的動態(tài)用戶輸入,你就可能遭到sql注入攻擊。你能做的就是以道德黑客(ethical hacking)的方式對你自己的系統(tǒng)實施自動的sql注入攻擊,以便發(fā)現(xiàn)能夠在外部攻破什么東西。不要選擇這個或者省略那個,讓你的工具為你做工作。
這是以自動的方式測試你的系統(tǒng)的aql注入安全漏洞的兩個步驟。我在這里簡單介紹一下這個過程。
第一步:掃描安全漏洞
首先,你必須使用一個web應(yīng)用程序安全漏洞掃描器掃描逆的網(wǎng)站,看看是否存在任何輸入過濾或者其它具體的sql注入安全漏洞。由于我的時間總是很緊張并且需要良好的報告功能,我喜歡使用商用工具,如n-stealth安全掃描器、acunetix公司的web安全漏洞掃描器和(我最喜歡的)spi dynamics webinspect。wikto等免費的工具通常也能發(fā)現(xiàn)這些安全漏洞。
圖1顯示的是webinspect發(fā)現(xiàn)的兩個不同的sql注入安全漏洞的例子。
第二步:開始sql注入
一旦你確定你的目標(biāo)系統(tǒng)是否存在sql注入安全漏洞,你的下一個步驟就是實施sql注入過程并且確定能夠從數(shù)據(jù)庫中搜集到什么。請注意,我不建議注入實際的數(shù)據(jù)或者試圖投放數(shù)據(jù)庫表格,這兩種做法對于你的數(shù)據(jù)庫的安全是有害的。發(fā)現(xiàn)潛在的sql注入漏洞是一回事,以自動的方式實際實施攻擊是另一回事。
我喜歡的自動實施實際的sql注入攻擊的工具是spi dynamics公司的aql注入器(這個工具是webinspect軟件的一部分)。你還可以使用圖2顯示的absinthe。
實施自動的sql注入攻擊測試圖2:absinthe工具用于自動實施sql注入分析。
這兩種工具能夠讓你實施基本的和sql盲注攻擊。這兩種測試都應(yīng)該實施,特別是如果基本的sql注入攻擊沒有返回任何結(jié)果的情況下。這些工具能夠以自動的方式非常快地查詢和提取數(shù)據(jù),在幾分鐘之內(nèi)就可以列印大量的表格。
其它選擇包括foundstone公司制作的一種免費的web服務(wù)測試框架。這個工具的名稱是“wsdigger”,能夠?qū)嵤┗镜膕ql注入攻擊。你還可以使用automagic sql注入器進(jìn)行一些自動的sql注入查詢。你還可以使用配置了sql注入插件的“sleuth”工具軟件。但是,這個軟件需要sa訪問權(quán)限。這就消除了匿名外部測試的好處。
最后,如果你要在你現(xiàn)用的系統(tǒng)部外進(jìn)行實際練習(xí),并且學(xué)習(xí)更多的有關(guān)sql注入和其它能夠?qū)е聰?shù)據(jù)庫被攻破的前端web應(yīng)用程序安全漏洞的知識,你可以查看foundstone公司的“hacme bank”,或者參考一下web安全演示工具“webgoat”。
你使用什么工具自動實施sql注入攻擊測試都沒有關(guān)系,只要你能夠了解它們是如何工作的并且得到預(yù)期的結(jié)果就行了。就做黑客要做的事情就行了。