Введение и цели
В этом разделе представлена методология тестирования безопасности веб-приложений от Kraken, а также объясняется, как проводить тестирование для выявления уязвимостей в приложении, связанных с недостатками в существующих мерах безопасности.
Что такое тестирование безопасности веб-приложений?
Тестирование безопасности — это метод оценки безопасности компьютерной системы или сети, который включает систематическую проверку эффективности средств защиты приложений. Тестирование безопасности веб-приложений сосредоточено исключительно на оценке безопасности конкретного веб-приложения. Этот процесс включает активный анализ приложения на наличие слабых мест, технических ошибок или уязвимостей. Все обнаруженные проблемы безопасности будут представлены владельцу системы с оценкой их воздействия и предложением по устранению или техническому решению.
Что такое уязвимость?
Уязвимость — это недостаток или слабое место в дизайне, реализации, эксплуатации или управлении системой, которое может быть использовано для нарушения её безопасности.
Что такое угроза?
Угроза — это любое событие или лицо (например, злонамеренный внешний атакующий, внутренний пользователь, нестабильность системы и т. д.), которое может нанести вред ресурсам приложения (ценным данным, например, данным в базе данных или файловой системе) путем эксплуатации уязвимости.
Что такое тест?
Тест — это действие, которое демонстрирует, что приложение соответствует требованиям безопасности своих заинтересованных сторон.
Подход к написанию этого руководства
Подход Kraken является открытым и совместным:
- Открытость: любой специалист по безопасности может участвовать, делясь своим опытом. Все материалы доступны бесплатно.
- Совместная работа: перед написанием статей проводится мозговой штурм, чтобы команда могла поделиться идеями и разработать общее видение проекта. Это способствует широкому участию и обсуждению.
Этот подход создает определённую методологию тестирования, которая будет:
- Последовательной
- Воспроизводимой
- Строгой
- Под контролем качества
Все выявленные проблемы документируются и тестируются. Важно использовать метод для проверки всех известных уязвимостей и документировать все действия по тестированию безопасности.
Что такое методология тестирования Kraken?
Тестирование безопасности никогда не будет точной наукой, и невозможно составить полный список всех возможных проблем для тестирования. Тем не менее, тестирование безопасности — это подходящий метод для проверки безопасности веб-приложений в определённых условиях. Цель этого проекта — собрать все возможные техники тестирования, объяснить их и поддерживать актуальность руководства. Метод Kraken по тестированию безопасности веб-приложений основан на подходе «чёрного ящика», когда тестировщик имеет мало или вовсе не имеет информации о тестируемом приложении.
Модель тестирования включает:
- Тестировщик: человек, проводящий тестирование.
- Инструменты и методология: основа этого проекта по тестированию.
- Приложение: «чёрный ящик», который необходимо протестировать.
Тестирование можно классифицировать как пассивное или активное:
Пассивное тестирование
Во время пассивного тестирования тестировщик пытается понять логику приложения и исследует его как обычный пользователь. Для сбора информации можно использовать различные инструменты. Например, HTTP-прокси может помочь отслеживать все HTTP-запросы и ответы. По завершении этой фазы тестировщик должен в целом понимать все точки доступа и функциональные возможности системы (например, HTTP-заголовки, параметры, куки, API, технологии и их использование и т. д.). В разделе «Сбор информации» объясняется, как проводить пассивное тестирование.
Пример: тестировщик может обнаружить страницу по следующему URL: https://www.example.com/login/auth_form
, что может указывать на форму аутентификации, где приложение запрашивает имя пользователя и пароль.
Следующие параметры представляют две точки доступа к приложению: https://www.example.com/appx?a=1&b=1
. В этом случае приложение показывает две точки доступа (параметры a и b). Все найденные точки ввода на этом этапе становятся объектами для тестирования. Полезно сохранять структуру каталогов или дерево вызовов приложения и все точки доступа для последующего активного тестирования.
Активное тестирование
Во время активного тестирования тестировщик начинает использовать методологии, описанные в следующих разделах.
Набор активных тестов разделён на 12 категорий:
- Сбор информации
- Тестирование управления конфигурацией и развертыванием
- Тестирование управления идентификацией
- Тестирование аутентификации
- Тестирование авторизации
- Тестирование управления сессиями
- Тестирование валидации ввода
- Обработка ошибок
- Криптография
- Тестирование бизнес-логики
- Тестирование на стороне клиента
- Тестирование API