9 ресурсов об уязвимостях в вебе


Оглавление (нажмите, чтобы открыть):

Безопасность и защита сайтов

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

Классификация угроз безопасности Web-приложений

Данная классификация представляет собой совместную попытку членов международного консорциума собрать воедино и упорядочить угрозы безопасности Web-сайтов. Члены Web Application Security Consortium создали данный проект для унификации стандартной терминологии описания угроз безопасности Web-приложений. Это даёт возможность разработчикам приложений, специалистам в области безопасности, производителям программных продуктов и аудиторам использовать единый язык при своем взаимодействии.

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

Классы атак

1. Аутентификация (Authentication)

Раздел, посвященный аутентификации, описывает атаки направленные на используемые Web-приложением методы проверки идентификатора пользователя, службы или приложения. Аутентификация использует как минимум один из трех механизмов (факторов): «что-то, что мы имеем», «что-то, что мы знаем» или «что-то, что мы есть». В этом разделе описываются атаки, направленные на обход или эксплуатацию уязвимостей в механизмах реализации аутентификации Web-серверов.

    Подбор (Brute Force)

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

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

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

3. Атаки на клиентов (Client-s >

Этот раздел описывает атаки на пользователей Web-сервера. Во время посещения сайта, между пользователем и севером устанавливаются доверительные отношения, как в технологическом, так и в психологическом аспектах. Пользователь ожидает, что сайт предоставит ему легитимное содержимое. Кроме того, пользователь не ожидает атак со стороны сайта. Эксплуатируя это доверие, злоумышленник может использовать различные методы для проведения атак на клиентов сервера.

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

4. Выполнение кода (Command Execution)

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

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

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

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

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

6. Логические атаки (Logical Attacks)

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

    Злоупотребление функциональными возможностями (Abuse of Functionality)

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

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

Объемы информации, с которыми работают 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-запрос может возникнуть угроза утечки информации. Важно понимать, что такие уязвимости существуют и необходимо принимать меры для их предотвращения.

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

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

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

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

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

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

  • site — поиск на заданном web-сайте;
  • allinurl – поиск заданных ключевых слов в теле самих ссылок;
  • allintitle — поиск заданных ключевых слов в заголовках страниц;
  • и другие.

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

Кроме стандартных поисковых систем, предназначенных для повседневного пользования, существуют специфические поисковые сервисы. Поисковая система 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

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


Специалисты по безопасности надеются предотвратить негативные сценарии, выявляя подобные незащищенные подключенные устройства и услуги с помощью 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

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

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

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

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

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 с.

Positive Technologies Research

Страницы

вторник, 8 августа 2020 г.

Уязвимости веб-приложений: пора анализировать исходный код

Введение

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

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

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

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

1. Методика

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

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


Обнаруженные уязвимости классифицировались согласно соответствующим угрозам по системе Web Application Security Consortium Threat Classification (WASC TC v. 2), за исключением категорий Improper Input Handling и Improper Output Handling, поскольку они реализуются в рамках множества других атак. Кроме того, дополнительно мы выделили категории Insecure Session, Server Side Request Forgery и Clickjacking. Эти категории отсутствуют в классификации WASC, однако достаточно часто встречаются в исследуемых системах.

В категорию Insecure Session мы относим недостатки защиты сессии, например такие, как отсутствие флагов Secure и HttpOnly. Эти недостатки позволяют злоумышленнику перехватить значения Cookie пользователя при реализации различных атак.

Server-Side Request Forgery (подделка запроса со стороны сервера) — уязвимость, позволяющая выполнять произвольные HTTP-запросы от имени системы. Приложение, получив URL-адрес или HTTP-сообщение, осуществляет недостаточную проверку адреса назначения перед отправкой запроса. Используя данный недостаток, злоумышленник может отправлять запросы на серверы с ограниченным доступом (например, компьютеры в локальной сети), что приводит к разглашению важных данных, получению злоумышленником исходных кодов приложения, к отказу в обслуживании и т. п. В результате эксплуатации этой уязвимости злоумышленник может получить информацию о структуре сегментов сети, недоступных внешнему пользователю, обращаться к внутренним ресурсам, производить сканирование портов (сервисов) и т. п.

Clickjacking — разновидность атак на пользователей, заключающаяся в визуальном обмане. Ее принцип основан на том, что уязвимое приложение загружается во фрейме на страницу приложения, после чего маскируется под кнопку или какой-либо другой элемент. При клике по данному элементу пользователь выполняет задуманное злоумышленником действие в контексте уязвимого сайта. Уязвимость, позволяющая проводить эту атаку, возникает, когда приложение не возвращает специальный заголовок X-Frame-Options и тем самым разрешает показывать его во фреймах. Также в некоторых браузерах эта уязвимость может позволить выполнить атаку «Межсайтовое выполнение сценариев».

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

Степень риска уязвимостей оценивалась согласно системе Common Vulnerability Scoring System (CVSS v. 3); на основе этой оценки выделялись качественные оценки высокого, среднего и низкого уровней риска.

2. Резюме

Все веб-приложения уязвимы

Во всех исследованных веб-приложениях были обнаружены те или иные недостатки защищенности. При этом в 58% приложений обнаружены критически опасные уязвимости. В то же время видны и позитивные тенденции: общая доля сайтов, содержащих критически опасные уязвимости, уменьшилась по сравнению с 2015 годом на 12%.

Под угрозой пользователи

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

Утечки — по-прежнему актуальная проблема

Приблизительно в каждой второй системе выявлена утечка важных данных, в том числе исходного кода и персональных данных пользователей. Раскрывают информацию о версии используемого ПО 63% веб-приложений.

Уязвимости веб-приложений — простой вектор проникновения в ЛВС

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

Промышленные компании наиболее уязвимы

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

64% веб-приложений на основе ASP.NET содержат критически опасные уязвимости

Приблизительно каждое второе веб-приложение, созданное на базе языков PHP и Java, также содержит критически опасные уязвимости. При этом на одно веб-приложение, разработанное на языке PHP, приходится максимальное количество таких уязвимостей — 2,8 на систему.

Продуктивные системы более уязвимы, чем тестовые

Продуктивные системы в 2020 году являются менее защищенными. При ручном анализе критически опасные уязвимости выявляются в 50% тестовых систем и в 55% продуктивных систем. Уязвимостей высокого и среднего уровня риска в одной продуктивной системе выявлено в среднем в два раза больше, чем в одной тестовой.

Анализ исходного кода эффективнее «черного ящика»

В рамках ручного анализа доступ к исходному коду позволял выявить критически опасные уязвимости в 75% приложений, а при исследовании методом черного ящика критически опасные уязвимости были обнаружены в 49% систем.

Автоматизированный анализ выявляет уязвимости в кратчайшее время

В среднем на одно приложение автоматизированный анализатор исходного кода позволил выявить 4,6 уязвимости высокого уровня риска, 66,9 уязвимости среднего уровня риска и 45,9 уязвимости низкого уровня риска. Анализ исходного кода автоматизированными средствами показывает высокую эффективность, а скорость работы превосходит возможности ручного тестирования.

3. Портрет участников исследования

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

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

В этом году среди средств разработки веб-приложений преобладают PHP, Java, по сравнению с прошлым годом значительно увеличилась доля приложений, созданных на основе технологии ASP.NET. Иные средства разработки (Ruby, Python) объединены в категорию «Другие» и составляют всего 7%.

4. Тенденции

Все веб-приложения, исследованные в рамках анализа защищенности ручными методами или с использованием автоматизированных средств, были подвержены уязвимостям той или иной степени опасности. При этом всего в 1% приложений были выявлены уязвимости только низкой степени опасности. Позитивные изменения состоят в значительном сокращении (с 70 до 58%) доли веб-приложений, содержащих уязвимости высокого уровня риска. Частично на статистические данные повлиял тот факт, что компании, которые в прошлом году проводили анализ защищенности, учли результаты проверок при разработке новых веб-приложений. Причем в первую очередь внимание уделялось устранению критически опасных уязвимостей.

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

Практически во всех исследованных приложениях были обнаружены уязвимости среднего уровня риска. Это число незначительно колеблется каждый год в пределах 90—100%. Возросла доля веб-приложений, подверженных уязвимостям низкого уровня риска.

5. Ручной анализ защищенности веб-приложений

Среди всех уязвимостей, выявленных в рамках ручного анализа веб-приложений, одну десятую часть составляют уязвимости высокого уровня риска, а большая часть (81%) относится к среднему уровню опасности. По сравнению с прошлым годом доля критически опасных уязвимостей существенно сократилась, однако это связано преимущественно с тем, что в 2020 году на одну систему выявлено значительно больше уязвимостей среднего уровня риска.

Недостатки безопасности найдены во всех исследованных веб-приложениях. Критически опасные уязвимости обнаружены более чем в половине приложений, для которых проводились ручные проверки (54%), 44% приложений подвержены уязвимостям среднего уровня риска и ниже, и лишь в 2% приложений были выявлены уязвимости только низкой степени опасности.


В среднем на одну систему при ручном анализе защищенности выявлено 17 уязвимостей среднего уровня риска и по две уязвимости высокого и низкого уровня риска.

5.1. Наиболее распространенные уязвимости

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

Как и в прошлом году, на первой строчке рейтинга находится уязвимость среднего уровня риска «Межсайтовое выполнение сценариев» (Cross-Site Scripting), которая встречается в 75% исследованных систем. В результате эксплуатации данной уязвимости злоумышленник может внедрить в браузер пользователя произвольные HTML-теги, включая сценарии на языке JavaScript и других языках, и таким образом получить значение идентификатора сессии атакуемого и совершить иные неправомерные действия, например фишинговые атаки.

Эксперты Positive Technologies в прошедшем году проводили также исследования атак злоумышленников на веб-приложения, в том числе составили рейтинг наиболее популярных атак. Исходными данными для статистического отчета послужили результаты множества пилотных проектов по внедрению межсетевого экрана уровня приложений PT Application Firewall среди российских и зарубежных компаний. Для того чтобы взломать сайт или атаковать его пользователей, злоумышленники пробуют эксплуатировать различные уязвимости приложения — как ошибки, допущенные при разработке, так и недостатки администрирования. По результатам исследований было установлено, что в 58% приложений, для которых проводились пилотные проекты, злоумышленники предпринимали попытки атаковать пользователей путем эксплуатации самой распространенной в этом году уязвимости «Межсайтовое выполнение сценариев».

Веб-приложения, содержащие ошибки, связанные с раскрытием информации о версии ПО (Fingerprinting), занимают второе место в рейтинге и встречаются в 63% систем. Кроме того, более чем в половине систем (54%) выявлена утечка важных данных, в том числе исходного кода и персональных данных.

Отсутствие защиты от перебора учетных данных (Brute Force) остается на третьем месте, но доля приложений, уязвимых для такого перебора, увеличилась на 10%.

На пятом и шестом местах находятся недостатки защиты пользовательских сессий и отсутствие защиты от атак типа Clickjacking. Сравнение с прошлым периодом исследований для этих недостатков не приводится, поскольку в отдельные категории они были выделены лишь в этом году. В то время как разработчики стали более внимательно относиться к устранению критически опасных уязвимостей, несущих угрозу непосредственно для владельцев веб-приложений, на первый план в этом году выходят ошибки, затрагивающие пользователей. В 35% систем выявлена уязвимость, которая также позволяет проводить атаки на пользователей, — «Подделка межсайтовых запросов» (Cross-Site Request Forgery).

Как уже отмечалось, общая доля сайтов, содержащих уязвимости высокого уровня риска, уменьшилась, и в этом году в рейтинге оказалась всего одна критически опасная уязвимость — «Внедрение операторов SQL», которой, тем не менее, подвержены 25% веб-приложений. По итогам исследований атак на веб-приложения в 2020 году попытка эксплуатации этой уязвимости находится на первом месте в рейтинге наиболее популярных атак и встречается в 84% систем.

45% веб-сайтов крупных российских компаний имеют критические уязвимости

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

Предметом исследования стали 67 ресурсов, протестированных в ходе анализа защищенности. Большинство этих веб-приложений можно назвать критически важными: это порталы самообслуживания сотовых операторов, сайты электронного правительства, веб-решения для контроля и управления промышленными объектами и др.

Согласно полученным результатам, все исследованные веб-приложения содержат те или иные уязвимости, при этом в 45% рассмотренных систем обнаружены уязвимости высокой степени риска. Кроме того, 9 из 10 ресурсов содержат уязвимости среднего уровня риска, что близко к результатам прошлых двух лет.

Телеком и промышленность — в зоне повышенного риска

Максимальная концентрация веб-приложений, содержащих уязвимости высокой степени риска, была выявлена в телекоммуникационной отрасли — 78%.

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

Как и прежде, профильные для телекоммуникационной отрасли веб-приложения часто подвержены атакам на пользователей (Client-side Attacks), а также насыщены недостатками, которые позволяют межсайтовое выполнение сценариев (Cross-site Scripting). Среди наиболее опасных уязвимостей следует отметить распространенные в веб-приложениях телекома «Обход каталога» (Path Traversal) и «Внедрение SQL-кода» (SQL Injection), а также «Выполнение команд ОС» (OS Commanding) и «Внедрение XML-кода» (XML Injection), которые встречаются немного реже.

В промышленной сфере ровно половина (50%) ресурсов содержит критические недостатки безопасности. Сотрудникам служб ИБ производственных компаний стоит обращать внимание на недостатки «Выполнение команд ОС» и «Внедрение SQL-кода», а также на менее перспективные с точки зрения злоумышленника и при этом весьма многочисленные уязвимости «Межсайтовое выполнение сценариев».

С небольшим отрывом далее следуют сайты IТ- и ИБ-компаний (45%). Особенностью таких компаний является наличие уязвимостей, позволяющих осуществить внедрение операторов XPath. Включение в исследование данных о веб-приложениях ИБ-компаний имело, вероятно, определенное влияние на общую оценку безопасности IТ-организаций, поскольку в 2010 и 2011 годах доля ресурсов с уязвимостями высокого уровня риска составляла 75%.

Что касается государственных организаций, то примерно каждое третье веб-приложение (27%) в этой сфере содержит уязвимость высокого уровня риска. Год назад этот показатель составлял 65%.

Здесь существенно сказались особенности одного крупного государственного проекта, в котором обнаруженные ранее уязвимости успешно устранялись в течение последнего года. Если не рассматривать данные этого проекта, то доля ресурсов с критическими уязвимостями в государственном секторе составит 50% (такой же показатель и в промышленной сфере).

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

Наиболее опасные для сайтов госорганов вектора атак — «Внедрение SQL-кода», «Обход каталога», «Выполнение команд ОС» и «Отказ в обслуживании» (Denial of Service). Кроме того, именно государственным оказался в 2012 году единственный крупный корпоративный сайт, зараженный вирусом.

Самые распространенные уязвимости

В 2012 году наибольшее распространение получила уязвимость раскрытия информации Fingerprinting, позволяющая идентифицировать программное обеспечение и подготовить плацдарм для атаки: этому недостатку подвержены три четверти исследованных ресурсов (73%). На втором месте с 63% — межсайтовое выполнение сценариев. Почти в половине систем (46%) присутствуют ошибки, позволяющие автоматически подбирать учетные данные и пароли пользователей (Brute Force). В топ-10 вошли также две критические уязвимости — «Внедрение SQL-кода» и «Обход каталога», которым подвержены 33% и 18% исследованных веб-ресурсов соответственно.

Наименее защищены веб-приложения на языке PHP с веб-сервером Apache

Степень уязвимости веб-приложения напрямую зависит от выбора языка программирования и веб-сервера. PHP оказался самым распространенным языком для разработки веб-ресурсов в 2012 году — на нем написано 36% исследованных систем. Обратная сторона популярности — низкий уровень защищенности: 83% сайтов на PHP содержат критические уязвимости. Данный показатель почти в три раза выше, чем у Perl (29%). Что касается веб-приложений, разработанных на языках Java и ASP.NET, то они наименее подвержены ошибкам высокой степени риска — 15% и 10% уязвимых приложений соответственно, однако 85% приложений на Java и 80% на ASP.NET содержат уязвимости средней степени риска, что не позволяет говорить о высоком уровне безопасности.

Разработчикам веб-приложений на PHP стоит обращать пристальное внимание на критические недостатки «Внедрения SQL-кода» и «Выполнение команд ОС», которые обнаружены примерно в каждом втором ресурсе на этом языке. В свою очередь сайты на ASP.NET подвержены уязвимости «Подбор паролей». Этот факт объясняется тем, что данная технология используется, как правило, в коммерческих приложениях, вместе с централизованным хранилищем идентификационных данных пользователей (Active Directory).

В 2012 году наиболее распространенным веб-сервером оказался Nginx (43%), а наиболее подверженным уязвимостям высокой степени риска стал Apache: 88% использующих его веб-ресурсов подвержены критическим недостаткам безопасности. На втором месте Tomcat — 75% ошибок высокого уровня риска. В прошлом году наиболее уязвимыми были веб-серверы Nginx и Apache.

В 2012 году, как и в 2010 и 2011, веб-приложения под управлением серверов Microsoft IIS оказались самыми безопасными: всего 14% исследованных сайтов содержали уязвимости высокой степени риска.

Большинство уязвимостей веб-серверов связаны с ошибками администрирования, самой распространенной из которых является «Утечка информации» (Information Leakage).

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

Только 30% протестированных веб-ресурсов использовали Web Application Firewall (WAF). Учитывая, что на каждом из рассмотренных сайтов были обнаружены те или иные уязвимости, наличие такого средства превентивной защиты, как WAF, могло бы снизить риски, однако на сегодняшний день немногие владельцы веб-приложений прибегают к использованию подобных дополнительных инструментов.

В целом по сравнению с 2011 годом средний уровень защищенности веб-приложений стал немного выше: в частности, доля сайтов, содержащих критические уязвимости, уменьшилась на 15% и составила почти 45%. Эксперты Positive Technologies обнаружили только одно зараженное веб-приложение, тогда как ранее 10% сайтов содержали вредоносный код. С другой стороны, есть и признаки стагнации: никак не изменилась доля веб-приложений с уязвимостями высокого уровня риска в промышленной сфере, а сайты телеком-сектора повышают уровень безопасности очень медленно.

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

Автоматизированный поиск уязвимостей веб-сайтов Текст научной статьи по специальности « Автоматика. Вычислительная техника»

Аннотация научной статьи по автоматике и вычислительной технике, автор научной работы — Кукушкин Н. В., Чиркин Е. С.


Работа описывает причины возникновения ряда наиболее распространенных атак на веб-сайты, дает понятие сканеров безопасности , рассказывает о принципах их работы и дает рекомендации по их использованию.

Похожие темы научных работ по автоматике и вычислительной технике , автор научной работы — Кукушкин Н.В., Чиркин Е.С.,

Текст научной работы на тему «Автоматизированный поиск уязвимостей веб-сайтов»

2. Тенденции и особенности развития систем информационной безопасности

АВТОМАТИЗИРОВАННЫЙ ПОИСК УЯЗВИМОСТЕЙ ВЕБ-САЙТОВ*

Н.В. Кукушкин, Е.С. Чиркин

Работа описывает причины возникновения ряда наиболее распространенных атак на веб-сайты, дает понятие сканеров безопасности, рассказывает о принципах их работы и дает рекомендации по их использованию.

Ключевые слова: сканеры безопасности, уязвимости веб-сайтов.

С каждым годом увеличивается количество новых веб-ресурсов. Повышенный интерес для злоумышленников представляют сайты с большим количеством посетителей. Пренебрегать безопасностью таких проектов просто непозволительно. Значительная часть бесплатных CMS (Content Management System — система управления содержимым) содержат уязвимости. Ошибки в защите вебсайтов остаются одним из наиболее распространенных недостатков обеспечения защиты информации. Более того, уязвимости вебсайтов являются одним из наиболее распространенных путей проникновения в корпоративные информационные системы, помимо этого есть множество факторов, делающих веб-сервисы привлекательной целью для атак злоумышленников.

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

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

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

* Работа выполнена при финансовой поддержке Российского фонда фундаментальных исследований (проект № 12-07-00512).

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

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

— Подмена главной страницы сайта -одна из самых частых форм взлома.

— Удаление файловой системы — вся информация пропадает, что становится провальным в случае отсутствия сохраненной копии ресурса.

— Подмена информации — злоумышленники могут подменить телефон или другие данные организации.

— Размещение троянских программ -набирающая популярность форма распространения вредоносных программ.

— Рассылка спама — сайт может использоваться для рассылки спама.

— Создание высокой нагрузки — отправление в адрес веб-сервера заведомо некорректных запросов или иные действия извне, результатом которых будет затруднение доступа к сайту или падение операционной системы сервера [1].

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

Психолого-педагогический журнал Гаудеамус, №2 (20), 2012

ся основной причиной низкого уровня защищенности большинства из них.

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

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

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

Современные сканеры способны обнаруживать сотни уязвимостей сетевых ресурсов, предоставляющих те или иные виды сетевых сервисов. Первые сетевые сканеры представляли собой простейшие сценарии на языке Shell, сканировавшие различные TCP-порты. Сегодня они превратились в программные продукты, реализующие множество различных сценариев сканирования [2].

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

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

Принцип работы сканера заключается в моделировании действий злоумышленника, производящего анализ сети при помощи стандартных сетевых утилит, таких как host, showmount, traceout, rusers, finger, ping и т.п. При этом используются известные уязвимости сетевых сервисов, сетевых протоколов и ОС для осуществления удаленных атак на системные ресурсы и осуществляется документирование удачных попыток.

В настоящее время существует большое количество как коммерческих, так и свободно распространяемых сканеров, как универсальных, так и специализированных, предназначенных для выявления только определенного класса уязвимостей. Многие из них можно найти в сети Интернет. Число уязвимостей в базах данных современных сканеров медленно, но уверенно приближается к десяткам тысяч [4].

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

Основы веб-хакинга. Более 30 примеров уязвимостей

“Основы веб-хакинга” — моя первая книга, которая предназначена помочь вам начать путь хакера. Я начал писать её как самиздатовское объяснение 30 уязвимостей, побочный продукт моего собственного обучения.
Она быстро превратилась в нечто значительно большее. Я надеюсь, что эта книга, как минимум, откроет ваши глаза на огромный мир хакинга.
В лучшем случае, мне хочется надеяться, что это будет вашим первый шагом по направлению к тому, чтобы сделать веб более безопасным местом и заодно получить за это некоторое вознаграждение.

Если вам понравилась эта книга поделитесь ею с друзьями, тем самым вы помогаете нам развиваться и добавлять всё больше интересных и нужным вам книг!


9 ресурсов об уязвимостях в вебе

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

Комплексный аудит безопасности включает в себя:

  • Атаку подбором паролей.
  • Внедрение XML-сущностей.
  • Поиск компонентов с известными уязвимостями.
  • Проверку на удаленное выполнение произвольного кода.
  • Поиск уязвимостей серверных компонентов и в веб-окружении сервера.
  • Проверку на наличие «инъекций» кода.
  • Попытки обхода системы аутентификации.
  • Поиск XSS/ CSRF-уязвимостей.
  • Попытки перехвата привилегированных аккаунтов или их сессий.
  • Проверку на возможность файловых инъекций Remote File Inclusion/ Local File Inclusion.
  • Проверку на открытые редиректы и перенаправления на другие сайты.
  • Сканирование директорий с помощью перебора и взлома через индекс Google.
  • Анализ всех форм на сайте: регистрации, авторизации, поиска и т.д.
  • Проверку на возможность открытого получения конфиденциальной информации.
  • Проверку на атаки класса Race Condition — ошибки проектирования многопоточных систем и приложений.

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

Сканеры бывают 3-х типов:

  • Сетевые. Проверяют дистанционно, подключаясь через сетевые сервисы. Самый популярный вид сканеров.
  • Пассивные. В качестве источника данных используют сетевой трафик, при этом, в отличие от сетевых, минимизируют влияние сканера на уязвимости.
  • Локальные. Устанавливаются непосредственно на проверяемом узле, благодаря чему обеспечивают высокую достоверность. Ищут уязвимости, сравнивая атрибуты файлов.

Читайте по теме

Авторское право в интернете. Памятка

Как защитить интернет-проект. Юридические тонкости

Как защитить коммерческую тайну

9 ресурсов об уязвимостях в вебе

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

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

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

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

OWASP (некоммерческой организации Open Web Application Security Project) после своего исследования представила список десяти наиболее опасных, но, в то же время, распространенных уязвимостей в программном обеспечении для интернета и веб-сервисах [1]. По мнению OWASP, на эти уязвимости стоит обратить самое пристальное внимание как государственным, так и коммерческим организациям, желающим обезопасить себя и своих клиентов от хакеров. Все указанные уязвимости достаточно широко распространены, а использовать их под силу даже малоквалифицированным хакерам, поскольку соответствующие средства взлома легко найти в сети Интернет.


1) Injection (всякого рода инъекции, в т.ч. SQL, LDAP и т.д.).

