登录
注册
论坛
空间
帮助
会员
界面
简洁版本
在线
微软BI开拓者
数据库专区
SQL Server管理
xp_cmdshell
数据库专区
SQL Server管理
SQL Server开发
SQL Azure云数据库
商业智能综述区
BI探讨
BI项目管理
数据仓库专区
ETCL设计
SSIS使用与管理
SSIS二次开发
多维分析专区
多维建模
SSAS配置管理
MDX
SSAS二次开发
数据挖掘专区
数据挖掘建模
DMX
DM应用开发
前端应用专区
SharePoint Excel PowerPivot
SQL Server Reporting Services
PerformancePoint及其相关产品
其他
站务
灌水区
培训相关
求职招聘区
1
/ 1 页
1
跳转
页
查看:
2930
[技术文档] xp_cmdshell
stswordman
个人空间
组别:
中级会员
性别:
来自:
积分:
114
帖子:
46
注册:
2007-08-05
2008-08-04 10:58
|
只看楼主
树型
|
收藏
|
小
中
大
1
xp_cmdshell
xp_cmdshell
可以以
SQLSERVER的上下文(也就是启动sqlserver服务的windows账户)或代理账户的上下文(通过为xp_cmdshell设置凭据)调用操作系统的任意命令。 xp_cmdshell非常灵活,实际上我想说它实在太灵活了,用户可以通过xp_cmdshell执行任何命令,并且没有什么好的方法可以去限制这种灵活性,这简直为它的滥用大行方便。
在许多情况下,为了执行操作系统中的操作,人们开启了
xp_cmdshell
,并且授权那些非
sysadmin
角色的帐户可以去调用
xp_cmdshell
,但并没有认识到这些用户可以执行任意命令,在某些情况下,这些用户可以通过
xp_cmdshell
将自己加入到
sysadmin
角色甚至提升为
windows的管理员.很明显,这并不是我们想要的. Xp_cmdshell非常难控制,即使对它的使用进行了监测,也仍然会让攻击者在被逮住之前大用特用,而那时破坏可能已经发生了。
一般来讲,你绝对要避免使用
xp_cmdshell
,如果可能,你应该将其应用与其脱离。比较好的方式可能是使用
CLR,在开发人员可控的范围内创建一个可以执行”外部访问/不安全”(external access/unsafe)操作的程序集(最好使用
数字签名
来建立信任)来执行需要的操作。优点如下:
·
除了外部
/不安全的信任机制(也就是通过签名)的优点,该方法还不依赖于服务器设置
·
sysadmin
可以在需要时撤销这种信任关系而不会影响其他应用。
·
更好的粒度控制和孤立性
但是请记住
CLR并不能解决所有的问题. 如果要给予应用程序(该程序会以SQLSERVER启动账户的身份或者OS上的特权用户的身份执行执行操作)一定程度的信任,你要确保应用程序编码良好的,
没有其他安全漏洞(例如代码注入,
buffer溢出等等),并且是可控(也就是,不允许随意任意的命令或者打开系统中的文件等等)
如果数据库管理员不希望用户在SQLSERVER中使用CLR而将其禁用,可以使用其他的方式,创建一个T-SQL的存储过程,里面含有需要在操作系统上调用的命令,然后通过Execute as或者数字签名来暂时将调用者提升为sysadmin.使用这种方法是请确保不要有用户输入 (例如为调用命令而使用参数);或者如果你需要使用输入参数的命令,确保对输入进行验证
我列出一些和
SQL CLR,数字签名有关的链接,希望这些信息能够对你有所帮助
·
TRUSTWORTHY Database property
·
Security Considerations for Databases and Database Applications
·
Permissions Hierarchy
·
Understanding Context Switching
·
Execute As
·
Extending Database Impersonation using Execute As
·
Module Signing
·
CREATE ASSEMBLY
·
Creating an Assembly
非常感谢
Byham, Laurentiu Cristofor, Ruslan Ovechkin, Jack Richins
和
Sameer Tejani
的帮助
原文地址:
http://blogs.msdn.com/sqlsecurity/archive/2008/01/10/xp-cmdshell.aspx
发送短消息
查看公共资料
查找该会员全部帖子
UID:
370
精华:
0
威望:
0
金钱:
113.95 元
ProSrv-:
0
状态:
离线
stswordman@hotmail.com
Alligator
个人空间
组别:
新手上路
性别:
来自:
积分:
20
帖子:
2
注册:
2008-11-04
2008-11-18 16:39
|
树型
|
收藏
|
小
中
大
2
回复:xp_cmdshell
很不错的文章,谢谢!
发送短消息
查看公共资料
查找该会员全部帖子
UID:
3621
精华:
0
威望:
0
金钱:
20 元
ProSrv-:
0
状态:
离线
<<
上一主题
|
下一主题
>>
1
/ 1 页
1
跳转
页
论坛跳转...
数据库专区
SQL Server管理
SQL Server开发
SQL Azure云数据库
商业智能综述区
BI探讨
BI项目管理
数据仓库专区
ETCL设计
SSIS使用与管理
SSIS二次开发
多维分析专区
多维建模
SSAS配置管理
MDX
SSAS二次开发
数据挖掘专区
数据挖掘建模
DMX
DM应用开发
前端应用专区
SharePoint Excel PowerPivot
SQL Server Reporting Services
PerformancePoint及其相关产品
其他
站务
灌水区
培训相关
求职招聘区
内务
服务测试区
我的主题
我的帖子
我的精华
我的空间
帖子标题
空间日志
相册标题
作 者
我的主题
我的帖子
我的附件
我的精华
我的空间