Опубликован: 04.05.2010 | Доступ: свободный | Студентов: 4032 / 454 | Оценка: 4.64 / 4.44 | Длительность: 41:24:00
Лекция 13:

Безопасность в Веб-разработке

17.1.2.2. Авторизация (Authorization)

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

17.1.2.2.1. Предсказуемое значение идентификатора сессии (Credential/Session Prediction)

Описание

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

Пример

Многие серверы генерируют идентификаторы сессии, используя алгоритмы собственной разработки. Подобные алгоритмы могут просто увеличивать значение идентификатора для каждого запроса пользователя. Другой распространенный вариант – использование функции от текущего времени или других специфичных для компьютера данных.

Решение

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

17.1.2.2.2. Недостаточная авторизация (Insufficient Authorization)

Описание

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

Пример

В прошлом многие Веб-серверы сохраняли важные ресурсы в "скрытых" директориях, таких как "/admin" или "/log". Если атакующий запрашивал эти ресурсы напрямую, он получал к ним доступ и мог перенастроить сервер, получить доступ к важной информации либо полностью скомпрометировать систему.

Некоторые серверы, после аутентификации, сохраняют в cookie или скрытых полях идентификатор "роли" пользователя в рамках Веб-приложения. Если разграничение доступа основывается на проверке данного параметра без верификации принадлежности к роли при каждом запросе, злоумышленник может повысить свои привилегии, просто модифицировав значение cookie.

Решение

Методы борьбы – четкое разграничение прав пользователей и их возможностей.

17.1.2.2.3. Отсутствие таймаута сессии (Insufficient Session Expiration)

Описание

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

Пример

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

Решение

Метод борьбы – ограничение таймаута сессии.

17.1.2.2.4. Фиксация сессии (Session Fixation)

Описание

Используя данный класс атак, злоумышленник присваивает идентификатору сессии пользователя заданное значение.

К сожалению, системы, использующие cookie, являются наиболее уязвимыми. Большинство известных на настоящий момент вариантов фиксации сессии направлены именно на значение cookie.

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

17.1.2.3. Атаки на клиентов (Client-side Attacks)

Этот раздел описывает атаки на пользователей со стороны Веб-сервера.

17.1.2.3.1. Подмена содержимого (Content Spoofing)

Описание

Используя эту технику, злоумышленник заставляет пользователя поверить, что страницы сгенерированы Веб-сервером, а не переданы из внешнего источника.

Решение

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

17.1.2.3.2. Межсайтовое выполнение сценариев (Cross-site Scripting, XSS)

Описание

Наличие уязвимости Cross-site Scripting позволяет атакующему передать серверу исполняемый код, который будет перенаправлен браузеру пользователя. Этот код обычно создается на языках HTML/JavaScript, но могут быть использованы VBScript, ActiveX, Java, Flash, или другие поддерживаемые браузером технологии.

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

Существует два типа атак, приводящих к межсайтовому выполнению сценариев: постоянные (сохраненные) и непостоянные (отраженные). Основным отличием между ними является то, что в отраженном варианте передача кода серверу и возврат его клиенту осуществляется в рамках одного HTTP-запроса, а в хранимом – в разных.

Осуществление непостоянной атаки требует, чтобы пользователь перешел по ссылке, сформированной злоумышленником (ссылка может быть передана по email, ICQ и т.д.). В процессе загрузки сайта код, внедренный в URL или заголовки запроса, будет передан клиенту и выполнен в его браузере. Сохраненная разновидность уязвимости возникает, когда код передается серверу и сохраняется на нем на некоторый промежуток времени. Наиболее популярными целями атак в этом случае являются форумы, почта с Веб-интерфейсом и чаты. Для атаки пользователю не обязательно переходить по ссылке, достаточно посетить уязвимый сайт.

Решение

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

17.1.2.3.3. Расщепление HTTP-запроса (HTTP Response Splitting)

Описание

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

В результате успешной реализации этой атаки злоумышленник может выполнить следующие действия:

  • Межсайтовое выполнение сценариев.
  • Модификация данных кэша сервера-посредника.
  • Межпользовательская атака (один пользователь, одна страница, временная подмена страницы).
  • Перехват страниц, содержащих пользовательские данные.
17.1.2.4. Выполнение кода (Command Execution)

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

17.1.2.4.1. Переполнение буфера (Buffer Overflow)

Описание

Эксплуатация переполнения буфера позволяет злоумышленнику изменить путь исполнения программы путем перезаписи данных в памяти системы.

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

Решение

Тщательно проверять входные параметры CGI скриптов написанных на С++ или С, а также позаботится для защиты от атак подобного типа, это своевременное обновление программ серверов, будь-то Веб-Сервер или СУБД.

17.1.2.4.2. Атака на функции форматирования строк (Format String Attack)

Описание

При использовании этих атак путь исполнения программы модифицируется методом перезаписи областей памяти с помощью функций форматирования символьных переменных. Уязвимость возникает, когда пользовательские данные применяются в качестве аргументов функций форматирования строк, таких как fprintf, printf, sprintf, setproctitle, syslog и т.д.

Решение

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

17.1.2.4.3. Внедрение операторов LDAP (LDAP Injection)

Описание