2) Cross Site Scripting (не потерявший актуальности XSS).

3) Broken Authentication and Session Management (ошибки в архитектуре аутентификации и управления сессиями).

4) Insecure Direct Object References (незащищенные ресурсы и объекты).

5) Cross Site Request Forgery (CSRF).

6) Security Misconfiguration (небезопасная конфигурация окружения, различных фреймворков, платформы).

7) Failure to Restrict URL Access (несанкционированный доступ к функционалу, требующему особых привилегий – например, обход проверки c помощью двойного «//» в URL для получения доступа к управлению блогом в WordPress).

8) Unvalidated Redirects and Forwards (открытые редиректы, которые ведут к фишингу, HTTP Response Splitting и XSS).

9) Insecure Cryptographic Storage (небезопасное хранение важных данных).

10) Insufficient Transport Layer Protection (недостаточная защита данных при их передаче на транспортном уровне, например по HTTP вместо HTTPS).

Опасность некоторых из указанных уязвимостей представлена ниже:

1) SQL-инъекции – встраивание вредоносного кода в запросы к базе данных – наиболее опасный вид атак [2]. С использованием SQL-инъекций злоумышленник может не только получить закрытую информацию из базы данных, но и, при определенных условиях, внести туда изменения. Уязвимость по отношению к SQL-инъекциям возникает из-за того, что пользовательская информация попадает в запрос к базе данных без должной обработке: чтобы скрипт не был уязвим, требуется убедиться, что все пользовательские данные попадают во все запросы к базе данных в экранированном виде.

