利用Stored Procedure授權一般user執行xp_cmdshell時,碰到權限不足的情形

  • 3523
  • 0
  • 2016-04-23

利用Store Procedure授權一般user執行xp_cmdshell時,碰到權限不足的情形

無意間發現的一個情形,有時我們會透過一個Stored Procedure讓一般user透過SP就

可以執行xp_cmdshell這種高風險的語法,而不是直接給user高權限,某日參考楊

志強老師的文件做類似實作,卻發現照老師的方式居然user在執行SP時還是被認

為權限不足。

情境為當DBowner不是sa,我無法讓gustuser可以透過sp去跑xp_cmdshell的功能。

一但我將DBOwner改成sa後,gust就可以透過sp執行xp_cmdshell成功。不知道

SQL的安全性設定就是如此嗎?筆記一下。

clip_image002

clip_image004

 

clip_image006

 

clip_image008

 

clip_image010

 

 

clip_image012

 

clip_image014

 

2016/4/26補充 : 後來發現由於xp_cmdshell位於master資料庫。我們在xpcmdshell這一個User資料庫要透過Stored Procedure的Execute as Owner去執行master的xp_cmdshell時,xpcmdshell資料庫的Owner也必須是master資料庫的db_owner角色的成員。因此如果我們將xpcmdshell的Owner也改成sa後,那兩個DB的Owner皆是sa所以可以Work。如果不想將xpcmdshell資料庫的Owner改為sa的話,另一作法就是將xpcmdshell資料庫的Owner加入到master資料庫的db_owner角色也是可以的。

 

我是ROCK

rockchang@mails.fju.edu.tw