如何在不提升用户权限的情况下,使普通用户执行sp_OACreate存储过程

作者&投稿:乾味 (若有异议请与网页底部的电邮联系)
如何在不提升用户权限的情况下,使普通用户执行sp_OACreate存储过程~

-- 1. 具有执行sp_OA... 权限的登录USEmaster;GO -- 1.a. 建立登录CREATELOGINOA_loginWITHPASSWORD=N'Pwd.123', CHECK_POLICY=OFF;GO-- 1.b. 这个登录是内置的, 不允许登录, 这样可以减少安全隐藏DENYCONNECTSQL TOOA_login;GO-- 1.c. 因为要使用sp_OA 这一系列的存储过程, 所以在master 中要有用户, 并具有权限CREATEUSEROA_loginFORLOGINOA_loginWITHDEFAULT_SCHEMA=dbo; GRANTEXECUTEONsys.sp_OACreate TOOA_login; GRANTEXECUTEONsys.sp_OADestroy TOOA_login; GRANTEXECUTEON sys.sp_OAGetErrorInfo TOOA_login; GRANTEXECUTEONsys.sp_OAGetProperty TOOA_login; GRANTEXECUTEONsys.sp_OAMethod TOOA_login; GRANTEXECUTEONsys.sp_OASetProperty TOOA_login; GRANTEXECUTEONsys.sp_OAStop TOOA_login;GO -- 2. 用户数据库USEtempdb;GO -- 2.a 为执行sp_OA... 权限的登录建立用户CREATEUSEROA_loginFORLOGINOA_loginWITHDEFAULT_SCHEMA=dbo;GO -- 2.b 测试存储过程CREATEPROCdbo.pWITHEXECUTEASN'OA_login' -- 指定存储过程的执行时的上下文AS DECLARE@objectint; DECLARE@hrint; DECLARE@srcvarchar(255),@descvarchar(255); EXEC@hr=sp_OACreate'ADODB.RecordSet',@objectOUT; IF@hr 0 GOTOlb_Err; EXEC@hr=sp_OAMethod@object,'Open',NULL,'SELECT ServerName = @@SERVERNAME',N'Provider=SQLOLEDB.1;Integrated Security=SSPI'; IF@hr 0 GOTOlb_Err; EXEC@hr=sp_OAMethod@object,'GetRows'; IF@hr 0 GOTOlb_Err; EXEC@hr=sp_OADestroy@object; RETURN; lb_Err: BEGIN EXECsp_OAGetErrorInfo@object,@srcOUT,@descOUT; RAISERROR('Error Creating COM Component 0x%x, %s, %s',16,1,@hr,@src,@desc); END;GO -- 3. 调用存储过程的普通登录USEmaster;GO-- 3.a 登录CREATELOGINtestWITHPASSWORD=N'abc.123',