2) PHP-инъекция (англ. PHP injection) – один из способов взлома веб-сайтов, работающих на PHP, заключающийся в выполнении постороннего кода на серверной стороне [3]. Потенциально опасными функциями являются: * eval(), * preg_replace() (с модификатором «e»), * require_once(), * include_once(), * include(), * require(), * create_function(). PHP-инъекция становится возможной, если входные параметры принимаются и используются без проверки.

3) Cross-Site Scripting – это вид уязвимости программного обеспечения (Web-приложений), при которой, на генерированной сервером странице, выполняются вредоносные скрипты, с целью атаки клиента. Сейчас XSS составляют около 15 % всех обнаруженных уязвимостей. Долгое время программисты не уделяли им должного внимания, считая их неопасными. Однако это мнение ошибочно: на странице или в HTTP-Cookie могут быть весьма уязвимые данные (например, идентификатор сессии администратора). На популярном сайте скрипт может устроить DoS-атакy.

4) CSRF (англ. Сross Site Request Forgery – «Подделка межсайтовых запросов», также известен как XSRF) – вид атак на посетителей веб-сайтов, использующий недостатки протокола HTTP. Если жертва заходит на сайт, созданный злоумышленником, от её лица тайно отправляется запрос на другой сервер (например, на сервер платёжной системы), осуществляющий некую вредоносную операцию (например, перевод денег на счёт злоумышленника).

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

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

