最近海口警方破獲一起特大高校招生詐騙案,該詐騙團伙雇用黑客入侵海南大學招生網站,竄改招生數據庫,偽造招生名單,騙取學生財物。看到這裡,你是不是感到不寒而栗?你知道黑客入侵該大學網站首先會采用什麼方式嗎?答案就是SQL注入,所謂SQL注入,就是把SQL命令插入到Web表單遞交的查詢字符串、頁面請求的查詢字符串,以及輸入域名的查詢字符串,最終達到欺騙服務器執行惡意SQL命令的目的。
暑假中自己架設網站的學生們、眾多的個人網站以及小型企業的網站的管理員們(主要采用Access或MSSQL作數據庫,特別是Access數據庫),你們作好迎戰的准備了嗎?下面就請跟隨小編一起探索初級SQL注入的解決之法。
SQL注入漏洞的原理
SQL注入的原理,就是從客戶端提交特殊的代碼,來收集遠程網站及服務器的信息,從而獲取自己所需要的相關資料。根據具體情況,構造出相應的巧妙的SQL語句,是成功獲取需要數據的關鍵。
在實際的操作中,如果是針對Access數據庫,可以對表名進行逐個猜測,接著用函數來計算數據並將它們還原;如果是MSSQL數據庫的話,由於所有的列表都保存在一個特殊的地方,可以直接通過暴庫的方法來獲取,這種方法簡單易用並且准確率極高。
初級手段尋找注入漏洞
首先,需要對IE浏覽器進行一些設置。TW.WINgWIT.coM點擊“工具”菜單中的“Internet選項”命令,在彈出的窗口中點擊“高級”標簽,把“顯示友好 HTTP 錯誤信息”前面的鉤去掉。這樣設置的目的,就是從返回的錯誤信息中尋找可以利用的信息,否則無論服務器返回什麼錯誤信息,IE浏覽器都只能顯示為HTTP 500服務器錯誤,不能獲得更多的提示信息,
接著要判斷網站是否存在注入漏洞,因為只有ASP、PHP、JSP等動態網頁才可能存在注入漏洞。我們判讀的方法是,打開一個帶參數的動態網頁地址,例如http://www.xxxx.net/ReadNews.asp?NewsID=58。只有這種問號後面附帶一個參數的網址,才可以進行是否能注入的判斷。
然後,在網頁地址後加上“and 1=1”,如果返回錯誤頁面則說明不存在注入漏洞。如果返回和原先一樣的正常頁面,那就將1=1改為1=2再執行操作,如果返回的網頁還是正常顯示,就說明不存在注入漏洞。如果顯示錯誤的話,那麼就很有可能存在注入漏洞。
小提示:存在注入漏洞的網站大部分都有特點,即如果在頁面的鏈接後面跟一個等式就會返回一個和沒有加等式前一樣的頁面;而在鏈接後面加一個不等式,就會返回各種錯誤信息。這是判斷網站注入漏洞的一種最經典的方法。完成了注入漏洞的判斷後,還需要經過猜表、猜賬號數目、猜解字段名稱等多個步驟,才能最終獲得需要的數據。
剖析SQL工具注入
對於沒有接觸過數據庫的普通用戶來說,通過手工構造網頁注入所用的代碼很困難,因此可以直接利用現成的網頁注入工具進行操作。現在網絡中常見的網頁注入工具包括NBSI、HDSI、Domain、《啊D注入工具》等,這些工具大大簡化了網頁注入操作的難度。
1.找尋網站注入點
現在我們就利用《啊D注入工具》來進行演示。首先點擊窗口中“注入檢測”中的“掃描注入點”按鈕,然後在“檢測地址”中輸入需要進行檢測的網站地址,按回車就會打開該網頁並開始檢測注入點。用戶可以在頁面顯示窗口中操作,這樣可以提高程序查找漏洞的可能性。如果程序檢測到漏洞的話,將顯示出漏洞的鏈接地址,也就是用於SQL注入入侵的注入點。
2.分析數據庫類型
在檢測到的注入點鏈接上點擊鼠標右鍵,選擇菜單中的“注入檢測”按鈕,程序將自動跳轉到“初級SQL注入檢測”界面。在“注入連接”選項中已經自動填入剛剛檢測到得注入鏈接,用戶直接點擊“檢測”按鈕即可檢測出該網站所使用的數據庫類型,這也就是前面說的“猜表”的過程。接著點擊“檢測表段”按鈕,對數據庫的表段進行分析,沒過多久程序就檢測出數據庫中的表段。
3.拆解數據庫信息
為了能獲得需要的數據,一般都需要獲得管理員的賬戶和密碼。所以這裡選擇“admin”這個表段,然後接著點擊“檢測字段”按鈕,同樣在很短的時間內就能檢測出“admin”表段中的字段名稱。不用說我們就知道username字段存放的是管理員的賬戶,而password字段中存放的當然就是登錄密碼了。選擇需要進行拆借的字段,再點擊“檢測內容”按鈕來判斷字段的長度和內容,接著程序就可以將每個字段的內容猜解出來。
4.尋找後台並登錄
當我們成功獲得了管理員的賬戶和密碼後,我們就應該開始檢測該網站的管理入口了。點擊“檢測管理入口”按鈕,工具就開始自動檢測該網站的管理入口。當檢測到網站的管理入口後,在檢測到的地址上點擊鼠標右鍵,在彈出的菜單中選擇“用IE打開連接”命令。我們接著轉到浏覽器窗口,使用得到的管理員賬戶和密碼在登錄窗口進行登錄,進入網站的後台後就可以進行管理操作了。
如何防范初級SQL注入
對於SQL網頁注入的防范主要分為兩種。第一種就是對客戶端提交的變量參數進行仔細檢測。比如可以利用現成的《楓葉SQL通用防注入V1.0 ASP版》程序,對用戶通過網址提交過來的變量參數進行檢查,如果發現客戶端提交的參數中有用於初級SQL注入的常用字符時,系統就會立即停止執行ASP並給出警告信息或轉向出錯頁面。
第二種就是給相關的賬戶信息加密。常見的系統都是利用MD5進行加密處理的,因為MD5沒有反向算法不能解密。不過利用在線破解網站可以破解某些被MD5加密的內容,因此管理員在設置自己密碼時最好先到這些網站進行檢測,從而保證自己密碼的安全性。
攻防博弈
攻 黑客:這個實例向大家演示了利用《啊D注入工具》注入Access數據庫的過程。對於Access來說,由於其SQL查詢功能非常弱,因此只能使用猜解的辦法;但是對於SQL Server之類的數據庫來說,我們還可以利用一些特別的SQL查詢語句暴出其表名與列名,並完成強大的系統控制功能。相對而言,SQL Server的手工注入更加靈活強大,而且更加難以防御!
防 編輯:對客戶端提交的變量參數進行仔細檢測以及給相關的賬戶信息加密,的確可以減少黑客利用網站漏洞進行SQL注入。但是對於服務器管理員來說,服務器上有許多網站,不可能檢查每個網站是否存在SQL注入漏洞,所以為了有效地防止SQL Server之類的暴庫入侵,減少網站的損失,可以在IIS上進行安全設置。例如:把IIS設置成不管出什麼樣的ASP錯誤,只給出一種錯誤提示信息。
From:http://tw.wingwit.com/Article/Network/201309/414.html