提到sa弱口令,我們首先就會想到,許多數據庫都有1個類似的超級管理員賬號,比如:Oracle是"system"和"sys",Sybase也是"sa",MySQL裡有"root"(不是Unix系統賬號的那個root)。如果沒有設置相對應的密碼或者你設的密碼強度太低過於簡單,那麼入侵者就能直接登陸並攻擊數據庫服務器,他們甚至可以獲得你操作系統的最高級別的權限。說到這裡,有的人也許不相信,曾經有人和我說:"數據庫被攻破最多你的那些表啊什麼的被人家拿走,對方怎麼可能獲得操作系統最高權限呢?"其實,我並不是在危言聳聽,下面我就假設某台SQL Server 2000的數據庫的SA密碼被破解為例,來看看黑客在取得了數據庫權限後如何進1步把自己變成系統的管理員。
目前,網絡上有不少此類工具,可以方便那些不熟悉SQL的人用,其實完全不用去下載那種工具,只要用微軟自己的sql server裡自帶客戶端程序連上去就馬上可以輕松的把自己變成整個操作系統的超級管理員了。具體的過程,我就為大家講解1遍,這裡先假設黑客已經通過其他工具暴力破解了你設置的強度教低的sa帳號的弱口令,或者你根本就沒有為sa賬號設置口令。首先黑客打開SQL Server查詢分析器,以sa身份和他剛暴力破解的密碼登陸進你的SQL Server數據庫,然後他執行以下語句:
xp_cmdshell "net user zxc nopassWord /add" go xp_cmdshell "net localgroup /add administrators zxc" go
這時候,你如果打開你的計算機管理-----本地用戶和組-----用戶,這時候你會發現裡面已經多出了1個叫zxc的新賬號,查看一下此帳號的屬性,你更會發現他竟然隸屬於administrators組。
說到這裡大家肯定都明白了,對,黑客通過調用SQL Server的系統數據庫master裡的xp_cmdshell這個擴展存儲過程輕松的將他自己變成了你服務器上的超級管理員,那麼以後他還有什麼事情會干不了呢。
因此,如果大家在平時不需要調用此存儲過程的話,可以考慮將它刪除,當然不管你平時是不是要調用此存儲過程,你都應該為你的sa賬號設置1個十分健壯的密碼,這是最根本、最重要的,你可以打開sql server的企業管理器,然後選擇安全性-----登陸,右擊sa賬號,選擇屬性,然後在屬性對話框裡修改您的sa帳號所對應的密碼,這裡我建議你要盡可能的設置的復雜些,可以用英文字母結合數字結合特殊符號等,這樣就可以防止黑客對此帳號的暴力破解,當然最好是在安裝您的SQL Server的時候就已經完成此項工作,以免日後因人為遺忘等原因帶來安全隱患。