Уязвимости сайтов

9 ноября 2020 года. Опубликовано в разделах: Азбука терминов. 4069

Больше видео на нашем канале — изучайте интернет-маркетинг с SEMANTICA

Чтобы разобраться, что такое уязвимости сайта, рассмотрим простой пример.

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

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

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

Виды уязвимостей сайта

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

SQL-инъекции

Один из самых частых и действенных методов атаки на динамические веб-сайты с базами данных. Злоумышленник подставляет специально сформированные строки SQL-кода в запрос к серверу, получая таким способом контроль над базой данных сайта. Единственное, что будет ограничивать хакера – права пользователя, от которого выполняется запрос к БД.

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

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

Способ защиты схож с SQL-инъекциями – преобразование управляющих HTML и JS последовательностей. Браузер должен читать скрипт как текст и не выполнять его.

Незащищенная работа с персональной информацией

Известная ошибка новичка-программиста – хранить пароли пользователей в базе данных в открытом виде. Но стоит представить, что хакер получил к себе дамп таблицы, и становится не по себе. Все пароли принято не только хэшировать, но ещё и «солить» с помощью некоторой операции с дополнительным ключом, например md5($pass.$salt) в PHP.

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

Проблемы распределения уровней доступа

Иногда дело доходит до того, что пароли к базе данных хранятся в .txt файле под названием config в открытом виде на сервере. Главное правило работы с уровнями доступа – все, что пользователю видеть не обязательно, должно быть скрыто. Закройте все служебные папки сайта файлами .htaccess, запретите просмотр директорий сервера в браузере при отсутствии индексного файла.


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

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

