Обеспечение должной безопасности веб-приложений — это очень важная, актуальная и не простая задача, с которой сталкиваются все команды, разрабатывающие соотвествующие продукты. Думать о безопасности следует начинать как можно раньше. Тестирование безопасности обеспечивает обратную связь команде о состоянии продукта. Согласно ISO 9126 тестирование безопасности является частью функционального тестирования. SWEBOK определяет тестирование безопасности как проверку того, что программное обеспечение защищено от внешних атак: в частности, включает проверки конфиденциальности, целостности и доступности систем и их данных. Решить эту непростую задачу помогают автоматизированные инструменты тестирования, направленные на поиск уязвимостей продукта.
Тестирование безопасности в автоматизированном режиме обладает следующими основными преимуществами:
- экономия и рациональное использование рабочего времени, так как сканирование может проводиться в фоновом режиме по установленному расписанию (например ночью, на выходных),
- выполняться для нескольких сборок или приложений в одно и тоже время,
- параллельный запуск нескольких тестовых сценариев, для увеличения тестового покрытия,
- большое кол-во встроенных разнообразных проверок,
- генерируемый отчет о результатах тестирования (может содержать как результаты тестирования, оценку безопасности продукта, а также пути устранения найденных уязвимостей).
ВАЖНО: автоматизация не заменяет человеческого участия в процессе: результаты, полученные в результате выполнения автоматизированных тестов, необходимо оценить с критической точки зрения и проанализировать для принятия дальнейших решений.
Web Application Attack and Audit Framework(w3af)
w3af — это бесплатный сканер безопасности веб-приложений с открытым исходным кодом, позволяющий проводить тестирование как в ручном так и автоматизированном режимах, с использованием графического интерфейса и интерфейса командной строки. Сканер способен идентифицировать более 200 уязвимостей, в том числе межсайтовый скриптинг, SQL-инъекции. Среди особенностей хотелось бы отметить:
- Широкий спектр плагинов.
- Информативный отчет с результатами тестирования, с возможностью экспорта данных в различных форматах.
- Встроенный прокси-сервер с возможностью редактирования запросов на лету.
- Наличие документации
- Неустойчивая работа под Windows.
SkipFish
SkipFish бесплатный сканер безопасности с открытым кодом, строит детальную интерактивную карту выбранного сайта, используя рекурсивный метод. Утилита не обладает графическим интерфейсом. Полный список проверок и документация доступны тут. Обзор SkipFish на русском. Среди особенностей можно выделить:
- Высокая скорость работы (до 2000 запросов в секунду).
- Простота в использовании.
- Отчет с результатами тестирования в формате html.
- Длительное время сканирования.
SQLMap
SQLMap бесплатный сканер с открытым исходным кодом, главная задача которого — автоматизированный поиск и эксплуатация SQL-инъекций. Основной особенностью сканера является эксплуатация найденной уязвимости, кроме того это:
- поддержка 5 основных классов SQL-инъекций: boolean-based blind, time-based blind, error-based, UNION query, stacked queries.
- поддержка различных баз данных: MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase, SAP MaxDB, HSQLDB and Informix.
- возможность сделать дамп БД.
- Генерируемых отчет в html-формате: используем python-скрипт в командной строке SQLMap: «/tmp/scan_out.txt»
Полный список особенностей и основной сценарий работы можно посмотреть в статье (на русском). Полезная статья об использовании SQLMap на owasp.org.
Acunetix Web Vulnerability Scanner
Acunetix платный автоматизированный сканер безопасности web-приложений (есть бесплатная десктопная версия на 14 дней, также доступна бесплатная веб-версия). Ищет множество уязвимостей, включая SQL-инъекции, межсайтовый скриптинг и слабые пароли. Особенности работы сканера:
- интуитивно понятный графический интерфейс,
- максимальная автоматизация. Пользователю следует только указать целевой ресурс, записать сценарий авторизации, указать игнорированные транзакции (зачастую это сценарий выхода).
- отображение результатов сканирования в реальном времени.
- создание подробного отчета с результатами тестирования, в том числе с указанием способов устранения найденных проблем.
- Параллельная проверка нескольких ресурсов.
- Наличие документации.
Nikto
Nikto веб-сканер с открытым исходным кодом, проверяющий веб-серверы на самые частые ошибки, зачастую возникающие из-за человеческого фактора. Проверяет наличие неправильных конфигурационных файлов; файлов исполняемых сценариев; устаревшего программного обеспечения. Документация доступна тут.
Для геренации отчета с результатами тестирования в формате html используем команду:
$ nikto -h test.com -Display V -F htm -output testrelults.html
Среди особенности стоит отметить факт ложного срабатывания по обнаружению уязвимостей.
Burp Suite
Burp Suite — это платная (бесплатная содержит ограниченный функционал) мощная платформа для тестирования безопасности веб-приложений как в ручном так и автоматизированном режимах с интуитивно понятным интерфейсом, включает инструменты по созданию карты веб-приложения, изменения запросов, фаззинга и т.д. Является одним из самых популярных инструментов тестирования безопасности, как говорится «его рекомендуют друзьям». Основной функционал представлен в следующих модулях:
- Proxy — перехватывающий прокси-сервер, работающий по протоколу HTTP(S) в режиме man-in-the-middle. Требуется также прописать прокси в целевом браузере, а для перехвата запросов по HTTPS установить сертификаты безопасности.
- Spider — паук, собирающий в автоматическом режиме информацию о об архитектуре веб-приложения.
- Scanner — автоматический сканер уязвимостей, который доступен только в professional версии.
- Intruder — утилита, позволяющая в автоматическом режиме производить атаки различного вида, с возможностью загрузки пользовательских файлов. Возможно проведение таких атак как: подбор пароля, перебор идентификаторов, фаззинг и т.д.
- Repeater — позволяет изменять и отправлять повторно отдельные запросы и получать ответы для дальнейшего анализа.
- Sequencer — инструмент, используемый для генерации случайных непредсказуемых данных.
- Decoder — полезный инструмент для ручного или автоматизированного де/кодирования данных приложения.
- Comparer — удобная утилита для выявления различий в данных.
Среди особенностей стоит отметить:
- возможность обнаружения большого числа разнообразных уязвимостей.
- поддержку ряда веб-технологии: REST, JSON, AJAX и SOAP,
- возможность тестирования безопасности мобильный приложений платформы iOS (Burp Suite Mobile Assistant).
- Отчет содержит не только список проверок, но и рекомендации по устранению уязвимостей.
Документация по Burp Suite на английском. Основной сценарий работы включая установку, настройку и запуск можно посмотреть тут и обзорная статья на Хабре.
OWASP ZAP
OWASP Zed Attack Proxy Project (ZAP) — один из самых известных инструментов для тестирования безопасности веб-приложений. Является бесплатным кросс-платформенным, простым в использовании, мультиязычным (переведен на множество языков) инструментом с открытым исходным кодом. Включает в себя: перехватывающий прокси, активный и пассивный сканеры, поддержку веб-сокетов, поддержку аутентификаций и сессий, поддержку большого кол-ва скриптовых языков и т.д.
Список всей необходимой документации доступен здесь. OWASP ZAP является один из самых активных проектов OWASP
Netsparker
Netsparker платный инструмент для поиска уязвимостей для всех типов веб-приложений, таких как SQL Injection и Cross-Site Scripting (XSS). Есть как десктопное так и облачное решение Netsparker Cloud. Очень прост в использовании, следует указать только адрес целевого ресурса, логин и пароль пользователя, под которым выполнять аутентификацию, а также выбрать скорость тестирования. Отчет о ходе тестирования отображается в реальном времени. Также инструмент анализирует структуру веб-сайта на предмет раскрытия служебной информации, такой как резервные копии данных, отладочные веб-скрипты, скрытые каталоги и т.д. Среди особенностей стоит отметить:
- Полная поддержка HTML 5.
- Поддержка AJAX / JAVASCRIPT.
- Поддержка веб-ресурсов, использующих механизм защиты ANTI-CSRF TOKEN.
- По результатам тестирования оценивается состояние продукта, предоставляется подробная информация о найденных уязвимостях.
Документация на английском тут.
MindMap основного сценария использования сканеров.
Итоги
- Помним, что проводимые тестовые испытания могут существенно повредить тестируемый продукт. Поэтому следует согласовать со всеми заинтересованными лицами расписание испытаний и выполнить все необходимые подготовительные действия.
- Важно выбрать оптимальную скорость автоматического тестирования безопасности:слишком высокая скорость может создать высокую нагрузку на сервер, слишком низкая может привести к высоким временным затратам.
- Для всестороннего анализа следует использовать несколько инструментов.
- Использование средств автоматизации не исключает человеческого участия в процессе тестирования безопасности.
- И конечно же, необходимо учесть, что создаваемые тесты должны быть легко поддерживаемыми в будущем.
Благодарности
Хочу выразить благодарность Веселину Андрею за помощь в подготовки материалов, а также проведенное тестирование безопасности наших веб-приложений. Также хочу поблагодарить Хлебухова Александра и Ивакина Дмитрия за дельные замечания. Спасибо всем большое)