2.1. Методология тестирования веб-приложений

 

Терминология

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

Аудит (Audit) — это систематический обзор процессов и процедур организации, чтобы убедиться, что они соответствуют установленным политикам и нормам. Аудит включает в себя обзор документации и собеседование с сотрудниками, чтобы выявить области несоответствия и потенциальные риски.

Оценка уязвимостей (Vulnerability assessment) — это процесс выявления, количественной оценки и приоритизации уязвимостей безопасности в системе или сети. Эта оценка обычно включает использование автоматизированных инструментов и техник для сканирования известных уязвимостей, таких как не обновлённые программы, слабые пароли и неправильные настройки.

Тестирование на проникновение (Penetration testing) — это симуляция атаки на компьютерную систему для выявления уязвимостей и оценки эффективности существующих мер безопасности. Это тестирование обычно выполняется этичными хакерами, которые используют те же инструменты и техники, что и реальные злоумышленники, чтобы получить доступ к системе. Оценка уязвимости и тестирование на проникновение во многом схожи, так как на начальных этапах проводят похожие операции. Однако основная задача анализа уязвимости найти определенную уязвимость в то время, как задача тестирования на проникновение пойти дальше. То есть, используя найденную уязвимость, взломать систему и получить к ней доступ.

Этичный хакинг (Ethical hacking) — это практика использования тех же техник и методов, что и криминальные хакеры, для выявления и эксплуатации уязвимостей в системе. Однако этичные хакеры делают это с разрешения владельца и с целью улучшения безопасности, а не причинения вреда.

Багхантинг (bug hunting) — это процесс поиска и выявления программных ошибок (багов) в компьютерных системах, веб-приложениях, мобильных приложениях и других программных продуктах.

Багхантеры (bug hunters) ищут ошибки, которые могут привести к различным проблемам, таким как нарушение безопасности, сбои системы или неправильное функционирование. Они используют различные методы для поиска ошибок, включая ручной анализ кода и автоматизированные инструменты для сканирования.

Некоторые компании и организации проводят программы багхантинга, в рамках которых они предлагают награды за выявление определенных видов ошибок. Это позволяет компаниям обнаружить и устранить проблемы в их программном обеспечении, улучшить безопасность и повысить доверие пользователей к продукту. Для багхантеров это возможность улучшить свои навыки в тестировании и заработать на этом неплохие деньги.

 

Методы тестирования

При тестировании приложений и прочих систем все хакеры используют один из 3-х подходов:

  • White box (переводится как Белый ящик) – хакер договаривается с владельцем сайта/системы и получает от него полный доступ к системе и многие другие данные. Что это могут быть за данные? URL и ссылки к скрытым разделам сайта, списки пользователей, пароль администратора, доступ к коду приложения и многое другое в зависимости от целей тестирования.
  • Black box (Черный ящик) – в отличие от первого подхода хакер вообще не получает никакой информации, кроме URL сайта. Поэтому ему приходится применить все свои знания и опыт, чтобы узнать как можно больше информации об объекте, которая бы ему позволила взломать систему.
  • Grey box (Серый ящик) – комбинация двух предыдущих методов, когда хакеру доступна от владельца лишь часть информации.

 

Шаги тестирования

Обычно процесс тестирования разделяют на несколько условных шагов, которые перечислены ниже.

Сбор информации: В этом шаге проводится сбор информации о целевом приложении, включая его архитектуру, технологии, используемые на сервере, базы данных, сетевую конфигурацию и т. д. Это может включать использование различных методов, таких как сканирование портов, поиск информации в открытых источниках, сканирование веб-приложения, анализ кода, перехват сетевого трафика и т. д.

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

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

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

Составление отчета: В этом шаге проводится анализ результатов тестирования, оценка их значимости и подготовка отчета. Отчет обычно включает в себя список обнаруженных уязвимостей, описания их воздействия на приложение и советы по устранению этих уязвимостей.

Иногда некоторые шаги объединяются или наоборот, разделяются на более мелкие. Все зависит от ситуации.

 

OWASP

Думаю, наверняка некоторые из вас думают: «А существует ли какое-нибудь руководство или чек-лист, который бы позволил новичку быстро сориентироваться и приступить к тестированию в правильной последовательности?».

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

OWASP (Open Web Application Security Project) - это некоммерческая международная организация, которая занимается повышением безопасности веб-приложений и других технологий.

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

Среди проектов OWASP можно выделить:

OWASP Top 10 - это руководство, которое перечисляет наиболее распространенные уязвимости веб-приложений и предоставляет рекомендации по их устранению.

OWASP ZAP (Zed Attack Proxy) - это инструмент для тестирования безопасности веб-приложений, который позволяет обнаруживать уязвимости и проводить их эксплуатацию для проверки защищенности приложения. Аналогом такого инструмента является программа Burp Suite от компании PortSwigger. Мы рассмотрим обе эти программе в этом курсе.

OWASP WSTG (Web Security Testing Guide) – руководство по тестированию веб-приложений. Оно содержит описание большинства сетевых атак и методик тестирования.

OWASP CSS (Cheat Sheet Series) – это документ был разработан специально для разработчиков и пентестеров. Он содержит рекомендации как обезопасить веб-приложение, написать безопасный код и защититься от сетевых атак. Думаю, любой специалист по безопасности должен уметь не только тестировать и взламывать сайты, но и знать, как их защитить.

OWASP OWTF (Offensive Web Testing Framework) — это еще один инструмент или точнее фреймворк для тестирования безопасности веб-приложений, который используется для поиска уязвимостей в приложении с помощью методов, применяемых злоумышленниками.

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

Целью всех проектов OWASP является повышение безопасности веб-приложений и защита пользователей от кибератак.

В течение курса мы будет активно использовать инструменты и руководства OWASP для изучения этичного хакинга.