Плохая конфигурация модулей

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

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

Брутфорс-атака

Злоумышленник, не найдя уязвимых мест, может начать перебор паролей «в лоб». Запустив ботнет, рано или поздно он сможет подобрать ключи к SSH, FTP и административной панели. Поэтому всегда ставьте ограничение на допустимое количество попыток входа с одного IP. Для SSH это может быть, к примеру, утилита fail2ban.

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

Как найти уязвимость на сайте

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

  • Coder-diary. Проверяет сайт на самые популярные и простые типы уязвимостей. Забытые служебные файлы, собственная постоянно пополняемая база.
  • Find-xss. Включает в себя не только XSS-сканер, но и анализатор SQL-инъекционных атак. Комплексный и довольно популярный инструмент, выполняющий широкий спектр задач проверки сайта различные виды проблем безопасности.
  • Nikto. Входит в легендарную сборку Kali Linux. Проводит долгий и эффективный анализ всех работающих на сайте скриптов, находит устаревшее программное обеспечение и проблемные места проекта. Включает в себя множество плагинов и всегда генерирует много запросов.
  • Acunetix. Интуитивно понятный и мощный инструмент для онлайн-анализа вашего сайта. Бесплатного функционала чаще всего достаточно для первичного ознакомления с возможностями этого монстра.
  • The Metasploit Framework. Полноценный инструмент хакера. Исходя из специфики используемого протокола атаки, программа подбирает различные эксплойты и пытается взломать сервис. В связке с утилитой NMAP процесс взлома практически автоматизируется, так как она сама находит уязвимые порты и сервисы на домене.

