Тесты на проникновение в веб-приложения — это лучшее решение для противостояния компьютерным атакам. Разве не говорят, что лучшая защита — это нападение? Эта пословица как нельзя лучше описывает принцип тестирования на проникновение, который заключается в проверке безопасности приложения или другой системы путем проведения различных атак с целью выявления потенциальных технических и логических уязвимостей.
При проведении тестирования на проникновение веб-приложений возможны три подхода: тестирование «черного ящика», тестирование «серого ящика» или тестирование «белого ящика». Эти подходы соответствуют различным уровням информации и доступа, предоставляемого пентестерам. Тестирование «черного ящика» нацелено на поверхность атаки, доступную любому внешнему злоумышленнику, в то время как тестирование «серого ящика» будет включать элементы, предоставленные клиентом (и не доступные иным способом). Тест на проникновение «белого ящика» позволяет проанализировать уровень безопасности, имея весь или часть исходного кода приложения и доступ к инфраструктуре, на которой оно размещено.
Тесты на проникновение в веб-приложения позволяют искать уязвимости, связанные с конфигурацией веб-серверов, а также уязвимости, связанные с прикладным уровнем. На стороне сервера к ним относятся открытые и небезопасные службы, устаревшее программное обеспечение или ошибки в конфигурации.
Что происходит после пентеста
После проведения теста на проникновение предоставляется полный отчет. Этот документ включает в себя использованную методологию, выявленные уязвимости (классифицированные по уровню критичности: низкий, важный, критический), возможную эксплуатацию и рекомендации по устранению. Презентация результатов аудита пентестером(ами), ответственным за аудит, позволяет обсудить результаты аудита безопасности.
Технические и логические уязвимости
Помимо технических уязвимостей, часто забывают о логических уязвимостях
Технические уязвимости присущи веб-приложениям. Помимо этих уязвимостей, существуют также логические недостатки, которые связаны с рабочими процессами и не могут быть обнаружены с помощью автоматических инструментов (сканеров и других). Что такое логический недостаток?
Логический недостаток существует тогда, когда нормальное функционирование приложения, то есть логический шаг или запланированный процесс, можно обойти.
Конкретный пример логического изъяна, обнаруженного в ходе теста на проникновение «черного ящика» на платформе электронной коммерции:
- Создание учетной записи для совершения покупок на платформе.
- Добавление товаров в корзину, а затем переход к этапу проверки корзины.
- Изменение цены добавленных в корзину товаров (без изменения их ссылок) путем прямого редактирования HTML-кода, что привело к уменьшению «отображаемой» стоимости нашей корзины.
- Наконец, стало возможным подтвердить оплату нашей корзины (по сниженному тарифу), поскольку цена, указанная в запросе на оплату, отправленном в банк, брала за основу цену корзины, отображаемую в нашем браузере.
Это стало возможным потому, что платформа не проводила никакой проверки и полагалась на ввод данных пользователем. Для безопасности желательно, чтобы сервер указывал цену для оплаты банку в соответствии со ссылкой на желаемые продукты. Отображение цены на стороне пользователя должно быть лишь визуальным указанием для себя, а не значением, которое нужно принимать во внимание.
Короче говоря, логические недостатки, как правило, являются результатом недостатков в дизайне веб-приложений или отсутствия тщательного тестирования с точки зрения безопасности. А если есть тестирование безопасности, то необходимо сосредоточиться на том, чего приложение не должно допускать, чтобы обнаружить его логические недостатки.
Веб-приложения и безопасность
Все больше компаний доверяет общение с клиентам и предоставление услуг веб-приложениям. Через них проходят конфиденциальные данные, собираются номера карт и адреса, что может служить заманчивой целью для преступников. Проведение пентеста веб-приложений способно предупредить возможные риски, чтобы избежать их в будущем.