SQLServer 安全加固:拒绝角色public使用扩展存储过程

SQLServer 安全加固:拒绝角色public使用扩展存储过程,第1张

概述当创建一个任意类型的登录账号是,sql server 默认会授予public服务器角色,或者数据库角色,并且不能撤销该角色。而public权限非常多,大部分是查询元数据的权限,其他还可以读取 *** 作系统的各种信息!所以sql server 一个普通的账号,都可以获取所有数据库和 *** 作系统信息了! 当前主要是禁用几个扩展存储过程的权限。 --查看当前授予的执行扩展存储过程的角色/用户use master

当创建一个任意类型的登录账号是,sql server 默认会授予public服务器角色,或者数据库角色,并且不能撤销该角色。而public权限非常多,大部分是查询元数据的权限,其他还可以读取 *** 作系统的各种信息!所以sql server 一个普通的账号,都可以获取所有数据库和 *** 作系统信息了!


当前主要是禁用几个扩展存储过程的权限。

--查看当前授予的执行扩展存储过程的角色/用户use mastergoSELECT A.name,schema_name(A.schema_ID) [schema],A.type,b.permission_name,B.type,B.state_desc,C.name,c.type_descFROM sys.all_objects AS A  INNER JOIN sys.database_permissions AS B ON B.major_ID=A.object_ID AND B.minor_ID=0 AND B.class=1  INNER JOIN sys.database_principals AS C ON C.principal_ID = B.grantee_principal_ID  where B.type = 'EX' AND A.name liKE 'XP_%' ORDER BY A.name

--主要几个扩展存储过程,是什么功能呢?xp_dirtreexp_fileexistxp_fixeddrivesxp_getnetnamexp_grantloginxp_instance_regreadxp_MSADEnabledxp_msverxp_qvxp_regreadxp_repl_convert_encrypt_sysadmin_wrapperxp_replposteorxp_revokeloginxp_sprintfxp_sscanfxp_sqlagent_enum_jobsxp_sqlagent_is_startingxp_sqlagent_notify----------------------------------------------------xp_dirtree :列出某磁盘下所有文件夹EXEC master.sys.xp_subdirs 'D:' EXEC master.sys.xp_dirtree 'D:',1 --depth --xp_fileexist :目录或者文件是否存在 EXEC master.sys.xp_fileexist 'D:$RECYCLE.BIN' --xp_fixeddrives : 获取磁盘的可用容量.  EXEC master.sys.xp_fixeddrives  --xp_getnetname : 获取sql服务器的名称.  EXEC master.sys.xp_getnetname --xp_grantlogin : 授予windows用户或组权限(sysadmin)EXEC master.sys.xp_grantlogin @loginame = N'NT AUTHORITY\SYstem',@logintype = N'admin'--xp_instance_regread : 读取注册表DECLARE @dir NVARCHAR(4000) EXEC master.sys.xp_instance_regread    N'HKEY_LOCAL_MACHINE',N'Software\Microsoft\MSsqlServer\Setup',N'sqlPath',@dir outputSELECT @dir--xp_MSADEnabled : (未知????)--xp_msver : sql Server 的版本信息EXEC master.sys.xp_msver--xp_qv : (未知????; 参考: sp_sysutility_mi_valIDate_enrollment_preconditions / sp_sqlagent_get_startup_info)--xp_regread : 读取注册表DECLARE @dir1 NVARCHAR(4000) EXEC master.sys.xp_regread     N'HKEY_LOCAL_MACHINE',@dir1 outputSELECT @dir1--xp_repl_convert_encrypt_sysadmin_wrapper : 请求证书签名(未知????)DECLARE @MK INTEXEC @MK=master.sys.xp_repl_convert_encrypt_sysadmin_wrapper @password = N''SELECT @MK--xp_replposteor : (未知????)--xp_revokelogin : 删除windows用户或组账户EXEC master.sys.xp_revokelogin @loginame = N'NT AUTHORITY\SYstem'--xp_sprintf :设置一系列字符和值的格式并将其存储到字符串输出参数中DECLARE @string varchar (255)EXEC master.sys.xp_sprintf @string OUTPUT,'INSERT INTO %s VALUES (%s,%s)','tab','1','''kk'''PRINT @string--xp_sscanf : 将数据从字符串读入每个格式参数所指定的参数位置DECLARE @filename varchar (20),@message varchar (20),@name varchar (20)EXEC master.sys.xp_sscanf 'sync -b -fauthors10.tmp -rrandom 123','sync -b -f%s -r%s 1%s',@filename OUTPUT,@message OUTPUT,@name OUTPUTSELECT @filename,@message,@name--xp_sqlagent_enum_jobs : 作业运行状态  (参考: sp_get_composite_job_info/sp_syscollector_get_collection_set_execution_status )EXEC master.sys.xp_sqlagent_enum_jobs 1,'sa'--xp_sqlagent_is_starting : 代理是否运行(返回都为0,似乎无效,参考:sp_is_sqlagent_starting)DECLARE @retval INTEXEC master.sys.xp_sqlagent_is_starting @retval OUTPUTSELECT @retval--xp_sqlagent_notify : (参考: sp_sqlagent_notify/sp_attach_schedule/sp_add_jobschedule  )

拒绝public权限使用前6个! 未知的还是暂时不禁用.

xp_dirtree :列出某磁盘下所有文件夹
xp_fileexist :目录或者文件是否存在 
xp_grantlogin : 授予windows用户或组权限(sysadmin)
xp_instance_regread : 读取注册表
xp_regread : 读取注册表
xp_revokelogin : 删除windows用户或组账户

xp_MSADEnabled : (未知????)
xp_qv : (未知????
xp_repl_convert_encrypt_sysadmin_wrapper : 请求证书签名(未知????)
xp_replposteor : (未知????)


--生成脚本执行!不回收权限,给予拒绝(deny)权限,以后可方便知道更改了哪些.use masterGOSELECT A.name,'DENY '+b.permission_name ColLATE Chinese_PRC_CI_AS +' ON '+A.name+' TO '+C.nameFROM master.sys.all_objects AS A  INNER JOIN master.sys.database_permissions AS B ON B.major_ID=A.object_ID AND B.minor_ID=0 AND B.class=1  INNER JOIN master.sys.database_principals AS C ON C.principal_ID = B.grantee_principal_ID  where B.type = 'EX' AND A.name IN('xp_dirtree','xp_fileexist','xp_grantlogin','xp_instance_regread','xp_regread','xp_revokelogin')ORDER BY A.name  GO--查看更多!SELECT A.name,C.nameFROM master.sys.all_objects AS A  left JOIN master.sys.database_permissions AS B ON B.major_ID=A.object_ID AND B.minor_ID=0 AND B.class=1  left JOIN master.sys.database_principals AS C ON C.principal_ID = B.grantee_principal_ID  ORDER BY A.name  
总结

以上是内存溢出为你收集整理的SQLServer 安全加固:拒绝角色public使用扩展存储过程全部内容,希望文章能够帮你解决SQLServer 安全加固:拒绝角色public使用扩展存储过程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1170833.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存