Специалисты студии SEMANTICA проведут комплексный анализ сайта по следующему плану:

– Технический аудит.
– Оптимизация.
– Коммерческие факторы.
– Внешние факторы.

Мы не просто говорим, в чем проблемы. Мы помогаем их решить

Уязвимости web-приложений и обеспечение их безопасности

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

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

Веб-сервер формируется несколькими слоями ПО (рис.19.1), каждый из которых подвержен разнообразным способам атаки

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

Также следует вовремя обновлять все программное обеспечение , работающее на веб-сервере. Любое ПО , не относящееся к необходимым компонентам (например, DNS -сервер либо средства удаленного администрирования наподобие VNC или служб удаленных рабочих столов), следует отключить или удалить.

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

Атаки веб-серверов можно разделить на две категории: локальные и глобальные.

Локальные атаки обычно направлены на кражу информации или перехват управления на отдельном веб-сервере.

Глобальные атаки обычно направлены на несколько веб-сайтов и ставят своей целью заражение всех их посетителей.

Наиболее опасные виды сетевых атак

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

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

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

Одним из возможных средств атак является использование IDN (International Domain Name) . Дело в том, что в системах, поддерживающих IDN , допускается использование букв национальных алфавитов, а, например, некоторые буквы латинского и русского алфавитов пишутся идентично. Этим могут воспользоваться злоумышленники, они могут зарегистрировать имена, которые выглядит как имена известной фирмы, например microsoft.com, где некоторые буквы заменены на русские, так что это внешне не заметно, например, буквы с или о . Тогда при ошибочной замене одной или нескольких букв на русские клиент попадет не на сайт компании Microsoft , а на внешне неотличимый от него сайт злоумышленника.

