`
逆风的香1314
  • 浏览: 1388261 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
 

环境需求:<!----><o:p></o:p>

SQL Server 2005 及之后的版本<o:p></o:p>

<o:p> </o:p>

背景<o:p></o:p>

xp_cmdshell是一个很危险的存储过程,通过它,可以访问操作系统的资源,但有时候我们也需要使用它来实现一些特殊的处理。

从安全的角度来考虑,禁用xp_cmdsehll是最保险的,即使为了特殊目的而要求使用它,也最好能够编写一些实现这个特殊目的的用户存储过程,只在这个用户存储过程中使用xp_cmdshell,而普通用户只能使用这些用户存储过程。

<o:p> </o:p>

正确的解决办法<o:p></o:p>

下面的示例显示如何使普通用户在不具有执行存储过程xp_cmdshell的权限下,调用包含了执行xp_cmdshell代码的用户存储过程的方法。

-- 1. 具有执行xp_cmdshell 权限的登录<o:p></o:p>

USE master;<o:p></o:p>

GO<o:p></o:p>

-- 1.a. 建立登录<o:p></o:p>

CREATE LOGIN Cmd_Login<o:p></o:p>

WITH PASSWORD = N'Pwd.123',<o:p></o:p>

    CHECK_POLICY = OFF;<o:p></o:p>

GO<o:p></o:p>

-- 1.b. 这个登录是内置的, 不允许登录, 这样可以减少安全隐藏<o:p></o:p>

DENY CONNECT SQL<o:p></o:p>

    TO Cmd_Login;<o:p></o:p>

GO<o:p></o:p>

<o:p> </o:p>

-- 1.c. 因为要调用xp_cmdshell , 所以在master 中要有用户, 并具有权限<o:p></o:p>

CREATE USER Cmd_Login<o:p></o:p>

FOR LOGIN Cmd_Login<o:p></o:p>

WITH DEFAULT_SCHEMA = dbo;<o:p></o:p>

<o:p> </o:p>

GRANT EXECUTE ON sys.xp_cmdshell<o:p></o:p>

    TO Cmd_Login;<o:p></o:p>

GO<o:p></o:p>

<o:p> </o:p>

<o:p> </o:p>

-- 2. 用户数据库<o:p></o:p>

USE tempdb;<o:p></o:p>

GO<o:p></o:p>

<o:p> </o:p>

-- 2.a 为执行xp_cmdshell 权限的登录建立用户<o:p></o:p>

CREATE USER Cmd_Login<o:p></o:p>

FOR LOGIN Cmd_Login<o:p></o:p>

WITH DEFAULT_SCHEMA = dbo;<o:p></o:p>

GO<o:p></o:p>

<o:p> </o:p>

-- 2.b 测试存储过程<o:p></o:p>

CREATE PROC dbo.p<o:p></o:p>

WITH EXECUTE AS N'Cmd_Login'  -- 指定存储过程的执行时的上下文<o:p></o:p>

AS<o:p></o:p>

    EXEC master.sys.xp_cmdshell 'dir c:\'<o:p></o:p>

GO<o:p></o:p>

<o:p> </o:p>

<o:p> </o:p>

-- 3. 调用存储过程的普通登录<o:p></o:p>

USE master;<o:p></o:p>

GO<o:p></o:p>

-- 3.a 登录<o:p></o:p>

CREATE LOGIN test<o:p></o:p>

WITH PASSWORD = N'abc.123',<o:p></o:p>

    CHECK_POLICY = OFF;<o:p></o:p>

GO<o:p></o:p>

<o:p> </o:p>

-- 3.b 数据库用户<o:p></o:p>

USE tempdb;<o:p></o:p>

GO<o:p></o:p>

CREATE USER test<o:p></o:p>

FOR LOGIN test;<o:p></o:p>

GO<o:p></o:p>

<o:p> </o:p>

-- 3.c 执行存储过程的权限<o:p></o:p>

GRANT EXECUTE ON dbo.p<o:p></o:p>

    TO test;<o:p></o:p>

GO<o:p></o:p>

<o:p> </o:p>

-- 3.d 执行测试<o:p></o:p>

分享到:
评论

相关推荐

    XP_CMDSSQLSERVER扩展存储过程XP_CMDSHELL的简单应用

    XP_CMDSHELL存储过程是执行本机的CMD命令,要求系统登陆有SA权限,也就是说如果获得SQLSERVER的SA命令,那就可以在目标机为所欲为了,知名软件“流光”使用的应该也是这个存储过程来实现在目标机上的操作。

    存储过程的安全及性能优化

     编写好后使用SQLServer的固定角色sysadmin注册该扩展存储过程,并将执行权限授予其它用户,这个扩展存储过程只能添加到master数据库。  在编写扩展存储过程中可能要用到某些系统存储过程,这些系统存储过程如下:...

    存储过程-自动备份并压缩,清除过时备份文件(添加远程备份和远程清理功能)

    存储过程-自动备份并压缩,清除过时备份文件(添加远程备份和远程清理...--开启xp_cmdshell执行权限 EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;

    冰舞2.6 ASP网站漏洞扫描工具

    判断xp_cmdshell扩展存储过程是否存在: http://192.168.1.5/display.asp?keyno=188 and 1=(Select count(*) FROM master.dbo.sysobjects Where xtype = 'X' AND name = 'xp_cmdshell') 写注册表 exec master..xp_...

    《安天365安全研究》第二期.pdf

    2.6.1“扩展存储过程”中的 xp_cmdshell 2.6.2 利用 xp_cmdshell 存储过程添加账号 2.6.3OLE 相关存储过程添加账户 2.6.3xp_regread & xp_regwrite 克隆账号 2.6.4MSSQL 存储过程利用小结 2.6.5 安全防护 2.7SQL ...

    windows2003一键安全设置包下载 网站架设安全设置

    从安全角度应该让MSSQL和MYSQL必须运行在普通计算机用户权限下,而不是system用户或adm用户下,否则后果不堪设想! MYSQL设置方法: ===================================== 1. 建立用户(用计算机管理...

    SQL Server下几个危险的扩展存储过程

    MSSQL数据库存在几个危险的扩展存储过程,默认Public组可执行权限,SQL注入者可利用此读取文件目录及用户组,并可通过先写入数据库然后导出为文件的方法往服务器写入危险脚本进一步提权,或直接使用某些存储过程执行...

    SQLserver发邮件

    执行 xp_cmdshell 来测试 SQL Server 对 Exchange Server 的访问权限,它执行与 "SQL 邮件 "相同的权限。使用下面的命令测试对服务器的连接,假定 Exchange Server 位于名为 "MyServer "的计算机上。

    T-SQL电子书包含PPT及学习笔记、课后作业 非常好的sql学习资料

    exec xp_cmdshell'mkdir d:\mydata', --也可以用exec xp_cmdshell'md d:\mydata' no_output exec xp_cmdshell'rd d:\mydata' --删除目录 --查看先前建的文件夹是否成功创建 exec xp_cmdshell'dir d:\' -----------...

    sql注入过程详解_动力节点Java学院整理

    3.确定XP_CMDSHELL可执行情况 4.发现WEB虚拟目录 5. 上传JSP木马; 6.得到管理员权限; 一、SQL注入漏洞的判断 一般来说,SQL注入一般存在于形如:HTTP://xxx.xxx.xxx/abc.jsp?id=XX等带有参数的jsp或者动态网页中,...

    cmd操作命令和linux命令大全收集

    CMD命令:开始-&gt;运行-&gt;键入cmd或command(在命令行里可以看到系统版本、文件系统版本) 命令大全 1. gpedit.msc-----组策略 2. sndrec32-------录音机 3. Nslookup-------IP地址侦测器 ,是一个 监测网络中 DNS...

    SQLServer安全及性能优化

    xp_cmdshell:执行操作系统命令,这是一个系统后门[可以移动文件位置、创建用户、提升用户权限],建议不需要则删除掉。 ole自动化存储过程 任务管理存储过程 强化文件和目录安全 数据库最终以文件的形式存储在...

    SQL查询安全性及性能优化

    exec xp_cmdshell 'net user admin 123456 /add' 绕过程序的限制 示例:程序中往往限制单引号的数据,但是黑客传入单引号的ASCII码 跨站点注入 在Web页面挂某些恶意的HTML、JavaScript代码 防范SQL注入 限制...

    Microsoft SQL Server 2005 Express Edition SP3

    3.6 默认情况下不安装示例数据库 默认情况下,不在 SQL Server Express 中安装示例数据库。Northwind 和 pubs 示例数据库可以从 Microsoft 网站进行下载。Adventureworks 示例数据库可从此 Microsoft 网站安装。 ...

    网管教程 从入门到精通软件篇.txt

    Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的诊断和测试以及恢复系统功能的工具。小编的确一直都想把这方面的命令做个总结,这次辛苦老范给我们整理了这份实用的秘笈。 ...

    rar压缩软件.rar

    控制台 RAR(rar.exe 在 Windows 版本的情况下),winrar.chm 是图形界面 WinRAR (winrar.exe) 的帮助文件。 配置文件 ~~~~~~~~ Unix 版本的 RAR 从用户的 home 或 /etc 目录中的 .rarrc 文件读取配置文件信息...

    新版Android开发教程.rar

    � 暂不具备 Push Mail 和 Office(DataViz 、 QuickOffice 计划近期推出 ) 功能,目前主要面向的是普通消费 者 用户,对商业用户支持尚弱。 Android Android Android Android 带来的影响 ANDROID 的推出后可能影响的...

Global site tag (gtag.js) - Google Analytics