Построение защищенных Web-приложений на основе IIS и MS SQL Server

Автор: Пользователь скрыл имя, 12 Июня 2012 в 15:50, курсовая работа

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

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

Работа содержит 1 файл

kurs.docx

— 5.59 Мб (Скачать)

Как разработчик Макс хорошо знал, что ТСР-порт 1433 по умолчанию используется для подключения к серверу SQL в  библиотеке для работы с сокетами по протоколу TCP/IP. Он запустил утилиту osql.ехе, которая поставляется с пакетом MSDE (Microsoft Data Engine), и попытался подключиться, использовав пароль, который существовал во время его работы в компании.

C:\5-oeql.exe -S 10.2.3.13 -U dev -Р М34яЗк35

Login failed for user "dev.

He вышло. Администраторы подготовились заранее и сменили пароли после увольнения Макса, следуя политике безопасности компании. Но Макс не остановился, а задумался, что же делать дальше. Ему нужен был способ получить пароль учетной записи sa. Эта учетная запись дает административный доступ к серверу SQL, а в конфигурации по умолчанию прямая атака даже не оставит следов в журналах. Макс поискал в Internet и обнаружил утилиту sqlbf, которая обещала найти пароль, если он присутствует в используемом словаре. Настроенный несколько скептически, Макс установил и запустил утилиту, хотя, зная политику безопасности компании X, предполагал, что пароль должен быть очень сложным, — не лучшая цель для атаки по словарю.

Он помнил, что данные учетной  записи sa хранятся в файле global.asa каталога Webroot. Конечно, запросы файла global.asa через браузер обычно запрещены, но Макс просмотрел свою любимую базу программ атаки и попробовал использовать для получения исходного текста файла недостаток нескольких версий сервера IIS, связанный с наличием ошибки + . htr. На втором сервере в ответ на запрос была возвращена пустая страница, но когда он просмотрел источник страницы, увидел следующий текст.

"Provider-SOLOLEDB.1;Persist Security Info-True:

u.id=sa;pvjd=m2ryh2dallttleLanib; Initial Catalog=data;Data Source=10.2.3.12;' End Sub </CRPT>

Макс не мог поверить своим глазам. Конечно, он сразу запустил утилиту  osql и ввел только что полученные данные (Имя пользователя: sa, Пароль= m2ryh2dallttleLanib). Он проверил сервер, просто чтобы убедиться в наличии доступа к базе пользовательских запросов. Пользуясь хранимой процедурой xp_cmdshell, Макс получил возможность узнать, какие соединения может устанавливать сервер.

C:\soBql.exe -S 10.2.3.12 -П аа. -V m2ryh2dallttleLanib -Q % "jcp^emdahell 'cemte print'"

В результате выполнения запроса он получил таблицу маршрутизации  сервера, к которому он подключился, и понял, что это машина с несколькими  сетевыми адаптерами, один из которых  соединен с внутренней сетью. Естественно, пакеты из Internet не могли напрямую попадать во внутреннюю сеть, но сервер SQL должен иметь возможность устанавливать внутренние соединения. Почему бы и нет? Персонал обслуживания клиентов должен иметь доступ к запросам клиентов, а значит, они должны иметь доступ к соответствующей базе.

Теперь Макс должен был подтвердить  привилегии для системы безопасности операционной системы, он воспользовался следующей командой:

 

C:\i-osql.exe -S 10.2.3.12 -О sa -Р m2ryn2dallttleLamb -Q Ч> "хр_спк1вЬа11 'net config workstation,л

Computer name WSQL-DMZ Full Computer name SQL-DMZ User name Administrator

Workstation active on

KetbiosSmb (000000000000)

NetBT_Tcpip_(9F09B6FC-BBF2-4C04-SCA4-8AABFDB18DAl) (0080C77B8A3D)

Software version Windows 2000

Workstation domain WORKGROUP Workstation Domain DNS Name (null) Logon domain SQL-DM2

