[SQL]當忘記windows 遠端桌面administrator時,透過資料庫sa來重新建立密碼
會寫這篇的原因,剛好前段時間,客戶那邊類似資安演習,
就連帶一起改了幾台機器的遠端連線的密碼,結果改到連他自己都忘記密碼是什麼,
就請我們幫忙看能不能幫忙處理,所以這一篇分享文章,
請用在正途上面,不要拿來亂測別的機器,
也請大家自己注意sa的密碼及帳號權限的重要性。
首先這個狀況是忘記密碼的那台機器就簡稱 A ,必須是有安裝SQL SERVER,
然後你擁有這台SQL SERVER 的SA的權限及密碼。
當你忘記這台A機器的administrator密碼時,你可以先透過另一台機器,
透過資料庫連線的方式,連線到這台A機器,然後進行以下步驟。
1.用sa連線後,嘗試建立帳號,因為sa的權限幾乎是administrator的權限,
所以可以使用 xp_cmdshell 來建立帳號
-- 建立帳號
exec xp_cmdshell 'net user t001 t001 /add'
-- 加入到administrator群組
exec xp_cmdshell 'net localgroup administrators t001 /add'
當嘗試建立後,一般來說會遇到顯示以下的錯誤訊息:
訊息 15281,層級 16,狀態 1,程序 xp_cmdshell,行 1
SQL Server 已封鎖元件 'xp_cmdshell' 的 程序 'sys.xp_cmdshell' 之存取,因為此元件已經由此伺服器的安全性組態關閉。系統管理員可以使用 sp_configure 來啟用 'xp_cmdshell' 的使用。如需有關啟用 'xp_cmdshell' 的詳細資訊,請參閱《SQL Server 線上叢書》中的<介面區組態>(Surface Area Configuration)。
從錯誤訊息看終究可以知道是 xp_cmdshell 被封鎖,但登入的帳號是 sa ,所以可以透過這段錯誤訊息,
來查出如何開啟 xp_cmdshell 。
2.開啟 xp_cmdshell 權限
USE master
EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
-- 開啟 xp_cmdshell
EXEC sp_configure 'xp_cmdshell',1
RECONFIGURE WITH OVERRIDE
EXEC sp_configure 'show advanced options', 0
透過 sp_configure 開啟 xp_cmdshell 的權限後,再回頭執行第一個步驟的建立帳號TSQL,
就會得到成功建立帳號的訊息:命令執行成功。
這個時候,就可以趕緊用新建立的帳號 t001,t001 登入到這台A機器,因為t001是administrator的群組,
一般來說可以遠端連線進去,然後趕緊重新設定 administrator 的密碼,再趕緊把 t001 刪除掉,
但請注意,請一定要再回頭執行關閉 xp_cmdshell
USE master
EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
-- 關閉 xp_cmdshell
EXEC sp_configure 'xp_cmdshell',0
RECONFIGURE WITH OVERRIDE
EXEC sp_configure 'show advanced options', 0
就這樣透過sa進去把忘記密碼的帳號,重新設定一組密碼,就能順利的登入。
最後,請務必注意,在這個分享中,
就能瞭解到 SA 這個帳號擁有的巨大權限,
請務必管理好資料庫中的帳號權限。
這招也不要用在歪路上面,歪路不可行,切記阿!
語法參考資源:
http://msdn.microsoft.com/zh-tw/library/ms188787.aspx