普通使用者竟這樣執行xp cmdshell儲存過程!

2021-09-20 04:45:53 字數 1916 閱讀 9167

01環境需求

sql server 2005 及之後的版本

02背景

xp_cmdshell 是乙個很危險的儲存過程,通過它,可以訪問作業系統的資源,但有時候我們也需要使用它來實現一些特殊的處理。

從安全的角度來考慮,禁用 xp_cmdsehll 是最保險的,即使為了特殊目的而要求使用它,也最好能夠編寫一些實現這個特殊目的的使用者儲存過程,只在這個使用者儲存過程中使用 xp_cmdshell,而普通使用者只能使用這些使用者儲存過程。

03正確的解決辦法

下面的示例顯示如何使普通使用者在不具有執行儲存過程 xp_cmdshell 的許可權下,呼叫包含了執行 xp_cmdshell **的使用者儲存過程的方法。

具有執行xp_cmdshell許可權的登入

-- 1.a. 建立登入

-- 1.b. 這個登入是內建的, 不允許登入, 這樣可以減少安全隱藏

-- 1.c. 因為要呼叫xp_cmdshell , 所以在master 中要有使用者, 並具有許可權

使用者資料庫

-- 2.a 為執行xp_cmdshell 許可權的登入建立使用者

-- 2.b 測試儲存過程

呼叫儲存過程的普通登入

-- 3.a 登入

-- 3.b 資料庫使用者

-- 3.c 執行儲存過程的許可權

-- 3.d 執行測試

-- 4. 刪除測試

04補充說明

多數情況下,資料庫的所有者是 sa 一類的 sysadmin 固定伺服器角色的成員,所以在這種情況下,也可以直接指定使用資料庫所有者作為儲存過程執行的安全上下文。

使用者的資料庫

-- 2.b 測試儲存過程

呼叫儲存過程的普通登入

-- 3.a 登

-- 3.b 資料庫使用者

-- 3.c 執行儲存過程的許可權

-- 3.d 執行測試

刪除測試

使用前述方法的時候,例項中需要有 xp_cmdshel l**帳戶(預設是沒有的), 否則會收到下面的錯誤資訊。

訊息15153,級別16,狀態1,過程xp_cmdshell,第1 行xp_cmdshell **帳戶資訊無法檢索或無效。請驗證'##xp_cmdshell_proxy_account##' 憑據存在並且包含有效的資訊。

可以使用下面的**建立xp_cmdshell**帳戶

-- 在作業系統中為xp_cmdshell **帳戶建立windows 使用者

-- 建立xp_cmdshell **帳戶

最後說明一點,要使用xp_mdshell,得將伺服器的「xp_cmdshell」選項開啟,參考如下的**。

原文發布時間為:2018-09-10

普通使用者裝配MySQL 普通使用者裝配MySQL

普通使用者安裝mysql linux這點很好,即使沒有許可權,也可以將自己想要的程式什麼的安裝到自己有許可權的目錄下。介紹一下怎麼在非root用 許可權下安裝mysql 參考 二 編譯 1 打上補丁 解壓mysql,並進入mysql 5.1.42目錄後,執行 patch np1 i mysql 5....

普通使用者crontab不執行原因

今天我發現我寫的cron竟然沒執行,然後在cron log裡發現下面的資訊 cron failed to open pam security session,cannot set security context 出現類似現象一般原因有二 1 的使用者資訊在shadow裡不存在 2 需要改密碼了,可...

用普通使用者啟動執行redis

因為安全的問題,需要將系統中root執行的redis服務轉為普通使用者執行,提高安全性,具體系統環境如下 groupadd admin 新建admin使用者組 useradd boy g admin 新建使用者boy並加入admin組中2.將redis的配置檔案複製乙份到boy使用者的家目錄下 cp...