Атаки этого типа направлены на Веб-серверы, создающие запросы к службе LDAP на основе данных, вводимых пользователем. Упрощенный протокол доступа к службе каталога (Lightweight Directory Access Protocol, LDAP) – открытый протокол для создания запросов и управления службами каталога совместимыми со стандартом X.500. Протокол LDAP работает поверх транспортных протоколов Internet (TCP/UDP). Веб-приложение может использовать данные, предоставленные пользователем для создания запросов по протоколу LDAP при генерации динамических Веб-страниц. Если информация, полученная от клиента, должным образом не верифицируется, атакующий получает возможность модифицировать LDAP-запрос.

Запрос будет выполняться с тем же уровнем привилегий, с каким работает компонент приложения, выполняющий запрос (сервер СУБД, Веб-сервер и т.д). Если данный компонент имеет права на чтение или модификацию данных в структуре каталога, злоумышленник получает те же возможности.

17.1.2.4.4. Выполнение команд ОС (OS Commanding)

Описание

Атаки этого класса направлены на выполнение команд операционной системы на Веб-сервере путем манипуляции входными данными. Если информация, полученная от клиента, должным образом не верифицируется, атакующий получает возможность выполнить команды ОС. Они будут выполняться с тем же уровнем привилегий, с каким работает компонент приложения, выполняющий запрос (сервер СУБД, Веб-сервер и т.д).

Решение

Решение данной проблемы – правильно настроенный сервер.

17.1.2.4.5. Внедрение операторов SQL (SQL Injection)

Описание

Эти атаки направлены на Веб-серверы, создающие SQL запросы к серверам СУБД на основе данных, вводимых пользователем.

Если информация, полученная от клиента, должным образом не верифицируется, атакующий получает возможность модифицировать запрос к SQL-серверу, отправляемый приложением. Запрос будет выполняться с тем же уровнем привилегий, с каким работает компонент приложения, выполняющий запрос (сервер СУБД, Веб-сервер и т.д). В результате злоумышленник может получить полный контроль на сервере СУБД и даже его операционной системой. С точки зрения эксплуатации SQL Injection очень походит на LDAP Injection.

Решение

Еще один из наиболее эксплуатируемых видов атак, средства борьбы – грамотная фильтрация получаемых данных.

17.1.2.4.6. Внедрение серверных расширений (SSI Injection)

Описание

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

Перед генерацией HTML страницы сервер может выполнять сценарии, например Server-site Includes (SSI). В некоторых ситуациях исходный код страниц генерируется на основе данных, предоставленных пользователем. Если атакующий передает серверу операторы SSI, он может получить возможность выполнения команд операционной системы или включить в нее запрещенное содержимое при следующем отображении.

Решение

Противодействие такое же, как и при SQL инъекции.

17.1.2.4.7. Внедрение операторов XPath (XPath Injection)

Описание

Эти атаки направлены на Веб-серверы, создающие запросы на языке XPath на основе данных, вводимых пользователем.

Язык XPath 1.0 разработан для предоставления возможности обращения к частям документа на языке XML. Он может быть использован непосредственно либо в качестве составной части XSLT-преобразования XML-документов или выполнения запросов XQuery.

Решение

Противодействие такое же, как и при SQL инъекции.

17.1.2.5. Разглашение информации (Information Disclosure)

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

17.1.2.5.1. Индексирование директорий (Directory Indexing)

Описание

Предоставление списка файлов в директории представляет собой нормальное поведение Веб-сервера, если страница, отображаемая по умолчанию (index.html/home.html/default.htm) отсутствует.

В этой ситуации злоумышленник может получить доступ к данным, не предназначенным для свободного доступа. Довольно часто администраторы полагаются на "безопасность через сокрытие", предполагая, что раз гиперссылка на документ отсутствует, то он недоступен. Современные сканеры уязвимостей, такие как Nikto, могут динамически добавлять файлы и папки к списку сканируемых в зависимости от результатов запросов. Используя содержимое /robots.txt или полученного списка директорий сканер может найти спрятанное содержимое или другие файлы.

Таким образом, внешне безопасное индексирование директорий может привести к утечке важной информации, которая в дальнейшем будет использована для проведения атак на систему.

Решение

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

17.1.2.5.2. Идентификация приложений (Web Server/Application Fingerprinting)

Описание

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

Для определения версий клиентских приложений обычно используется анализ HTTP-запросов (порядок следования заголовков, значение User-agent и т.д.). Однако для этих целей могут применяться и другие техники. Так, например, анализ заголовков почтовых сообщений, созданных с помощью клиента Microsoft Outlook, позволяет определить версию установленного на компьютере браузера Internet Explorer.

Решение

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

17.1.2.5.3. Утечка информации (Information Leakage)

Описание

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

17.1.2.5.4. Обратный путь в директориях (Path Traversal)

Описание

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

Решение

Средством противодействия является тщательная настройка Веб-сервера.

17.1.2.5.5. Предсказуемое расположение ресурсов (Predictable Resource Location)

Описание

Предсказуемое расположение ресурсов позволяет злоумышленнику получить доступ к скрытым данным или функциональным возможностям. Путем подбора злоумышленник может получить доступ к содержимому, не предназначенному для публичного просмотра. На эту атаку часто ссылаются как на перечисление файлов и директорий (Forced Browsing, File Enumeration, Directory Enumeration).