Спуфинг ( spoofing ) — одна из разновидностей фишинга. Ее суть заключается в атаке через DNS (или каким-то иным способом), когда страница с известным URL подменяется страницей злоумышленника.

Троянский конь ( Spyware ) — программа, записывающая все нажатия клавиш на терминале или мышке, способна записывать screenshot ‘ы и передавать эти данные удаленному хозяину.

Spyware . Эта разновидность программ не обязательно вредоносна. Некоторые разработчики ПО встраивают такие программы в свои продукты, чтобы отслеживать предпочтения своих клиентов. К сожалению, не все эти программы столь безобидны. Некоторые программы spyware в соответствии со своим названием отслеживают действия хозяина машины, куда эта программа внедрена (нажатия клавиш, посещаемые сайты, конфиденциальную информацию и т.д.) и передают результаты своему хозяину. Заражение spyware может осуществиться традиционно через почту, IM ( Instant Messaging ) или в результате посещения скомпрометированного сайта.

Атаки на веб-серверы

Легальные WEB -серверы взламываются посредством следующих видов атак:

  • SQL- Injection
  • Вредоносной рекламы
  • Методом переадресации результатов работы поискового сервера
  • Через виртуальные хостинговые компании
  • Через уязвимости программ, обслуживающих форумы
  • Cross -site scripting

