存在Microsoft SQL Server SA弱口令漏洞的計算機一直是網絡攻擊者青睞的對象之一,通過這個漏洞,可以輕易的得到服務器的管理權限,從而威脅網絡及數據的安全。作為網絡管理員,我們可不能不聞不問,一定要弄清楚這其中的起因、經過和結果,才能有的放矢,做到更為有效的防范,下面我就詳細的向大家介紹一下。
Microsoft SQLServer是一個C/S模式的強大的關系型數據庫管理系統(tǒng),應用領域十分廣泛,從網站后臺數據庫到一些MIS(管理信息系統(tǒng))到處都可以看到它的身影。網絡中利用Microsoft SQLServer SA弱口令入侵的核心內容就是利用Microsoft SQLServer中的存儲過程獲得系統(tǒng)管理員權限,那到底什么是存儲過程?
存儲過程是存儲在SQLServer中的預先寫好的SQL語句集合,其中危險性最高的擴展存儲過程就是xp_cmdshell了,它可以執(zhí)行操作系統(tǒng)的任何指令,而SA是Microsoft SQLServer的管理員帳號,擁有最高權限,它可以執(zhí)行擴展存儲過程,并獲得返回值,比如執(zhí)行:
exec master..xp_cmdshell 'net user test 1234 /add'和exec master..xp_cmdshell 'net
localgroup administrators test /add' |
這樣對方的系統(tǒng)就被添加了一個用戶名為test,密碼為1234,有管理員權限的用戶,如圖一所示。
|
圖1 |
現在你應該明白為什么得到SA密碼,就可以得到系統(tǒng)的最高權限了吧。而往往不少網絡管理員不清楚這個情況,為自己的SA用戶起了一些諸如1234,4321等簡單的密碼,甚至根本就不設置密碼,這樣網絡入侵者就可以利用一些黑客工具很輕松的掃描到SA的密碼,進而控制計算機。
除了xp_cmdshell,還有一些存儲過程也有可能會被入侵者利用到:
1、xp_regread(這個擴展存儲過程可以讀取注冊表指定的鍵里指定的值),使用方法(得到機器名):
DECLARE @test varchar(50)
EXEC master..xp_regread @rootkey='HKEY_LOCAL_MACHINE',
@key='system\controlset001\control\computername\computername',
@value_name='computername',
@value=@test OUTPUT
SELECT @test |
2、xp_regwrite(這個擴展存儲過程可以寫入注冊表指定的鍵里指定的值),使用方法(在鍵HKEY_LOCAL_MACHINE\SOFTWARE\aaa\aaaValue寫入bbb):
EXEC master..xp_regwrite
@rootkey='HKEY_LOCAL_MACHINE',
@key='SOFTWARE\aaa',
@value_name='aaaValue',
@type='REG_SZ',
@value='bbb' | 如果被入侵的計算機的administrator用戶可以瀏覽注冊表中的HKEY_LOCAL_MACHINE\SAM\SAM\信息,那使用xp_regread、xp_regwrite這兩個存儲過程可以實現克隆administrator用戶,得到管理員權限。xp_regdeletekey、xp_regdeletevalue也會對系統(tǒng)帶來安全隱患。
3、OLE相關的一系列存儲過程,這系列的存儲過程有sp_OACreate,sp_OADestroy,sp_OAGetErrorInfo,sp_OAGetProperty,sp_OAMethod,sp_OASetProperty,sp_OAStop,使用方法:
DECLARE @shell INT EXEC SP_OACREATE 'wscript.shell',@shell OUTPUT
EXEC SP_OAMETHOD @shell,'run',null, 'c:\WINNT\system32\cmd.exe /c net user test
1234 /add'-- | 這樣對方系統(tǒng)增加了一個用戶名為test,密碼為1234的用戶,再執(zhí)行:
DECLARE @shell INT EXEC SP_OACREATE 'wscript.shell',@shell OUTPUT
EXEC SP_OAMETHOD @shell,'run',null, 'c:\WINNT\system32\cmd.exe /c net localgroup
administrators test /add '-- | 用戶test,被加入管理員組。
解決辦法:給SA起個足夠復雜的密碼,使網絡攻擊者很難破解出來。為了保險,我們還要到在SQLServer的查詢分析器中使用存儲過程sp_dropextendedproc刪除xp_cmdshell等存儲過程,需要時再使用sp_addextendedproc恢復即可,具體操作可以在SQLServer中查詢sp_dropextendedproc和sp_addextendedproc的使用幫助,需要注意一點的是刪除OLE相關系列的存儲過程,可能會造成企業(yè)管理器中的某些功能無法使用,這里筆者不建議刪除。
既然我們知道了SP_OACREATE的使用方法,那我們就可以到\WINNT\system32下找到cmd.exe,net.exe和net1.exe這三個文件,在“屬性”—“安全”中把可以對他們訪問的用戶全部刪除掉,這樣就無法使用SP_OACREATE來增加系統(tǒng)用戶了,在我們需要訪問這些文件的時候再加上訪問用戶就可以了。 |