一、注意点

1、在SQLServer中,有些系统扩展存储过程,是有风险,需要取消public角色的执行权限。

2、从SQLServer2005开始就不能通过sp_dropextendedproc 删除系统扩展存储过程。

3、系统扩展存储过程是不能被删掉的,也没办法禁用(sysadmin角色的用户肯定拥有执行的权限),所以如果有公司基线要求,我们要做的是拒绝public角色拥有这些扩展存储过程的执行权限。

4、一些高风险的存储过程如下:

  xp_cmdshell:以操作系统命令行解释器的方式执行给定的命令字符串,并以文本行的形式返回所有输出;

  xp_readerrorlog:读取SQLServer的错误日志;

  xp_snmp_getstate:获取snmp状态信息;

  xp_sprintf:格式化数据;

  xp_sqlinventory:查询SQLServer清单;

  xp_sqlregister:对注册表的读取和编辑;

  xp_sqltrace:SQL跟踪记录;

  xp_servicecontrol:服务管理控制,该存储过程允许用户启动、停止、暂停或运行服务;

  xp_sscanf:从字符串中读取数据数据到每个格式参数给出的参数位置;

  xp_availablemedia:该存储过程可以查看系统上可用的磁盘驱动器的空间信息;

  xp_subdirs:通过xp_dirtree,xp_subdirs将在一个给定的文件夹中显示所有子文件夹;

二、操作步骤

1.查看这个扩展的存储过程对象
命令:
select name,id from sysobjects where name in ('xp_cmdshell','xp_readerrorlog','xp_snmp_getstate','xp_sprintf',
'xp_sqlinventory','xp_sqlregister','xp_sqltrace','xp_servicecontrol','xp_sscanf','xp_availablemedia','xp_subdirs')

2.查看主体public的权限
命令:
select * from sys.database_permissions where grantee_principal_id = DATABASE_PRINCIPAL_ID('public')

3.查看一些public角色是否拥有一些指定的扩展存储过程的执行权限
注:查询扩展存储过程是否符合基线的最终SQL
命令:
select name from sysobjects where id in(
select major_id from sys.database_permissions where grantee_principal_id = DATABASE_PRINCIPAL_ID('public')
and permission_name = 'EXECUTE' and state_desc!='DENY'
and major_id in (
select id from sysobjects where name in ('xp_cmdshell','xp_readerrorlog','xp_snmp_getstate','xp_sprintf',
'xp_sqlinventory','xp_sqlregister','xp_sqltrace','xp_servicecontrol','xp_sscanf','xp_availablemedia','xp_subdirs')
)
)

修改基线方式:直接在图形化界面,把执行的权限去掉就行

27-SQLServer系统扩展存储过程的更多相关文章

  1. SQL Server 禁用扩展存储过程

    概述 扩展存储过程是 SQL Server 实例可以动态加载和运行的 DLL.扩展存储过程是使用 SQL Server 扩展存储过程 API 编写的,可直接在 SQL Server 实例的地址空间中运 ...

  2. JSON序列化及利用SqlServer系统存储过程sp_send_dbmail发送邮件(一)

    JSON序列化 http://www.cnblogs.com/yubaolee/p/json_serialize.html 利用SqlServer系统存储过程sp_send_dbmail发送邮件(一) ...

  3. sqlserver 只有函数和扩展存储过程才能从函数内部执行

    一个SQLServer的自定义函数中调用一个自定义的存储过程,执行此函数后发出如下提示:“只有函数和扩展存储过程才能从函数内部执行". 原因:函数只能使用简单的sql语句,逻辑控制语句,复杂 ...

  4. SqlServer扩展存储过程

    1. 扩展存储过程xp_cmdshell用法: --1.启用 SP_CONFIGURE RECONFIGURE GO SP_CONFIGURE RECONFIGURE GO --2.用法 master ...

  5. SQLSERVER系统视图,系统表,sys.sql_modules视图

    SQLServer中提供了相当丰富的系统视图,能够从宏观到微观,从静态到动态反应数据库对象的存储结果.系统性能.系统等待事件等等.同时 也保留了与早期版本兼容性的视图,主要差别在于SQLServer2 ...

  6. SQLSERVER系统视图 sql server系统表详细说明

    参考 https://www.cnblogs.com/luluping/archive/2012/11/05/2754639.html https://www.cnblogs.com/litubin/ ...

  7. SQLServer系统视图sysobjects中type字段说明

    SQLServer中系统视图sysobjects中type字段的对象类型: AF = 聚合函数 (CLR) C = CHECK 约束 D = DEFAULT(约束或独立) F = FOREIGN KE ...

  8. sql server 常用的扩展存储过程

    sql server 里面提供了丰富的系统存储过程来辅助我们管理数据库以及开发.今天分享介绍一些常用的数据库扩展存储过程 xp_cmdshell 这个大家都比较熟悉了,使用xp_cmdshell 可以 ...

  9. SQL Server里一些未公开的扩展存储过程

    SQL Server里一些未公开的扩展存储过程 [转帖] 博客天地 www.inbaidu.com SQL Server里一些未公开的扩展存储过程 扩展存储过程(xp)是直接运行在SQL Server ...

随机推荐

  1. v-bind 绑定属性

    与mustache相区别,他是对内容(content内部)进行修改的.v-bind的语法糖写法是   : v-bind 动态绑定class属性:v-bind:class="对象名" ...

  2. 纯java代码搭建ssm

    参考: https://blog.csdn.net/Smile__1/article/details/103394460

  3. Java基础---Java常量

    常量:在程序运行期间不变的量 分类: 类型  含义 数据举例 整数常量 所有整数 0,1, 567, -9 小数常量 所有小数 0.0, -0.1, 2.55 字符常量 单引号引起来,只能写一个字符, ...

  4. Python_Modbus_RTU_通讯Demo

    之前利用Python进行Modbus_TCP进行数据接收,本次需要利用串口进行数据传输,学习Modbus_RTU的简单实现 首先要在创建两个虚拟串口,利用VSPD工具即可.在一台电脑上实现数据的发送和 ...

  5. RESTful接口开发规范

    最近在研究restful,公司开发要使用,所以自己就去网上找了好些资料,并整理了一套公司开发的接口规范.当然,我也只是刚刚入坑.还不是很全面.但是这就是一个过程.一点点,总会好起来的.以下是就是RES ...

  6. python中内存地址

    遇到一个朋友,给我提了一个问题:python中的两个相同的值,内存地址是否一样? 当时印象里有这样一句话:Python采用基于值的内存管理模式,相同的值在内存中只有一份 于是张嘴就说是一样的 朋友说不 ...

  7. asp.net core-16.EF Core Migration

    左边的是基于visual studio code 右边的是基于visual studio 如果想要在数据库的AspNetUsers表里添加一列 然后可以发现 在Data下的Migrations文件夹下 ...

  8. ubuntu maven jdk

    https://blog.csdn.net/zrgood123/article/details/82894447 这里是将环境变量配置在etc/profile,即为所有用户配置JDK环境. 使用命令打 ...

  9. centos从安装到环境配置

    1.安装centos6.5    http://jingyan.baidu.com/article/25648fc1a235c99191fd0008.html 2.配置网络ip   http://ji ...

  10. Python中的一些常用模块1

    OS模块,sys模块,time模块,random模块,序列化模块 os模块是与操作系统交互的一个接口 OS模块简单的来说是一个Python的系统编程操作模块,可以处理文件和目录这些我们日常手动需要做的 ...