返回列表 回復 發帖

初級SQL注入的破解方案

最近海口警方破獲一起特大高校招生詐騙案,該詐騙團夥雇用駭客入侵海南大學招生網站,竄改招生資料庫,偽造招生名單,騙取學生財物。看到這裏,你是不是感到不寒而慄?你知道駭客入侵該大學網站首先會採用什麼方式嗎?答案就是SQL注入,所謂SQL注入,就是把SQL命令插入到Web表單遞交的查詢字串、頁面請求的查詢字串,以及輸入功能變數名稱的查詢字串,最終達到欺騙伺服器執行惡意SQL命令的目的。
  暑假中自己架設網站的學生們、眾多的個人網站以及小型企業的網站的管理員們(主要採用Access或MSSQL作數據庫,特別是Access資料庫),你們作好迎戰的準備了嗎?下麵就請跟隨小編一起探索初級SQL注入的解決之法。
SQL注入漏洞的原理
  SQL注入的原理,就是從客戶端提交特殊的代碼,來收集遠程網站及伺服器的資訊,從而獲取自己所需要的相關資料。根據具體情況,構造出相應的巧妙的SQL語句,是成功獲取需要數據的關鍵。
  在實際的操作中,如果是針對Access資料庫,可以對表名進行逐個猜測,接著用函數來計算數據並將它們還原;如果是MSSQL資料庫的話,由於所有的列表都保存在一個特殊的地方,可以直接通過暴庫的方法來獲取,這種方法簡單易用並且準確率極高。
初級手段尋找注入漏洞
  首先,需要對IE流覽器進行一些設置。點擊“工具”菜單中的“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錯誤,只給出一種錯誤提示資訊。
返回列表