Интернет стал эффективным способом коммуникаций с деловыми партнерами и клиентами, поиска новых поставщиков и рынков сбыта. Важную роль здесь играют сайты, которые давно уже не являются простыми виртуальными витринами и рекламными проспектами. Веб-приложения работают с базами клиентов и поставщиков, принимают платежи с банковских карт. Поэтому взлом сайта злоумышленниками приводит не только к имиджевым, но и к финансовым потерям.
Чтобы предотвратить атаку, необходимо вовремя обнаружить и устранить «слабые места» веб-ресурса. Для их поиска существуют утилиты, предназначенные для поиска «багов» в системе управления сайтом, серверном ПО и коде веб-сайта.
Типы уязвимостей
Чтобы защититься от опасности взлома, нужно знать основные методы работы хакеров. Нестандартные методы взлома требуют высокой квалификации. Специалистов, способных справиться с такой работой, мало и их время стоит больших денег. Поэтому они не будут заниматься взломом сайтов-визиток или порталов средних компаний. Их цель — банковские системы и «киты» IT-индустрии. Опасаться нужно не слишком опытных взломщиков, которые в своей «работе» используют 10 стандартных уязвимостей:
Инъекции — передача интерпретатору программного кода, замаскированного под пользовательские данные или запросы браузера.
Ошибки аутентификации — некорректная работа функций управления сессиями и проверки подлинности.
Уязвимость XSS (Cross-Site Scripting)— код JavaScript, запускающийся в браузере пользователя для кражи его данных. Для сайта это означает, как минимум. репутационные потери.
Ошибки разграничения доступа — ситуация, когда информация и управляющие элементы для администрирования веб-ресурса становятся доступными обычным пользователем.
Неправильная конфигурация сервера и приложения, открывающая путь для хакерских атак.
Незащищенная передача данных. Если персональная информация, пароли, ключи и токены передаются в открытом виде, злоумышленники могут получить к ним доступ.
Плохая защита. Правильно настроенное ПО должно реагировать на атаки, автоматически блокировать их, записывать лог и отправлять администратору.
Уязвимость CSRF (Cross-Site Request Forgery) — разновидность вредоносного кода, которая заставляет браузер жертвы генерировать HTTP-запросы к уязвимому веб-приложению.
Компоненты с уязвимостью. Некоторые библиотеки, плагины, фреймворки и программные модули имеют «дыры», которыми могут воспользоваться злоумышленники. Их использование подрывает безопасность всего проекта.
Незащищенный API — ошибки программного интерфейса приложения, которые создают уязвимости.
Как обнаружить уязвимость сайта
Этот вопрос интересует разработчиков, владельцев сайта и, конечно же, хакеров. Если одним это нужно, чтобы обезопасить проект и конфиденциальные данные, другие используют чужие ошибки в собственных интересах. Задача владельца ресурса состоит в том, чтобы найти и устранить все уязвимые места веб-проекта, пока ими не воспользовались злоумышленники.
Для этого нет необходимости (а у хакеров — даже возможности) лично проверять тысячи строк программного кода и файлы конфигурации. С задачей прекрасно справляются специализированные приложения — сканеры защищенности сайтов. Они проверяют наличие уязвимостей на конкретном сервере или в веб-приложении, находят в сети веб-ресурсы с «дырами» программного обеспечения.
Сканеры ищут ошибки и уязвимости, которые возникают на всех этапах жизни проекта: во время разработки, внедрения, настройки и работы сайта. Как оружие в реальном мире, они могут быть использованы как для защиты, так и для нападения. Это нашло отражение даже в терминологии. Одни называют приложения для поиска ошибок сканерами уязвимости, другие — сканерами безопасности.
Как работают сканеры
Приложения находят уязвимости и формируют отчеты с найденными багами и предложениями по их устранению. Для этого используются два механизма:
зондирование — имитация разнообразных атак для проверки устойчивости системы;
сканирование — поиск уязвимости по косвенным признакам.
Первый вариант более точен, второй отнимает значительно меньше времени.
Классический алгоритм работы сканера включает три этапа:
Проверка заголовков для получения информации о установленном ПО и его версиях. Это позволяет получить сведения о возможностях «дыр», характерных для устаревшего программного обеспечения.
Зондирующая проверка, состоящая в сравнении цифровых слепков фрагментов программ с образцами, содержащими уязвимость.
Имитация атаки с использованием возможных «дыр», которые не определяются сканированием. Надежная и медленная операция, применение которой не всегда допустимо — такие действия могут вызвать сбой работы узла.
Перечисленные функции имеют все сканеры безопасности, независимо от алгоритма, типа интерфейса и операционной системы.
Чем проверить сайт
В сети представлены десятки программ, которые распространяются на платной и бесплатной основе. Коротко расскажем о четырех из них:
Nikto — консольный сканер, написанный на языке Perl. Поэтому для его запуска система должна иметь поддержку Perl с подключенными модулями LibWhisker и Net. Среди возможностей Nikto стоит отметить функцию обхода большинства известных систем обнаружения вторжения, что позволяет сканировать сервера с IDS.
Программа запускается из командной строки. Настройки выполняются путем редактирования файла конфигурации и указания параметров командной строки.
Arachni — свободно распространяемое ПО с веб-интерфейсом для сканирования уязвимостей. Для сканирования достаточно указать адрес веб-ресурса и запустить процесс. Сканер работает в автономном режиме и не требует участия пользователя.
Skipfish — консольное приложения для тестирования защищенности сайта. Сканирование включает два этапа: создание интерактивной карты компонентов и зондирование каждого из них. Программа умеет работать с аутентификацией, поддерживает cookies и позволяет управлять глубиной и качеством сканирования.
OWAP ZAP — удобная программа для тестирования веб-приложений, отличающаяся оконным интерфейсом и наличием четырех режимов тестирования. Работает под OS X, Linux и Windows.
Сканеры уязвимостей облегчают работу по обеспечению безопасной работы сайтов. На основании отчетов администраторы и разработчики принимают меры по защите веб-ресурса: обновляют серверное ПО и CMS, закрывают или меняют порты, вносят изменения в код веб-приложения и протоколы авторизации.