Скрытые возможности MS SQL: расширенная функциональность или уязвимость системы?Источник: realcoding Константин Марченко
Скрытые возможности MS SQL: расширенная функциональность или уязвимость системы?Цель данной статьи - обратить внимание администраторов баз данных и специалистов по информационной безопасности на данную проблему и показать один из вариантов реализации атаки на СУБД MS SQL, в результате которой потенциальный нарушитель получит доступ не только к хранимой в базе данных информации, но и полный контроль над сервером СУБД. Краткий обзор СУБД MS SQL 2000Рассмотрим более подробно конфигурацию MS SQL по умолчанию. В данной СУБД есть несколько служебных баз данных, создаваемых в процессе его установки (master, tempdb, model, msdb, pubs) и тестовая база данных (Northwind).Наиболее важная из них - master. Она обеспечивает поддержку основных функций сервера, в ней хранятся все системные настройки сервера, учетные записи пользователей, роли, сведения о базах данных и - самое важное для нас - хранимые процедуры. Хранимая процедура - это набор скомпилированных команд T-SQL, доступных напрямую SQL-серверу. Команды размещаются в хранимой процедуре и выполняются как одно целое или подпрограмма по аналогии с другими языками программирования. Хранимые процедуры находятся на сервере СУБД и используются, когда необходимо часто выполнять повторяющиеся в определенном порядке запросы к серверу MS SQL. Расширенные хранимые процедуры - это разновидность обычных хранимых процедур, но в них можно использовать обращения к подпрограммам, написанным на языке С или С++, что позволяет расширить возможности T-SQL. Обычно расширеннные хранимые процедуры представляются в виде динамических библиотек. Имена этих процедур как правило начинаются с префикса xp (eXtended Procedure). Вместе с MS SQL поставляется большой набор расширенных хранимых процедур. Наиболее интересная из них - xp_cmdshell. Она предоставляет доступ к командной строке операционной системы. Так как данная хранимая процедура обладает широкими возможностями, то по умолчанию доступ к ней разрешен только владельцу базы данных master, то есть пользователю, наделенному ролью "Администратор базы данных". Теперь рассмотрим способы аутентификации в MS SQL. Первый вариант - аутентификация средствами Windows, второй - аутентификация средствами самой СУБД (в том случае если при установке MS SQL был выбран смешанный режим аутентификации). В первом варианте аутентификация пользователя проводится средствами операционной системы, и вход осуществляется с использованием учетных данных пользователя ОС Windows. Стоит отметить, что в этом случае при установке MS SQL всем пользователям операционной системы, входящим в группу "Администраторы", автоматически назначается роль "Администратор базы данных". Во втором случае аутентификацию проводит СУБД, используя собственную базу учетных записей пользователей. При установке MS SQL будет создана учетная запись "sa" с ролью "Администратор базы данных". ПроникновениеРассмотрим сценарий атаки на сервер с установленным MS SQL Server 2000. Потенциальному нарушителю необходимо получить доступ к MS SQL с ролью "Администратор базы данных", а это может легко произойти если:
Затем потенциальный нарушитель может выполнить расширенную хранимую процедуру xp_cmdshell, указав ей в качестве параметра команду операционной системы, создающую пользователя и включающую его в группу "Администраторы", чтобы получить полный доступ к серверу, на котором установлена СУБД. Для этого необходимо запустить SQL Server Enterprise Manager, входящий в состав MS SQL Server (ссылка на данную оснастку находится в Пуск->Программы->Microsoft SQL Server). Далее в Enterprise Manager требуется создать новое поключение к SQL-серверу, и, после установления связи с сервером, создать новое представление (view) для базы данных master. В появившемся окне, предназначенном для ввода SQL-запросов, можно ввести и выполнить следующие команды для создания нового пользователя операционной системы с правами администратора:
Если сервер, на котором установлена СУБД MS SQL, выполняет также и другие функции (контроллер домена, услуги корпоративной почты, хранение архива документов), потенциальный ущерб от проникновения на данный сервер при помощи атаки на MS SQL существенно увеличивается. РекомендацииДля устранения описанной уязвимости и снижения риска от проникновения нарушителя на сервер с установленной СУБД MS SQL рекомендуется:
Константин Марченко, |