Перейти к содержанию

Введение и цели

В этом разделе представлена методология тестирования безопасности веб-приложений от 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 категорий:

  1. Сбор информации
  2. Тестирование управления конфигурацией и развертыванием
  3. Тестирование управления идентификацией
  4. Тестирование аутентификации
  5. Тестирование авторизации
  6. Тестирование управления сессиями
  7. Тестирование валидации ввода
  8. Обработка ошибок
  9. Криптография
  10. Тестирование бизнес-логики
  11. Тестирование на стороне клиента
  12. Тестирование API