Microsoft SQL Server是微软公司开发的一套商业数据库系统,应用在Microsoft Windows系统下。SQL Server 7.0和2000带了一个助手服务 - SQL Server Agent。这个代理程序用来在数据库意外停止之后重启之,另外,它也负责处理提交的作业。 通过提交一些作业让Agent执行,可能导致低权限用户执行它们进而完全控制数据库系统。 通过msdb数据库中的一些存储过程例如sp_add_job、sp_add_job_step等等,用户就可以提交作业让SQL Server Agent执行。由于SQL Server Agent在一个更高的权限下运行,通常是Local System权限,必须保证当提交一个T-SQL作业时它不能被滥用。因此管理员可以使用如下命令来防止这种攻击: SETUSER N\'\'guest\'\' WITH NORESET 这样普通的低级别用户将不能提交这样的作业(执行系统命令): exec master..xp_cmdshell \'\'dir\'\' 但这种限制很容被绕过,只需要在SQL Server Agent丢弃权限后重新连接到SQL Server即可。而结合\"Microsoft SQL Server扩展存储过程权限提升漏洞\"( http://www.nsfocus.com/index.php?act=sec_bug&do=view&bug_id=3313 )中提到的几个扩展存储过程即可绕过这种限制。
Microsoft SQL Server是微软公司开发的一套商业数据库系统,应用在Microsoft Windows系统下。SQL Server 7.0和2000带了一个助手服务 - SQL Server Agent。这个代理程序用来在数据库意外停止之后重启之,另外,它也负责处理提交的作业。 通过提交一些作业让Agent执行,可能导致低权限用户执行它们进而完全控制数据库系统。 通过msdb数据库中的一些存储过程例如sp_add_job、sp_add_job_step等等,用户就可以提交作业让SQL Server Agent执行。由于SQL Server Agent在一个更高的权限下运行,通常是Local System权限,必须保证当提交一个T-SQL作业时它不能被滥用。因此管理员可以使用如下命令来防止这种攻击: SETUSER N\'\'guest\'\' WITH NORESET 这样普通的低级别用户将不能提交这样的作业(执行系统命令): exec master..xp_cmdshell \'\'dir\'\' 但这种限制很容被绕过,只需要在SQL Server Agent丢弃权限后重新连接到SQL Server即可。而结合\"Microsoft SQL Server扩展存储过程权限提升漏洞\"( http://www.nsfocus.com/index.php?act=sec_bug&do=view&bug_id=3313 )中提到的几个扩展存储过程即可绕过这种限制。