2013年12月25日 星期三

[MSSQL] OS登入密碼忘記時,透過資料庫sa來重新建立密碼

在執行公司專案的時候,因為客戶端資訊記錄不齊全,又因資安考量更改密碼,又沒有加入AD,客戶端也不清楚OS密碼登入,所以尋求協助。

這樣的狀況並不多,但在網路上找了一下竟然可以輕鬆的利用sa密碼更動OS

簡單來說sa的權限相當於root的權限了,也請MIS注意sa的密碼與權限


Server A 為需要更改OS密碼,本身需要有SQL SERVER

然後找隨便一台安裝SSMS遠端連線到Server A的SQL,必須要使用sa的權限登入

1. 建立帳號 admintest / adminpwd
exec xp_cmdshell 'net user admintest adminpwd /add'

2. 加入到administrators群組
exec xp_cmdshell 'net localgroup administrators admintest /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的權限極大,所以可以用sa來開啟xp_cmdshell。


3. 開啟xp_cmdshell權限
    a. 先打開sp_configure的權限
USE master
exec sp_configure 'show advanced options', 1
reconfigure with override






    b. 透過sp_configure開啟xp_cmdshell權限
exec sp_configure 'xp_cmdshell',16    
reconfigure with override
exec sp_configure 'show advanced options', 0




此時xp_cmdshell權限已經被開啟囉!再回頭1~2步驟新建帳號,你會看到output : 執行命令成功。

 趕緊使用剛剛建立帳號試試登入囉!


參考資料:
http://www.dotblogs.com.tw/dotjum/archive/2008/10/28/5811.aspx
http://msdn.microsoft.com/zh-tw/library/ms188787.aspx

沒有留言:

張貼留言