提到 sa 弱口令,我們首先就會想到,許多資料庫都有 1 個類似的超級管理員賬號,比如:Oracle 是”system” 和”sys”,Sybase 也 是”sa”,MySQL 裡有”root”(不是 UNIX 系統賬號的那個 root) 。如果沒有設定相對應的密碼或者你設的密碼強度太低過於簡單,那麼入侵者 就能直接登陸並攻擊資料庫站群伺服器,他們甚至可以獲得你作業系統的最高階別的許可權。說到這裡,有的人也許不相信,曾經有人和我說:” 資料庫被攻破最多你的那 些表啊什麼的被人家拿走,對方怎麼可能獲得作業系統最高許可權呢?” 其實,我並不是在危言聳聽,下面我就假設某臺 SQL Server 的資料庫的 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 的時候就已經完成此項工作,以免日後因人為遺忘等原因帶來安全隱患。
下面我們來看修改 sa 使用者名稱的辦法。
最簡單的程式碼如下
複製程式碼 程式碼如下:
Alter LOGIN sa DISABLE
Alter LOGIN sa WITH NAME = [systemAccount]
利用企業管理器
首先,在企業管理器的查詢分析器中執行以下程式碼(注意,進入查詢分析器的使用者名稱的角色要為 System administrator, 而且是各個資料庫的 db owner):
複製程式碼 程式碼如下:
sp_configure ‘allow updates’, 1
go
RECONFIGURE WITH OVERRIDE
go
然後再執行以下程式碼
複製程式碼 程式碼如下:
update sysxlogins set name=’ 你要改成的名字’ where sid=0x01
update sysxlogins set sid=0xE765555BD44F054F89CD0076A06EA823 where name=’ 你要改成的名字’
接著:
複製程式碼 程式碼如下:
sp_configure ‘allow updates’, 0
go
RECONFIGURE WITH OVERRIDE
go
然後,你檢視一下 SQL SERVER 的角色,就會發現 SA 的使用者名稱,已經改為你的新名子了。
為了加強安全把預設的 sa 使用者更改掉,安全性會有大幅提升。
Alter LOGIN sa DISABLE
Alter LOGIN sa WITH NAME = [新使用者名稱]
修改 SA 使用者名稱:
一:在企業管理器中右擊:(local)(windows NT),選屬性,選擇 “站群伺服器設定”,在站群伺服器行為中的 “允許對系統目錄直接進行修改” 前面的方框打鉤。再點確定。
二:再開啟查詢分析器,登陸進去(呵呵,隨便你用什麼帳號進去,不過可一定要在 master 資料庫中有 db_owner 的許可權)輸入
複製程式碼 程式碼如下:
update sysxlogins set name=’ 你要改成的名字’ where sid=0x01
update sysxlogins set sid=0xE765555BD44F054F89CD0076A06EA823 where name=’ 你要改成的名字’
,OK,執行成功,轉道企業管理器中重新整理安全性中的登陸,看看,sa 是不是變成你自己想修改的使用者了
刪除 SA 使用者:
修改方法需要利用的儲存過程 sp_configure,sp_configure 顯示或更改當前站群伺服器的全域性配置設定。
語法:
開啟查詢分析器,輸入
sp_configure [ [ @configname = ] ‘name’ ]
[ , [ @configvalue = ] ‘value’ ]
例項:
複製程式碼 程式碼如下:
sp_configure ‘allow updates’, 1
go
RECONFIGURE WITH OVERRIDE
go
好拉,這樣我們就可以更新系統表拉,接下來和前面的做法一樣拉 update sysxlogins set name=’ 你要改成的名字’ where sid=0x01,然後再刪除” 你改名後的那個名字”
不 過要注意在 sp_configure 上沒有引數(或只有第一個引數)的執行許可許可權預設授予所有使用者。有兩個引數的 sp_configure(用於更改配置選項)的執行許可許可權預設授予 sysadmin 和 serveradmin 固定站群伺服器角色。 RECONFIGURE 許可權預設授予 sysadmin 固定站群伺服器角色和 serveradmin 固定站群伺服器角色,並且不能傳輸。