COM Open Timeout (sec| 0 COM Send Count {byte] 16 COM Send Timeout (msec) 250

 

По значению поля с именем пользователя Макс понял, что сервер SQL работает от имени локальной учетной записи Administrator. Вполне возможно, что это переименованная учетная запись пользователя с более ограниченными правами, поэтому Макс проверил, действительно ли учетная запись принадлежит локальному администратору.

 

C:\sosql.exe -S 10.2.3.12 -О ва -Р tt2ryh2dellttlaLamb -Q Ь Bxp_emdshell 'net localgroup administrators'"

Alias name administrators

Comment Administrators have complete and unrestricted access

to the computer/domain

Members

Administrator

The command completed successfully.

 

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

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

Несмотря на политику безопасности в компании X и попытки следовать  этой политике, в разработанных правилах есть несколько серьезных просчетов. Наиболее важные проблемы:

  • отсутствие блокирования брандмауэром ТСР-порта 1433;
  • использование сервером SQL учетной записи с уровнем прав, большим, чем это необходимо;
  • неправильная с точки зрения защиты конфигурация IIS-серверов и отсутствие исправлений (чем можно было предотвратить использование ошибки +. htr);
    • незащищенность внутренней сети от вредоносных действий внутри демилитаризованной зоны.

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

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

В рассмотренном примере Макс смог получить данные учетной записи сервера SQL через сервер IIS, поскольку администратор  не соблюдал необходимых правил применения "горячих исправлений" и/или пакетов обновления. Когда приходится работать в системе с закрытым исходным кодом, такой как система семейства Windows NT, невозможно самостоятельно исправлять ошибки защиты. Это кажется некоторым ограничением, но компания Microsoft прилагает все усилия, обеспечивая оперативный выпуск исправлений и обновлений своих программ. Все, что теперь нужно, — использовать их. Даже несмотря на то, что это вполне логично, администраторы снова и снова не следят за обновлениями. Это стратегическая ошибка, в политику обеспечения безопасности обязательно должно входить своевременное и упорядоченное использование всех выпускаемых исправлений и обновлений, связанных с защитой.

В случае ошибки + . htr даже не требовалось устанавливать обновление. В списках обязательных действий для обеспечения безопасности от Microsoft (Microsoft's IIS Security Checklists) есть подробные инструкции по отключению связей файлов сценариев с неиспользуемыми библиотеками ISAPI, этими действиями блокируется использование ошибки + .htr.

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

Сетевые библиотеки (Network libraries, netlibs) — это механизмы, посредством которых клиенты и серверы SQL обмениваются пакетами данных. Один экземпляр сервера SQL Server может поддерживать одновременно несколько сетевых библиотек, ожидающих подключения, а версия программы SQL Server 2000 может теперь поддерживать несколько экземпляров сервера SQL Server одновременно — все они могут ожидать соединения с разными сетевыми библиотеками. По умолчанию включены и ожидают соединения протокол TCP/IP и именованные каналы (как и в многопротокольном сервере SQL Server 7.0). Это значит, что стандартную инсталляцию программы SQL Server можно легко обнаружить с помощью сканирования портов по используемому по умолчанию ТСР-порту 1433.

 

 

 

 

2.5.2 Базовые утилиты запроса SQL

 

 

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

  1. Query Analyzer. Хакинг SQL Server 2008 не бывает проще, чем при использовании программы Query Analyzer (isqlw.ехе), это клиент SQL с графическим интерфейсом, который поставляется с программой SQL Server 2000. Программа Query Analyzer может стать хорошим отправным пунктом для знакомства с SQL для тех, кому нужна простота, присущая графическому интерфейсу.

Самое сложное в использовании  утилиты Query Analyzer — сконфигурировать ее для работы с нужной сетевой библиотекой перед подключением к серверу. Это делается посредством утилиты Client Network Utility (файл cliconfig.ехе, устанавливаемый с клиентским пакетом SQL) — необходимо запустить ее, выбрать и подключить нужную сетевую библиотеку. Подключен протокол TCP/IP, наиболее часто используемая для атак сервера SQL Server сетевая библиотека (так как все сейчас работают по протоколу TCP/IP). Программа SQL Client Network Utility проверяет доступность сетевой библиотеки до того, как подключаться к атакуемому серверу SQL с помощью других утилит SQL.

После того как включена необходимая  сетевая библиотека, запустите утилиту  Query Analyzer и попытайтесь установить соединение с выбранным сервером (меню File->Connect..., если при запуске не появится диалог подключения).

После того как хакер подключится  под видом пользователя с соответствуют им уровнем прав, он может использовать утилиту Query Analyzer для отправки запросов или команд на атакуемый сервер с использованием выражений Transact-SQL, хранимых процедур и/или файлов сценариев.

Настоящее "веселье" в SQL начинается после применения расширенных хранимых процедур. Пока достаточно знать, что  программу Query Analyzer можно использовать для соединения с сервером SQL Server, подбора пароля и выполнения простых манипуляций с данными на сервере и параметрами конфигурации — все это делается через простой графический интерфейс.

Альтернативой использования Query Analyzer является программа SQL Server Management Studio 2008, интерфейс первоначальной загрузки которой представлен на рисунке 41. Эта программа послужила заменой программе Query Analyzer, начиная с версии SQL Server 2005. Это прекрасная программа, позволяющая запрашивать источники данных OLE DB, проверять SQL-сценарии, возвращать результаты запросов в табличной форме и одновременно выполнять несколько SQL-сценариев или хранимых процедур.

 

Рисунок 41 – Microsoft SQL Server Management Studio

 

  1. osql . Жизнь была бы слишком простой, если бы все делалось с помощью программ с графическим интерфейсом простым щелчком кнопкой мыши. Поэтому обязательно нужно отметить, что в официальном наборе клиентских программ SQL от Microsoft есть утилита командной строки osql.exe, представленная на рисунке 42. На сегодняшний день это единственное клиентское средство, доступное в инсталляциях MSDE.

Рисунок 42 –  Утилита osql

 

Утилита osql позволяет отсылать выражения Transact-SQL, хранимые процедуры и файлы сценариев атакуемому серверу через интерфейс ODBC (Open DataBase Connectivity). Эта программа во всех случаях работает так же, как и уже рассмотренная утилита Query Analyzer (только в режиме командной строки).

 

 

 

 

2.5.3 Улучшенные средства хакинга SQL

 

 

Программ, созданных специально для  работы с SQL Server, не так много, как программ для хакинга IIS. Большая их часть имеет достаточно маленький размер, чтобы войти в набор инструментов хакера при атаке на несчастные необновленные серверы IIS. Поскольку многие HS-серверы работают как посредники между клиентом и защищенным брандмауэром (желательно) SQL сервером, взломанный сервер ITS становится прекрасной стартовой площадкой для атаки на главную цель в Web — на данные. Рассмотрим некоторые инструменты хакинга SQL Server.

  1. sqlbf. Эта программа от xaphan для автоматического подбора пароля к серверу SQL Server 2000 использует словари, списки паролей и списки IP-адресов, что облегчает жизнь хакеру SQL и оставляет ему время на более интересные занятия. Программа sqlbf также позволяет хакеру использовать для атаки подключение по именованным каналам (Named Pipes), но нужно отметить, что при использовании именованных каналов в Windows устанавливается соединение NetBIOS и запись об этом заносится в журнал и в журнал SQL Server (если эта служба включена).

Нужно сказать, что рассматриваемая утилита полезна не только для взлома пароля учетной записи sa, но и для поиска других учетных записей с правами системного администратора, которые могут быть защищены слабее. Мы создали длинный список пользователей, который содержит не только имя sa, но и другие возможные имена, такие как test, admin, dev, sqlagent и подобные им, которые могли появиться на некотором этапе разработке и не были удалены.

Вот некоторые наиболее популярные имена учетных записей в программе SQL Server:

  • sql_user;
  • sqluser;
  • sql;
  • sql-user;
  • user;
      • sql_account.

Информация о работе Построение защищенных Web-приложений на основе IIS и MS SQL Server