首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2000 SA 弱口令被破解實戰還原:xp_cmdshell 提權拿下服務器完全控制權

     編輯:關於SqlServer

攻擊鏈還原

  1. 弱口令爆破:攻擊者利用字典/暴力破解工具,針對 sa 賬號嘗試常見弱口令(空密碼、123456、sa、admin、password 等)。
  2. 登錄查詢分析器:獲取 sa 權限的 SQL Server 會話。
  3. 調用擴展存儲過程:
    EXEC xp_cmdshell 'net user hacker P@ssw0rd /add';  -- 創建系統用戶
    EXEC xp_cmdshell 'net localgroup administrators hacker /add';  -- 加入管理員組
    
  4. 結果:攻擊者獲得操作系統 Administrators 組 權限,等同完全控制服務器:安裝木馬、竊取數據、橫向移動、部署勒索軟件等。

根因分析

  • SA 權限過高:默認映射到 sysadmin 固定服務器角色,擁有實例級最高權限。
  • xp_cmdshell 開放:允許 sysadmin 執行任意操作系統命令,橋接數據庫與 OS。
  • 弱口令/空密碼:安裝時未強制設置強密碼,或後續未修改默認密碼。

修復與加固清單

措施操作優先級
設置強密碼企業管理器 → 安全性 → 登錄 → sa → 屬性 → 密碼:≥16 位,大小寫+數字+特殊符號P0
禁用/重命名 saALTER LOGIN sa DISABLE; 或 ALTER LOGIN sa WITH NAME = [NewAdminName];P0
移除 xp_cmdshellEXEC sp_dropextendedproc 'xp_cmdshell';(如業務必需,限制執行代理賬號權限)P1
啟用密碼策略ALTER LOGIN sa CHECK_POLICY = ON; 強制複雜度、過期、鎖定P1
最小權限原則應用使用專用低權限登錄,僅擁有必要表的 CRUD + EXEC 權限P1
審計登錄失敗審計規範捕獲 FAILED_LOGIN_GROUP,異常告警P2
網絡層隔離防火牆僅允許應用服務器 IP 訪問 1433,禁止公網直連P0

現代版本(2005+)的改進

  • 安裝向導強制設置 sa 密碼,不可為空。
  • xp_cmdshell 默認關閉,需 sp_configure 'xp_cmdshell', 1 顯式開啟。
  • 引入 執行代理賬號(##xp_cmdshell_proxy_account##),非 sysadmin 用戶通過代理賬號權限執行命令,不再直接以 SQL Server 服務賬號身份運行。
  • 支持含有窗口的認證、密碼策略、登錄審計等企業級安全特性。

應急響應:發現 SA 被盜用

  1. 立即修改 sa 密碼、禁用 sa、檢查可疑登錄(SELECT * FROM sys.dm_exec_sessions WHERE login_name = 'sa')。
  2. 檢查系統用戶組是否有異常新增賬號(lusrmgr.msc)。
  3. 排查計劃任務、啟動項、服務、註冊表 Run 鍵是否有惡意持久化。
  4. 全盤掃描木馬、Webshell、異常進程。
  5. 通報安全部門,啟動應急預案,保全日志證據。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved