2009年3月25日 星期三

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


主題:利用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 = '林佳容 ' 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

沒有留言:

張貼留言