<style>.lazy{display:none}</style>Руководство по тестированию безопасности веб-приложений

Руководство по тестированию безопасности веб-приложений

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

БЕСПЛАТНО СКАЧАТЬ QA КНИГИ можно в нашем телеграм канале "Библиотека тестировщика"

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

Содержание

Что такое тестирование безопасности?

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

Ключевые термины, используемые при тестировании безопасности

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

  • Уязвимость. Это слабое место в реализации веб-приложения. Причиной наличия уязвимостей могут быть ошибки в приложении, инъекции (SQL/скрипт-коды) или наличие вирусов.
  • Манипуляция URL. Некоторые веб-приложения передают дополнительную информацию между клиентом (браузером) и сервером в URL. Изменение некоторой информации в URL иногда может привести к непреднамеренному поведению сервера, и это называется манипуляцией URL.
  • SQL-инъекция. Это процесс вставки SQL-запросов через пользовательский интерфейс веб-приложения в некоторые поля как запрос, который затем выполняется сервером.
  • XSS (межсайтовый скриптинг). Когда пользователь вставляет HTML/скрипт на стороне клиента в пользовательский интерфейс веб-приложения, эта вставка становится видимой для других пользователей, и это называется XSS.
  • Спуфинг. Это создание визуальных копий сайтов и электронных писем.

Методы тестирования веб-безопасности

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

Кроме того, тестировщик должен, по крайней мере, знать основы SQL-инъекций и XSS.

Взлом пароля

Тестирование безопасности веб-приложения можно начать со “взлома пароля”. Для того чтобы войти в защищенные разделы приложения, можно либо угадать имя пользователя/пароль, либо использовать какой-либо инструмент для взлома паролей. Список распространенных имен пользователей и паролей доступен вместе с программами для взлома паролей с открытым исходным кодом.

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

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

Манипуляция URL с помощью GET-методов HTTP

Тестировщик должен проверить, передает ли приложение важную информацию в строке запроса. Это происходит, когда приложение использует GET-метод HTTP для передачи информации между клиентом и сервером.

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

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

SQL-инъекция

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

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

Чтобы проверить точки входа SQL-инъекций в ваше веб-приложение, найдите в кодовой базе код, в котором выполняются прямые запросы MySQL к базе данных, принимая некоторые пользовательские данные.

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

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

Межсайтовый скриптинг (XSS)

Тестировщик должен дополнительно проверить веб-приложение на наличие XSS (межсайтового скриптинга). Любой HTML, например, <HTML> или любой скрипт, например, <SCRIPT>, не должны приниматься приложением. Если они принимаются, то приложение может быть подвержено XSS-атаке.

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

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

Например, http://www.examplesite.com/index.php?userid=123&query=xyz.

Злоумышленник может легко передать некоторые вредоносные данные или <script> в качестве параметра '&query', с помощью чего можно заполучить важные данные пользователя/сервера через браузер.

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

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

Кроме того, следует избегать проведения тестирования безопасности в продакшен-среде.

Заключение

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

Перевод статьи “Web Application Security Testing Guide”

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *