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

Гайд

Пентест веб-приложений: как это работает

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

  • Обновлено: август 2026
  • Автор: аналитик AppSec Rating RU
  • Чтение: 9 минут

Что такое пентест веб-приложения

Пентест (penetration testing, тестирование на проникновение) веб-приложения — это контролируемая имитация атаки на сайт, сервис или API силами специалистов, которых нанимает сама компания-владелец приложения. Цель — найти эксплуатируемые уязвимости раньше, чем это сделает реальный злоумышленник, и получить конкретный список того, что нужно исправить, с доказательством, что проблема действительно существует и может быть использована на практике, а не только теоретически.

В отличие от автоматического сканирования, пентест — это прежде всего работа человека: специалист изучает логику конкретного приложения, продумывает нестандартные сценарии использования и пытается сломать бизнес-процессы так, как это делал бы реальный атакующий, а не просто прогоняет приложение через базу известных сигнатур уязвимостей. Инструменты статического и динамического анализа (SAST и DAST) применяются как подспорье, а не как замена этой работе.

Важно разделять понятия внутри самого пентеста. Внешний пентест проверяет то, что доступно из интернета без специального доступа — сам сайт, публичные API, административные интерфейсы, если они случайно оказались доступны снаружи. Внутренний пентест моделирует ситуацию, когда атакующий уже получил ограниченный доступ — например, скомпрометировал учётную запись обычного сотрудника — и проверяет, как далеко можно продвинуться дальше.

Виды тестирования по объёму данных

Чёрный ящик (black box)

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

Серый ящик (grey box)

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

Белый ящик (white box)

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

Этапы пентеста

Планирование и согласование scope

Заказчик и подрядчик согласовывают точные границы проверки: какие именно домены, поддомены и функции приложения входят в тест, какие методы разрешены (например, допустима ли социальная инженерия против сотрудников или проверка через реальные платежи), в какое время можно проводить нагрузочные проверки, чтобы не повлиять на работу продуктивной среды и реальных пользователей. На этом этапе также фиксируется, что считается «успешной эксплуатацией» и как быстро подрядчик должен сообщить о найденной критической уязвимости — не дожидаясь финального отчёта.

Разведка (OSINT)

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

Сканирование и поиск уязвимостей

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

Эксплуатация найденных уязвимостей

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

Составление отчёта

Результаты оформляются в структурированный документ: список уязвимостей с доказательством эксплуатируемости (Proof of Concept), оценка критичности по шкале CVSS, конкретные рекомендации по устранению для каждой находки. Формат и глубина отчёта — один из главных практических показателей качества подрядчика, который заказчик может оценить сразу после завершения проекта.

Ретест после устранения уязвимостей

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

Методологии и стандарты

OWASP Testing Guide

Открытая методология международного сообщества OWASP, описывающая, что и как проверять в веб-приложении: от управления сессиями и аутентификации до тестирования бизнес-логики и клиентской части. Наиболее широко используемый стандарт именно для веб-приложений на российском и мировом рынке благодаря открытости и регулярному обновлению.

PTES

Penetration Testing Execution Standard — методология, описывающая полный цикл пентеста от предварительного взаимодействия с заказчиком до финального отчёта, применимая не только к веб-приложениям, но и к инфраструктуре, беспроводным сетям и социальной инженерии в целом. Многие российские команды используют PTES как основу собственной внутренней методологии.

NIST SP 800-115

Технический руководящий документ американского института стандартов NIST (National Institute of Standards and Technology) по тестированию и оценке информационной безопасности. Используется как один из международных референсов при построении собственных методологий российских команд, особенно в части структурирования этапов проверки.

OSSTMM

Open Source Security Testing Methodology Manual — открытая методология тестирования безопасности, охватывающая не только техническую, но и организационную сторону защиты, включая физическую безопасность и человеческий фактор в более широких проектах уровня Red Teaming.

Что входит в отчёт по итогам пентеста

Полноценный отчёт содержит три элемента, отсутствие любого из которых — признак поверхностной, а не проектной проверки.

Proof of Concept
Воспроизводимая цепочка действий, доказывающая, что уязвимость реально эксплуатируема, а не теоретически возможна: конкретный запрос, конкретный ответ сервера, конкретные шаги для повторения.
Оценка по CVSS
Стандартизированная метрика критичности от 0 до 10, позволяющая объективно приоритизировать устранение находок независимо от того, кто читает отчёт.
Резюме для руководства
Краткое описание бизнес-риска без технического жаргона, чтобы решение о приоритетах могли принимать не только технические специалисты, но и руководство, утверждающее бюджет на исправления.

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

Кто проводит пентест со стороны подрядчика

Типовая команда проекта — не один универсальный специалист, а несколько ролей. Технический лидер проекта отвечает за общую стратегию тестирования и финальную проверку отчёта. Один или несколько пентестеров непосредственно проводят активное тестирование — их число зависит от объёма приложения и срока проекта. Отдельно может привлекаться специалист по конкретному узкому направлению — например, по анализу мобильных клиентов, если веб-приложение имеет мобильную версию с собственным API, или по анализу криптографических механизмов, если приложение работает с шифрованием данных пользователей.

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

Чем пентест отличается от программы Bug Bounty

Bug Bounty — программа, в рамках которой компания открыто приглашает независимых исследователей безопасности искать уязвимости в своём приложении за вознаграждение, без ограничения по времени и без единой команды, гарантированно покрывающей весь scope. Пентест — это проект с фиксированными сроками, согласованным заранее объёмом проверки и конкретной командой, которая гарантированно потратит оговорённое время на весь согласованный scope, а не только на те части приложения, которые оказались интересны конкретному внешнему исследователю.

Многие зрелые компании используют оба формата параллельно: пентест как системную регулярную проверку, Bug Bounty — как постоянный источник дополнительной проверки уже протестированного приложения между плановыми пентестами.

Как часто нужно проводить пентест веб-приложения

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

Частые вопросы

Чем пентест отличается от аудита безопасности?

Аудит — это более широкая проверка процессов, конфигураций и соответствия стандартам, часто без попытки реально эксплуатировать найденные слабые места. Пентест — это симуляция атаки с обязательным подтверждением эксплуатируемости через Proof of Concept.

Нужна ли лицензия ФСТЭК для пентеста?

Для коммерческого пентеста веб-приложения, не относящегося к государственным информационным системам или объектам критической информационной инфраструктуры, лицензия формально не обязательна. Для ГИС и объектов КИИ она требуется по приказам ФСТЭК №17 и №239.

Сколько длится пентест веб-приложения?

Специалисты отрасли сходятся на ориентире 3–4 недели для типового проекта — конкретный срок зависит от объёма приложения, числа ролей пользователей и глубины проверки (чёрный, серый или белый ящик).

Можно ли провести пентест на продуктивной среде без риска для реальных пользователей?

Да, при правильном планировании: заказчик и подрядчик заранее согласовывают, какие действия допустимы (например, исключается реальное списание средств), в какое время можно проводить наиболее агрессивные проверки и как быстро останавливать тест при обнаружении неожиданного влияния на работу приложения.