从安全的角度来考虑,禁用 xp_cmdsehll是最保险的,即使为了特殊目的而要求使用它,也最好能够编写一些实现这个特殊目的的用户存储过程,只在这个用户存储过程中使用 xp_cmdshell,而普通用户只能使用这些用户存储过程。正确的解决办法下面的示例显示如何使普通用户在不具有执行存储过程 xp_cmdshell的权限下,调用包含了执行 xp_cmdshell代码的用户存储过程的方法。-- 1. 具有执行xp_cmdshell 权限的登录 USE master; GO -- 1.a. 建立登录 CREATE LOGIN Cmd_Login WITH PASSWORD = N'Pwd.123', CHECK_POLICY = OFF; GO -- 1.b. 这个登录是内置的, 不允许登录, 这样可以减少安全隐藏 DENY CONNECT SQL TO Cmd_Login; GO -- 1.c. 因为要调用xp_cmdshell , 所以在master 中要有用户, 并具有权限 CREATE USER Cmd_Login FOR LOGIN Cmd_Login WITH DEFAULT_SCHEMA = dbo; GRANT EXECUTE ON sys.xp_cmdshell TO Cmd_Login; GO -- 2. 用户数据库 USE tempdb; GO -- 2.a 为执行xp_cmdshell 权限的登录建立用户 CREATE USER Cmd_Login FOR LOGIN Cmd_Login WITH DEFAULT_SCHEMA = dbo; GO -- 2.b 测试存储过程 CREATE PROC dbo.p WITH EXECUTE AS N'Cmd_Login' -- 指定存储过程的执行时的上下文 AS EXEC master.sys.xp_cmdshell 'dir c:\' GO -- 3. 调用存储过程的普通登录 USE master; GO -- 3.a 登录 CREATE LOGIN test WITH PASSWORD = N'abc.123', CHECK_POLICY = OFF; GO -- 3.b 数据库用户 USE tempdb; GO CREATE USER test FOR LOGIN test; GO -- 3.c 执行存储过程的权限 GRANT EXECUTE ON dbo.p TO test; GO -- 3.d 执行测试 EXECUTE AS LOGIN = N'test'; GO EXEC dbo.p; GO REVERT; GO -- 4. 删除测试 DROP PROC dbo.p; DROP USER test; DROP USER Cmd_Login; USE master; DROP LOGIN test; DROP USER Cmd_Login; DROP LOGIN Cmd_Login;补充说明多数情况下,数据库的所有者是 sa一类的 sysadmin固定服务器角色的成员,所以在这种情况下,也可以直接指定使用数据库所有者作为存储过程执行的安全上下文。-- 2. 用户数据库 USE tempdb; GO -- 2.b 测试存储过程 CREATE PROC dbo.p WITH EXECUTE AS N'dbo' -- 指定存储过程的执行时的上下文 AS EXEC master.sys.xp_cmdshell 'dir c:\' GO -- 3. 调用存储过程的普通登录 USE master; GO -- 3.a 登录 CREATE LOGIN test WITH PASSWORD = N'abc.123', CHECK_POLICY = OFF; GO -- 3.b 数据库用户 USE tempdb; GO CREATE USER test FOR LOGIN test; GO -- 3.c 执行存储过程的权限 GRANT EXECUTE ON dbo.p TO test; GO -- 3.d 执行测试 EXECUTE AS LOGIN = N'test'; GO EXEC dbo.p; GO REVERT; GO -- 4. 删除测试 DROP PROC dbo.p; DROP USER test; USE master; DROP LOGIN test;使用前述方法的时候,实例中需要有 xp_cmdshell代理帐户(默认是没有的),否则会收到下面的错误信息。消息15153,级别 16,状态 1,过程 xp_cmdshell,第 1 行 xp_cmdshell 代理帐户信息无法检索或无效。请验证 '##xp_cmdshell_proxy_account##' 凭据存在并且包含有效的信息。可以使用下面的代码创建 xp_cmdshell代理帐户。USE master; GO DECLARE @user sysname, @password sysname, @sql varchar(1000); -- 在操作系统中为xp_cmdshell 代理帐户建立windows 用户 SELECT @user = N'XpCmdAccount', @password = N'P@ssw0rd.', @sql = 'NET USER "' + @user + '" "' + @password + '" /ADD'; EXEC sys.xp_cmdshell @sql; -- 建立xp_cmdshell 代理帐户 SELECT @user = CONVERT(sysname, SERVERPROPERTY(N'MachineName')) + N'\' + @user; EXEC sp_xp_cmdshell_proxy_account @user, @password;最后说明一点,要使用 xp_mdshell,得将服务器的“ xp_cmdshell”选项打开,参考如下的代码。下一篇:(邹建)将指定的表视图中的数据导出为html文件

USE tempdb;GO-- 2.b 测试存储过程 WITH EXECUTE AS N'dbo' -- 指定存储过程的执行时的上下文AS  DECLARE @object int;   DECLARE @hr int;   DECLARE @src varchar(255), @desc varchar(255);   EXEC @hr = sp_OACreate 'ADODB.RecordSet', @object OUT;   IF @hr < 0     GOTO lb_Err;   EXEC @hr = sp_OAMethod @object, 'Open', NULL, 'SELECT ServerName = @@SERVERNAME', N'Provider=SQLOLEDB.1;Integrated Security=SSPI';   IF @hr < 0     GOTO lb_Err;   EXEC @hr = sp_OAMethod @object, 'GetRows';   IF @hr < 0     GOTO lb_Err;    EXEC @hr = sp_OADestroy @object;   RETURN;lb_Err:  BEGIN    EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT ;     RAISERROR('Error Creating COM Component 0x%x, %s, %s',16,1, @hr, @src, @desc);  END;GO  -- 3. 调用存储过程的普通登录 USE master;GO-- 3.a 登录 CREATE LOGIN test WITH PASSWORD = N'abc.123',   CHECK_POLICY = OFF;GO  -- 3.b 数据库用户 USE tempdb;GOCREATE USER test FOR LOGIN test;GO  -- 3.c 执行存储过程的权限 GRANT EXECUTE ON dbo.p   TO test;GO  -- 3.d 执行测试 EXECUTE AS LOGIN = N'test';GOEXEC dbo.p;GOREVERT;GO  -- 4. 删除测试 DROP PROC dbo.p;