Одним из основных инструментов вторжения в последнее время стала атака типа » drive-by download » (загрузка файлов или скриптов без ведома хозяина). Разнообразие мультимедиа форматов также облегчает работу хакеров. Ведь пользователя обычно не удивляет необходимость загрузки новейшей версии кодека или драйвера для просмотра или прослушивания материала, размещенного на удаленном сервере.

Cross -Site Scripting (CSS) является одной из наиболее широко распространенных сетевых атак , преследующих цель, получение персональных данных с помощью веб-технологий (иногда этот вид атаки называют » HTML injection «). Задача решается за счет выполнения определенного Javascript кода в браузере жертвы. При этом получается некоторая информация, содержащаяся на машине жертвы (например, cookies ). Метод не наносит непосредственного вреда, но может предшествовать более серьезной атаке.

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

Страница же отклика должна иметь вид (как результат исполнения wellcome.cgi ):

Браузер немедленно при загрузке этой страницы исполнит встроенный Javascript код и пошлет запрос » collect.cgi script » по адресу www. attacker .site, со значением cookies =www. vulnerable .site . Cookies могут также содержать аутентификационные и авторизационные данные, что представляет уже серьезную опасность.

Файлы cookie

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

Файл cookie — это небольшой файл, создаваемый браузером и хранящийся на компьютере пользователя. Его содержимое не регламентируется, но обычно в таких файлах хранится название, дата окончания срока действия и некий объем данных, например: » Visited = 36 » или » Selected = true «.

Файл cookie сеанса позволяет веб-приложениям хранить данные в памяти.

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

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

SQL-инъекция

SQL — инъекция используется для атаки веб-сайтов, работающих с базами данных. Возможность внедрения SQL -кода возникает, если в SQL-запросах используются неотфильтрованные данные, вводимые пользователями.

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

Рассмотрим следующий PHP -код:

После того, как пользователь введет свое имя в веб-форме , SQL -запрос вернет список всех пользователей с тем же именем. Если указать в форме имя » John «, то SQL -запрос будет иметь следующий вид:

Это допустимая конструкция, которая сработает так, как и ожидается. Однако, если вместо имени ввести, например, «‘; drop table users; #» , то конструкция будет выглядеть следующим образом:

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

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

Приведенная в примере уязвимость особенно опасна, поскольку ее можно использовать для вывода закрытых данных, изменения отдельных полей или удаления информации. Некоторые СУБД также позволяют выполнять системные команды с помощью SQL .

В принципе, этот вид угрозы легко устраним благодаря проверке вводимых пользователем данных. Например, в PHP имеется специальная функция mysql_real_escape_string , удаляющая из строки потенциальный код SQL — инъекции . Ее следует использовать для фильтрации всех данных, внедряемых в SQL -инструкции.

Мастер Йода рекомендует:  Крупнейший в мире хакатон AngelHack снова пройдет в России
Добавить комментарий