本文深入探討 MSSQL 在 public 與 db_owner 權限下獲取 WebShell 或系統權限的六大實戰方法,並嚴謹論證「絕對 public 權限下單靠 SQL 力量提權絕對不可能」的結論,最後給出網管防禦建議。
BACKUP DATABASE ... DIFFERENTIAL 產生 ASP 檔案,成功率不高。xp_regread 讀取 VNC 密碼破解拿系統權限,前提是目標安裝 VNC,侷限性大。xp_regwrite 寫入啟動項,需重啟才生效,成功率較高但有延遲。作者宣稱另有至少三種成功率更高的方法,核心為「瞞天過海」:在 master 資料庫擁有 db_owner、其他資料庫僅 public(「相對 public 權限」)時,竟可使用僅限 sysadmin 的 sp_OACreate、sp_OAMethod,可無亂碼寫入 WebShell 或直接加系統帳號。
sp_add_job 等需 SQLSERVERAGENT 服務啟動,預設關閉;xp_servicecontrol 啟動會報錯。xp_regread、xp_dirtree 等需建表、插入資料再查詢,但 public 無建表/插入/備份權限,第一關即過不去。public 權限下,單靠 SQL 預存/擴展預存程序拿 WebShell/系統權限絕對不可能。作者實戰經驗:至少 90% 的網站在給預設資料庫 db_owner 時,同步給 master db_owner;資料庫僅 2-3 個時更是 100%。因此「相對 public 權限」極具實戰價值。
db_owner,更勿給 master 權限。MSSQL 提權技術層出不窮,核心在於權限配置失誤與注入漏洞共存。網管應回歸基本面:最小權限、修補注入、纵深防禦,而非賭攻擊者不知某招。