共享文件夹权限只设为可以看,但不能复制,修改怎么设置
设置别人的权限为只读就可以防止被修改了。你要求文件夹只设为可以运行,不能多个文件复制目的何在呢?你可以将这个文件夹单独共享,那别人就只看到里面的全部内容可以另存了。

男票对我设置了留言权限,我不能留言,他说不想让太多人知道这件事,还...
你好!你的朋友之所以不能在你的空间留言是因为你设置了权限,想要解除的话可以按照下面的步骤。首先打开你的空间主页,在右上角找到一个像齿轮的东西,鼠标放在上面就会出现一个菜单栏,单击【权限设置】。在左边的菜单栏里找到【防骚扰】,单击,再点击评论恢复下面的【所有人】或者【QQ好友】,然后就会...

在知道里整图片或附件需要什么权限???
应该是有一定等级才可以的 有些论坛也是这样的管理的 这是有天理的 这是为了防止初级用户乱发图片和网站尤其是国家明令禁止的内容 只有那些经过时间沉淀 经过检验真心是来回答问题的会给你这个权利的

大数据时代个人隐私何在?
在这种情况下,开发者需要加大隐私保护措施,通过采用技术手段,确保数据的隐私安全。加密、脱敏、权限控制等技术手段能够有效防止数据被泄露,保护数据主体的隐私安全 [2]。此外,政府、企业等权力机构也应该对数据的个人隐私给予更多的关注和保护,加强监管,防止恶意侵害 [3]。总之,在大数据时代,保护个人...

华为,一个录音要照片和文件权限干什么?
我需要把录音文件存在手机里,既然要存在你手机里,就需要你授权,获取文件存储权限才能存到你手机里。 再进一步解释一下,随着手机安全和管理权限管理越来越严格,只要涉及存储等安全权限都需要用户授权,软件开发者是不可能在用户不知情的情况下访问手机存储的,否则你的安全和隐私何在?这么一讲你就应该明白了吧?还不是...

紧急求助,关于文件System Volume Information的问题,急急急!!!_百度...
1、空间不足问题:随着用户使用系统时间的增加,还原点会越来越多,导致硬盘空间越来越少,最后还要被警告“磁盘空间不足”.2、病毒保护伞(安全问题):由于NTFS的分区里该目录只有SYSTEM权限,导致杀毒软件没有权限查杀藏匿于该目录的病毒。3、病毒保护伞(安全问题)解决方案:阻止“System Volume ...

高手何在!IIS 5.1安装后localhost要求输入密码
原因:由于安全性能优越IE7.0的internet默认采用的“用户被询问是否允许带参数加载或编码控件”选项,也就是总是要验证用户是否有参数加载,而IIS默认采用的匿名登录不进行任何验证,而前后的internet和IIS的设置矛盾,ie7的权限优先于iis所以冲突导致总是要密码验证。解决办法 :开始-运行-gpedit.msc-回车...

为什么我的微信附近的人不见了?
《微信附近的人不见了,原因何在?》在当今社交网络高度发达的时代,微信的“附近的人”功能曾为我们提供了一种独特的社交体验,让我们能轻松发现周围的人,拓展社交圈子。然而,有时我们会突然发现微信附近的人不见了,这究竟是为什么呢?以下是一些可能的原因。首先,最常见的原因之一是地理位置权限设置...

本人的U盘用WIN7的自带的加密工具BITLOCKER加密过后想解密,结果没有解...
格式化后能用不?如果能用,那就是用户权限的问题,如果某个硬盘设了用户权限,文件夹上会显示一把锁

