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

從 IIS 到 SQL Server 資料庫安全防護:腳本注入、xp_cmdshell 與 sa 帳號風險全解析

     編輯:關於SqlServer

威脅脈絡

蠕蟲自動化利用 IIS 漏洞 (CodeRed, Nimda) 後,攻擊焦點轉向資料庫層。ASP/PHP/JSP 動態網站若忽略資料庫安全,等同大門加鎖卻留後門大開。

第一道防線:ASP 腳本層 SQL 注入過濾

Function Filter_SQL(strData)
    Dim strFilter, blnFlag, i, arrayFilter
    strFilter = "',;,//,--,@,_,exec,declare"  ' 可擴充
    blnFlag = False
    arrayFilter = Split(strFilter, ",")
    
    For i = 0 To UBound(arrayFilter)
        If InStr(strData, arrayFilter(i)) > 0 Then
            blnFlag = True
            Exit For
        End If
    Next
    
    If blnFlag Then
        Response.Redirect "wrong.asp"  ' 記錄攻擊來源、IP、時間
    Else
        Filter_SQL = strData
    End If
End Function

進階防護建議

  • 改用參數化查詢 (ADO Command + Parameters),根治注入
  • 最小權限資料庫帳戶:僅 SELECT/INSERT/UPDATE/DELETE,無 DROP/ALTER/xp_*
  • 錯誤訊息不回傳前端,統一導向友善錯誤頁
  • WAF (Web Application Firewall) 部署在網路層

第二道防線:SQL Server 核心風險點

1. sa 帳號空密碼 - 歷史最大後門

  • SQL Server 2000 預設 sa 空密碼
  • 攻擊者獲得 sa → 完整伺服器控制權
  • 強制措施:安裝即設定強密碼、重命名 sa、停用 sa

2. xp_cmdshell - 作業系統命令執行

-- 語法
EXEC xp_cmdshell 'command_string' [, no_output]

-- 實際攻擊鏈
EXEC xp_cmdshell 'net user hacker P@ssw0rd /add';      -- 建立系統用戶
EXEC xp_cmdshell 'net localgroup administrators hacker /add'; -- 提權至管理員

關鍵防護配置

  1. 移除 PUBLIC 對 xp_cmdshell 執行權:REVOKE EXEC ON xp_cmdshell TO PUBLIC;
  2. 僅授予必要帳戶:GRANT EXEC ON xp_cmdshell TO [SpecificLogin];
  3. 設定代理帳戶:最低權限 Windows 帳戶執行命令
  4. 稽核啟用:追蹤所有 xp_cmdshell 呼叫

系統預存程序風險清單

版本預設權限代理帳戶機制
SQL 2000sysadmin 固定角色xp_sqlagent_proxy_account → SQLAgentCmdExec
SQL 2005+sysadmin + 授權者##xp_cmdshell_proxy_account## 憑證
預存程序風險建議
xp_cmdshellOS 命令執行嚴格管控/停用
xp_regread/xp_regwrite登錄讀寫移除 PUBLIC 執行權
xp_fileexist/xp_dirtree檔案系統列舉移除 PUBLIC 執行權
sp_OA*OLE Automation 物件建立停用 Ole Automation Procedures
xp_sendmail郵件發送/資料外洩遷移 Database Mail

深度防禦架構

  1. 網路層:防火牆僅開放應用伺服器 IP 連接 1433
  2. 應用層:參數化查詢、輸入驗證、最小權限帳戶
  3. 資料庫層:停用危險擴展預存程序、強密碼策略、稽核追蹤
  4. 作業系統層:SQL 服務帳戶最低權限、修補管理、檔案系統 ACL
  5. 監控層:失敗登入告警、異常查詢模式偵測、備份驗證

資料庫安全不是單一設定,而是分層防禦體系。sa 空密碼與 xp_cmdshell 開放是「必死」配置,修復這兩點即消除 80% 以上自動化攻擊向量。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved