Информационное письмо
Образец оформления статьи
Анкета автора
25.03.2016

Методы поиска уязвимостей веб-приложений

Бибина Евгения Сергеевна
студентка факультета Математической Экономики, Статистики и Информатики, Российский экономический университет им. Г.В. Плеханова, г. Москва, Российская Федерация,
Осадчая Алина Дмитриевна
студентка факультета Математической Экономики, Статистики и Информатики, Российский экономический университет им. Г.В. Плеханова, г. Москва, Российская Федерация
Аннотация: в статье описываются методы поиска угроз веб-приложений с помощью открытых источников информации в сети Интернет, приводится их анализ и характеристика. Приведена статистика безопасности веб-приложений. Продемонстрированы простые способы получения закрытой информации на примере использования современных поисковых систем.
Ключевые слова: веб-приложение, Интернет, информационная безопасность, угроза, уязвимость
Электронная версия
Скачать (1.07 Mb)

Введение

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

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

По данным исследования компании PositiveTechnologies за 2014 год:

  • Все исследованные веб-приложения оказались уязвимыми с той или иной степенью риска;
  • 68% рассмотренных веб-приложений содержат уязвимости высокой степени риска (данный показатель на 6% выше показателя на 2013 год);
  • На каждое приложение, разработанное на PHP, в среднем приходится 11 критических уязвимостей и 31 уязвимость средней степени риска [2].

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

Метод тестирования на проникновение

На сегодняшний день такой метод поиска уязвимостей, как тестирование на проникновение (в англоязычной литературе – penetration testing), является одним из самых эффективных. Он позволяет узнать возможные пути атак и избежать компрометации в веб-приложениях. Суть метода заключается в том, чтобы частично смоделировать приемы и инструменты, применяемые настоящими злоумышленниками, для проникновения на защищаемый информационный ресурс. Анализ проводится так называемым «этичным хакером», который выступает с позиции потенциального злоумышленника. Условия тестирования подразумевают, что «злоумышленник» имеет те же возможности, что и обычный пользователь, то есть исходный код веб-приложения ему неизвестен, и доступ к серверу, на котором располагается это веб-приложение, закрыт. Тест позволяет получить объективную оценку уровня защищенности веб-приложения и рекомендации по устранению выявленных угроз информационной безопасности.

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

Тестирование проводится с помощью различных методик, которые зависят от целей, преследуемых заинтересованной в безопасности своего ресурса стороны. Такими методиками являются «черный ящик» (в англоязычной литературе – BlackBox), «белый ящик» (WhiteBox) и «серый ящик» (GreyBox).

Независимо от того какая из вышеперечисленных методик была выбрана, тестирование выполняется в несколько этапов: сбор информации, анализ собранной информации и проведение атаки. Сбор информации нередко разделяют на активный и пассивный. Активный подразумевает формирование пользовательских запросов («корректных» и «некорректных») к веб-приложению и их обработку. Пассивный метод сбора информации заключается в получении общедоступной информации о веб-приложении с помощью различных технологий и средств, таких как IP-адреса, файлы cookie, интернет-теги или данные о навигации. Главным отличием этих типов сбора информации друг от друга является то, что пассивный метод сбора информации невозможно обнаружить в то время, как активный сбор информации может быть зафиксирован в журналах и системах обнаружения вторжений и проанализирован администраторами веб-приложения.

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

«Черный ящик», или BlackBox, - метод тестирования веб-приложения, структура и механизм работы которого неизвестны, сложны или неважны в рамках поставленной задачи. В данном методе этичный хакер исследует веб-приложение и изучает его поведение по схеме:

Входные данные àНеизвестное веб-приложение àВыходные данные.

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

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

Самым популярным методом является «серый ящик», или GreyBox. Суть его заключается в том, что он является результатом объединения двух вышеописанных методов, то есть «злоумышленнику» предоставляется частичная информация о веб-приложении, чтобы сократить время на сбор информации и посвятить его поиску возможных уязвимостей. Данный метод тестирования достаточно близок к реальной ситуации действий злоумышленника.

Примером возможной угрозой, которую можно выявить с помощью тестирования на проникновение является SQL-инъекция (в англоязычной литературе – SQL-injection). Идея уязвимости состоит в том, чтобы внедрить SQL-код в запрос к базе данных веб-приложения. Атака становится возможной, когда входные данные обрабатываются некорректно, и атакующий может получить доступ к закрытой информации. Зачастую владельцы веб-приложений даже не задумываются о том, что существуют потенциально опасные символы, при введении которых в SQL-запрос может возникнуть угроза утечки информации. Важно понимать, что такие уязвимости существуют и необходимо принимать меры для их предотвращения.

Поиск уязвимостей веб-приложений с помощью поисковых систем

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

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

1. Поиск файлов

С помощью операторов filetype и ext можно ограничить поиск по файлам определенного типа. В настоящий момент видимой разницы между этими операторами нет, и практически всегда результаты поиска выходят одинаковые. Пример: Сотрудники filetype:xls.

На рис.1 представлен результат подобного запроса по файлам формата XLS. В первых же ссылках представлены документы, содержащие персональные данные о сотрудниках организаций: ФИО, образование, домашний адрес, дата рождения, домашний и рабочий телефоны.

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

Операторы:

  • site - поиск на заданном web-сайте;
  • allinurl – поиск заданных ключевых слов в теле самих ссылок;
  • allintitle - поиск заданных ключевых слов в заголовках страниц;
  • и другие.
Рисунок 1. Запрос «Сотрудники» по файлам формата XLS

2. Поиск ресурсов с предсказуемым расположением (Predictable Resource Location Vulnerability) и недостаточной аутентификацией (Insufficient Authentication)

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

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

Наиболее популярные названия служебных файлов и директорий: /admin/, /backup/, /logs/, /test/, /test.asp, /test.txt, /test.jsp, /test.log, /Copy%20of%test.asp, /Old%20test.asp, /vulnerable_file.cgi [3].

В случае неудачи (наличии аутентификации или ошибки в предсказании) наличие ресурса или его отсутствие определяется по коду ошибки:

  • 404 (NotFound) – сервер не может найти данные согласно запросу;
  • 403 (Forbidden) – несоответствие с правами доступа к файлам и каталогам сайта.

Список файлов и папок на любом веб-сайте начинается со стандартной надписи indexof. Для служебных целей (на «скрытых страницах») она должна встречаться в заголовке, поэтому вполне реально получить доступ к странице, ограничивая ее поиск ранее рассмотренным оператором intitle и задав директории /admin/, /personal/, /etc/ или /secret/ (см. рис.2).

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

Также для защиты от уязвимостей, связанных с индексацией «скрытых» страниц администраторы размещают файл robots.txt в корневой директории сайта. Robots.txt – текстовой файл, содержащий инструкции для краулеров, указывающие какие страницы и файлы запрещено индексировать.

Рисунок 2. Страница, выданная Google по запросу indexofinurl:/admin/ intitle

Рисунок 2. Страница, выданная Google по запросу indexofinurl:/admin/ intitle

Кроме стандартных поисковых систем, предназначенных для повседневного пользования, существуют специфические поисковые сервисы. Поисковая система Shodan осуществляет поиск не веб-страниц и файлов, а различных устройств: веб-камер, автомобилей, систем кондиционирования и освещения в помещениях и тому подобное. Поисковик ежеминутно работает с теневыми каналами Интернет, выявляя и собирая информацию о 500 млн. подключенных к сети устройствах в месяц [4].

Джон Мазерли, уроженец Швейцарии, разработал Shodan в 2009 году. Изначально, программист рассчитывал на использование сервиса в сетевом и ИТ бизнесе (Microsoft, Ciscoи другие) для отслеживания устройств, где используется программное обеспечение и оборудование компаний. Но поисковик распространился в качестве инструмента для специалистов по безопасности для поиска программ, устройств и уязвимостей в различных системах защиты.

Принцип функционирования Shodan заключается в каталогизации автоматических ответов любого подключённого к сети устройства. Эти отклики содержат множество информации о таком устройстве, включая его функции и настройки. При помощи специального сканера портов Shodan автоматически собирает ответы с веб-серверов (порт 80), а также данные с FTP (порт 23), SSH (порт 22) и Telnet (порт 21).

Одной из проблем является отсутствие у устройств какой-либо системы безопасности. А если при входе все-таки требуется аутентификация, подавляющее большинство использует логин-пароль, установленные по умолчанию (admin/admin, admin/1234, user/1234, admin/password и тому подобные).

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

В поисковой системе Shodan, равно как и в обычном поисковике, можно фильтровать результаты поиска с помощью операторов:

  • hostname - поиск с учетом домена;
  • port – номер порта в формате 21, 80, 443 и тому подобное;
  • os – оперативная система;
  • country – название страны в формате RU, US;
  • city – название города.

На рис.3 представлен результат запроса DVRport:80 country:RUcityMoscow» (DVR– фирма видеорегистраторов, 80 – порт веб-сервера).

Рисунок 3. Результат запроса DVR port:80 country:RU city:«Moscow» в Shodan

Рисунок 3. Результат запроса DVR port:80 country:RU city:«Moscow» в Shodan

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

Рисунок 4. Изображение с видеорегистратора, найденного с помощью Shodan

Рисунок 4. Изображение с видеорегистратора, найденного с помощью Shodan

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

Поиск уязвимостей методом получения идентифицирующей информации о веб-приложении

Ежедневно разработчики, хакеры, специалисты по защите веб-приложений, находят в системе безопасности сайтов новые уязвимости, «дыры», бреши. Существуют так называемые «бюллетени безопасности» SecurityFocus или BugTraq, которые оперативно публикуют все эти материалы в отчетах. Они находятся в открытом доступе в сети Интернет.

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

Важно учесть, что часто разработчики создают сайт на компонентной основе, используя готовые модули веб-приложений. Внутренние компоненты входят в состав технологии разработки веб-приложения, а внешние представляют собой модули веб-сервисов, таких как форум, чат, доска объявлений, календарь событий и тому подобное. Если в одном из компонентов обнаружится уязвимость, то под угрозой будут находиться все использующие его сайты. Пример: рассмотрим сайт www.siteexample.ru, содержащий форум, который использует популярный движок Invision Power Board [1]. Строка адреса страницы форума будет содержать: http://www.siteexample.ru/index.php?showforum=4. Текст «index.php?showforum=» будет встречаться на всех веб-сайтах, использующих для форума Invision Power Board. Используя описанную ранее методику запросов в поисковой системе, можно создать запрос, который выявит все сайты, реализованные на этом движке (>150 000). Если в Invision Power Board возникнет уязвимость, то таким образом злоумышленник отыщет всех потенциальных «жертв». Ведь не каждый администратор сайта своевременно среагирует на возникшую угрозу [5].

Если узнать, какие веб-сервисы и технологии использует конкретный сайт, на каком веб-сервере он функционирует, то можно будет выявить его уязвимости с помощью «бюллетеней безопасности». Сбор такой информации в недоброжелательных целях называется fingerprinting. Уязвимость, возникающая в таких случаях, называется «Идентификацией приложений» (WebServer/ApplicationFingerprinting). Для получения информации об используемом веб-сервере, сервере баз данных, технологии программирования, веб-сервисах злоумышленник может использовать анализ ответов сервера на HTTP-запросы. Идентифицирующая информация может находиться в заголовках HTTP-ответов и в текстах HTTP-страниц.

Принцип работы HTTP-транзакций заключается в следующем:

1. Клиент устанавливает связь с сервером, посылает запрос документа, указав HTTP-метод (GET, HEAD, POST и другие), адрес документа и номер версии HTTP, также он посылает информацию заголовка, сообщая о своей конфигурации;

2. Сервер отвечает, передавая строку состояния (версию HTTP, код состояния и описание), после чего клиенту отправляется информация заголовка, содержащая данные о самом сервере и затребованном документе;

3. В случае успешного запроса посылаются затребованные данные.

Один из классических методов fingerprinting: 

Запрос клиента:

Ответ сервера:

$ nc www.siteexample.ru 80

GET /index.html HTTP/1.1

Host: www.siteexample.ru

HTTP/1.1 200 OK

Date: Mon, 20 Nov 2014 10:05:30 GTM

Server: Apache/1.3.22 (Win32) (информация о веб-сервере)

Last-modified: Tue, 17 Feb 2014 18:31:25 GMT

Content-type: text/html


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

Заключение

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

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

Список литературы:

1. Invision Power Board (IPS Community Suite): https://www.invisionpower.com/

2. PositiveTechnologies. Отчет «Статистика уязвимостей веб-приложений (2014 г.)» от 14.10.2015

3. WEB APPLICATION SECURITY CONSORTIUM – ATTACKS – Example of Predictable Resource Location – 2010 г.

4. Статья TMC’s Advisor - Июль 2014 // TMC IT and Telecom Consulting Inc.

5. Фленов М.Е. Web-сервер глазами хакера: 2-е изд ─ Спб.: БХВ-Петербург, 2009. ─ 320 с.