知识管理系统的好处何在?
2. 工作效率提升:知识管理系统提供了便捷的知识检索和查询功能,使用户能够快速找到并利用所需的知识资源,节省了查找和整理信息的时间,提高了工作效率。3. 知识创新与协同:知识管理系统鼓励和促进知识的创新和协同。用户可以共享和讨论知识资源,提供反馈和建议,促进团队合作和创新能力的提升。4. 决策...

五河县13743957062: [转]如何在不提升用户权限的情况下,使普通用户执行xp - cmdshell存储过程 -
太峡六味: 从安全的角度来考虑,禁用xp_cmdsehll是最保险的,即使为了特殊目的而要求使用它,也最好能够编写一些实现这个特殊目的的用户存储过程,只在这个用户存储过程中使用xp_cmdshell,而普通用户只能使用这些用户存储过程.下面的示例显...

五河县13743957062: 如何在不提升用户权限的情况下,使普通用户执行sp - OACreate存储过程 -
太峡六味: -- 1. 具有执行sp_OA... 权限的登录USEmaster;GO -- 1.a. 建立登录CREATELOGINOA_loginWITHPASSWORD=N'Pwd.123', CHECK_POLICY=OFF;GO-- 1.b. 这个登录是内置的, 不允许登录, 这样可以减少安全隐藏DENYCONNECTSQL TOOA...

五河县13743957062: 如何在不是管理员的权限下装pe在硬盘重装系统 -
太峡六味: 如何让你拥有最高的系统权限? SYSTEM是至高无上的超级管理员帐户.默认情况下,我们无法直接在登录对话框上以SYSTEM帐户的身份登录到Windows桌面环境.实际上SYSTEM帐户早就已经“盘踞”在系统中了.想想也是,连负责用户...

五河县13743957062: 求一个在没有系统管理员权限下地普通权限用户里任意安装任何软件的办法?前提是不能破坏原来的管理员账号
太峡六味: 哥们,你没说你用的是什么系统,如果你用的是Linux系统,是没有这个问题的,如果用的是win7、win2008、win2003、windowsxp这些系统,,不破坏管理员的账号,这就说明你不知道管理员密码,而用普能账号,安装扩展名为 exe的文件会...

五河县13743957062: win2000中怎么让普通用户能安装EXE文件,前提是不加入到管理员组!那位大虾知道请回答! -
太峡六味: 右键运行方式,在里面选择高权限的用户!还有就是到控制面板(需要管理用户登录)去更改普通用户权限!具体操作搜一下就知道了!

五河县13743957062: 如何使普通用户在user用户下不需要输入密码的情况下以administrator身份运行某程序 -
太峡六味: @echo off start runas /env /user:%USERDOMAIN%\administrator "D:\TTPlayer\TTPlayer.exe" start mshta vbscript:createObject("WScript.Shell").AppActivate("C:\WINDOWS\system32\runas.exe")(window.close) start mshta vbscript:...

五河县13743957062: 电脑怎么修改普通账号的权限
太峡六味: 你的电脑是连接在一个域里面吧?如果你是一个域成员,想要获得更高的权限,就得和管理员说,不过我觉得如果不是工作的需要,管理员一般不会同意你获得更高的权限,这涉及到网络的安全问题.在 Windows server服务器里面,域用户和管理员的级别很多,你想要获得什么权限,就得要有什么级别,有机会的话看看Windows 的书吧,我长时间不看,这些东西都记不得了.楼上所说的administror的权限是最高的,但不可能分配给你的!

五河县13743957062: 在没有管理员权限下怎么样能提升普通权限到管理员权限?
太峡六味: 就是XP里面的,在开始菜单的运行里输入“control userpasswords2”,把当前用户的权限改成管理员就OK了

五河县13743957062: 怎么让user用户能够运行administrator用户的程序,前提是不提升user用户的权限 -
太峡六味: 有时需要在user用户下以administrator身份运行程序(出于安全的考虑,不想让...对于这个批处理的解释,也放到消息里面说吧! ...自己网管软件自己去学下喽...

五河县13743957062: 如何在计算机管理员权限下设置 普通的用户的权限
太峡六味: 我的电脑上右击->管理->本地用户和组->用户,在右边选择你要设置权限的用户,再右击属性. 你补充的问题,限制右键没必要吧,根据你的情况,建议你启用Guest帐户,应该能达到你的要求.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网