Практика
Пентест веб-приложения по методике OWASP
Пентест веб-приложения по OWASP: 12 областей проверки WSTG, что такое OWASP Top 10 и ASVS, чёрный и серый ящик, этапы и сроки, что должно быть в отчёте.
Коротко. Пентест веб-приложения — это ручная проверка сайта, личного кабинета, интернет-магазина или API, при которой специалист с письменного разрешения владельца пытается взломать приложение так, как это сделал бы злоумышленник. Стандарт де-факто — методика OWASP: справочник OWASP Web Security Testing Guide (WSTG) описывает 12 областей проверки — от сбора информации до бизнес-логики и клиентской части, OWASP Top 10 задаёт список самых опасных классов уязвимостей, а OWASP ASVS — три уровня требований, по которым оценивают результат. На выходе — отчёт с доказанными уязвимостями, оценкой критичности по CVSS и рекомендациями. Занимает от одной до трёх недель в зависимости от размера приложения и формата доступа.
Статья для владельца продукта, руководителя разработки или ИТ-директора, который заказывает пентест веб-приложения впервые или хочет понять, что именно должно быть в коммерческом предложении и отчёте.
Что такое пентест веб-приложения и чем он не является
Пентест (тестирование на проникновение) веб-приложения — контролируемая имитация атаки на приложение и его серверную часть с целью найти уязвимости и доказать, что они реально эксплуатируются. Объект — всё, что доступно через браузер или HTTP-запросы: страницы, формы, личный кабинет, платёжные сценарии, REST/GraphQL API, мобильный бэкенд, админ-панель, интеграции с внешними сервисами.
Чем пентест не является:
- не автоматическим сканированием — сканер найдёт устаревшую библиотеку, но не увидит, что пользователь может смотреть чужие заказы, поменяв цифру в адресе;
- не аудитом кода — разбор исходников (SAST) полезен и часто дополняет пентест, но это другая работа с другими находками;
- не проверкой сервера — инфраструктурный пентест смотрит на сеть и операционные системы, а веб-пентест — на логику приложения. Часто их совмещают, но в предложении это должны быть отдельные пункты.
Юридическая основа — письменное разрешение владельца приложения и хостинга на тестирование с указанием границ и сроков. Без него любые попытки проникновения незаконны.
Методика OWASP: три документа, которые нужно знать
OWASP (Open Worldwide Application Security Project) — некоммерческое сообщество, чьи материалы стали общепринятым языком в безопасности приложений. Для пентеста важны три:
OWASP Top 10 — список из десяти самых распространённых и опасных классов уязвимостей веб-приложений. В редакции 2021 года это: нарушение контроля доступа, ошибки криптографии, инъекции, небезопасный дизайн, ошибки конфигурации, уязвимые и устаревшие компоненты, ошибки идентификации и аутентификации, нарушение целостности ПО и данных, недостатки журналирования и мониторинга, подделка запросов на стороне сервера (SSRF). Это не методика, а карта приоритетов: если подрядчик обещает «проверку по OWASP Top 10» — это минимум, а не полный пентест.
OWASP Web Security Testing Guide (WSTG) — собственно методика: пошаговое руководство, как тестировать веб-приложение, с конкретными проверками по каждой области. Именно на WSTG должна ссылаться программа пентеста. Для API есть отдельный список — OWASP API Security Top 10.
OWASP ASVS (Application Security Verification Standard) — стандарт требований к защищённости приложения с тремя уровнями: уровень 1 — базовый, для любых приложений; уровень 2 — для приложений с чувствительными данными (персональные, платёжные, медицинские); уровень 3 — для критичных систем. ASVS отвечает на вопрос «что должно быть в приложении», а пентест по WSTG проверяет, так ли это на самом деле.
Что проверяют при пентесте веб-приложения: 12 областей WSTG
Программа пентеста по WSTG покрывает двенадцать областей. Ниже — что означает каждая для владельца бизнеса.
| Область WSTG | Что ищет пентестер | Пример последствий, если не проверить |
|---|---|---|
| Сбор информации | Открытые файлы конфигурации, старые версии, тестовые окружения, структуру приложения | Злоумышленник находит забытый backup.zip с базой |
| Конфигурация и развёртывание | Настройки сервера, заголовки безопасности, открытые админ-панели, права на файлы | Админка доступна из интернета с паролем по умолчанию |
| Управление учётными записями | Регистрация, восстановление пароля, роли, перечисление пользователей | По форме восстановления можно узнать, кто есть в базе |
| Аутентификация | Слабые пароли, обход входа, отсутствие защиты от перебора, двухфакторная аутентификация | Перебор паролей к аккаунту директора без блокировки |
| Авторизация | Доступ к чужим данным, повышение привилегий, обход ограничений | Клиент видит заказы и счета других клиентов |
| Управление сессиями | Токены и cookie, выход из системы, фиксация и кража сессии | Сессия живёт вечно, украденная cookie даёт полный доступ |
| Проверка входных данных | SQL-, командные, LDAP-инъекции, XSS, загрузка файлов, десериализация | Выгрузка всей базы одним запросом |
| Обработка ошибок | Утечки через сообщения об ошибках и трассировки | Ошибка показывает строку подключения к базе |
| Криптография | TLS, хранение паролей, шифрование чувствительных данных | Пароли хранятся в открытом виде |
| Бизнес-логика | Обход платёжных сценариев, манипуляции суммами, гонки, злоупотребление функциями | Заказ с отрицательной суммой или скидка 100% |
| Клиентская часть | DOM-XSS, CORS, кликджекинг, небезопасные хранилища браузера | Скрипт с чужого домена читает данные пользователя |
| API | Аутентификация и авторизация в REST/GraphQL, избыточные данные в ответах, лимиты | Мобильное приложение отдаёт API, который возвращает поля всех пользователей |
Полный пентест проходит по всем двенадцати областям с учётом того, что есть в приложении. Если у вас нет API, соответствующий раздел выпадает; если приложение принимает оплату, бизнес-логика и авторизация становятся главными.
Форматы: чёрный, серый и белый ящик
От формата зависит, что и как глубоко можно проверить, и цена.
- Чёрный ящик. Пентестер знает только адрес. Имитирует внешнего злоумышленника без учётной записи. Дешевле и быстрее, но не проверяет то, что доступно только после входа, — а это большая часть уязвимостей авторизации и бизнес-логики.
- Серый ящик. Есть учётные записи разных ролей (клиент, менеджер, администратор), иногда — описание архитектуры. Самый частый и разумный формат для коммерческих приложений: проверяется и внешний контур, и всё, что внутри кабинета.
- Белый ящик. Есть исходный код, схемы, доступ к тестовому окружению. Самая глубокая проверка: пентест сочетается с разбором кода (SAST) и зависимостей (SCA). Нужен для приложений с платёжными и медицинскими данными и перед аттестацией.
Для большинства сайтов с личным кабинетом выбирают серый ящик с двумя-тремя ролями. Что влияет на цену подробнее — в статье о стоимости пентеста.
Как проходит пентест: этапы и сроки
- Согласование границ (1–3 дня). Список адресов и приложений, роли и учётные записи, что запрещено (например, атаки на отказ в обслуживании), окно времени, контакты для экстренной остановки, письменное разрешение.
- Разведка и картирование (1–2 дня). Пентестер собирает структуру приложения, точки входа, технологии, внешние интеграции.
- Автоматизированная проверка (1–2 дня). Сканеры и фаззеры для покрытия объёма — как вспомогательный инструмент, не как результат.
- Ручное тестирование (5–10 дней). Основная часть: авторизация, бизнес-логика, цепочки уязвимостей, проверка каждой находки на реальную эксплуатацию.
- Отчёт (2–3 дня). Описание каждой уязвимости с доказательствами, оценка по CVSS (шкала 0–10), сценарии атаки, рекомендации по устранению, сводка для руководства.
- Повторная проверка (после исправлений). Подтверждение, что уязвимости закрыты и не появились новые. Должна входить в стоимость или быть отдельно оговорена.
Итого — от одной до трёх недель работы на приложение среднего размера; сроки зависят от числа ролей, страниц и API-методов.
Чек-лист: что должно быть в предложении и отчёте
Проверьте коммерческое предложение по пунктам:
- Методика названа явно: OWASP WSTG для веб, OWASP API Security Top 10 для API; «проверка по OWASP Top 10» — недостаточно.
- Указан формат (чёрный / серый / белый ящик) и число ролей, которые будут проверяться.
- Зафиксированы границы: домены, окружение (боевое или тестовое), запреты, окно времени.
- Есть письменное разрешение и соглашение о конфиденциальности — оба документа.
- Прописано ручное тестирование бизнес-логики и авторизации, а не только автоматизированная часть.
- Повторная проверка после исправлений включена или явно оценена.
- Названы исполнители и их квалификация.
Отчёт должен содержать:
- Для каждой уязвимости — шаги воспроизведения, доказательство (запрос/ответ, скриншот), оценку CVSS и бизнес-последствие простыми словами.
- Ранжирование по критичности и очерёдность исправлений.
- Рекомендации по устранению с учётом вашего стека, а не общие фразы.
- Сводку на одну страницу для руководителя.
- Список того, что проверялось и не было найдено — чтобы понимать покрытие.
Как читать такой отчёт и что делать с приоритетами — в отдельном разборе.
Когда пентест веб-приложения нужен обязательно
- Перед запуском нового приложения, личного кабинета, интернет-магазина или API — дешевле исправить до выхода.
- После крупных изменений: новая платёжная интеграция, смена фреймворка, переезд в облако, новая авторизация.
- Если приложение обрабатывает персональные данные — закон 99-З требует от оператора мер защиты (ст. 17), а пентест — понятный способ проверить их эффективность.
- Перед аттестацией системы защиты информации и при подготовке к требованиям Указа №40 — как подтверждение технических мер.
- По требованию партнёра или платёжного провайдера — банки и PCI DSS ожидают регулярного тестирования.
- Раз в год для любого приложения, которое приносит деньги, — просто потому что код и угрозы меняются.
Если приложение разрабатывается постоянно, разовый пентест устаревает через пару релизов. Тогда рациональнее встроить проверки в процесс: у Viviar это «Запуск безопасной разработки» — аудит одного продукта и разбор кода от 20 300 BYN, а с внедрением проверок SAST/DAST/SCA в сборку — от 43 600 BYN. Мы делаем это и для собственных продуктов, и в проектах разработки под ключ, где проверка безопасности входит в MVP-Стартер.
Как это делает Viviar
Пентест веб-приложений — часть направления кибербезопасности: собственная команда, методика OWASP WSTG и ASVS, серый ящик по умолчанию, ручное тестирование бизнес-логики, повторная проверка после исправлений. Среди кейсов — полный контур ИБ для оператора iGaming с пройденной аттестацией системы защиты информации и веб-модули для сети клиник E-clinic, принятые регулятором без замечаний. Стоимость считается по объёму после короткого разговора: какие приложения, сколько ролей, есть ли API и мобильные клиенты — для последних есть отдельная методика.
Частые вопросы
Сколько длится пентест веб-приложения?
От одной до трёх недель для приложения среднего размера: 1–3 дня на согласование границ, 1–2 дня разведки, 5–10 дней ручного тестирования, 2–3 дня на отчёт. Крупные системы с десятками ролей и сотнями API-методов занимают дольше. Повторная проверка после исправлений — обычно несколько дней.
Что такое OWASP Top 10 и достаточно ли проверить только его?
OWASP Top 10 — список десяти самых распространённых классов уязвимостей веб-приложений, который OWASP периодически обновляет. Это карта приоритетов, а не методика тестирования. Полный пентест идёт по OWASP WSTG и покрывает 12 областей, включая бизнес-логику и API, которых в Top 10 как отдельных пунктов нет. Проверка «только по Top 10» — минимальный уровень.
Можно ли делать пентест на боевом сайте?
Можно и часто нужно — именно боевая конфигурация интересует атакующего. Условия: согласованное окно времени, запрет на атаки на отказ в обслуживании, тестовые учётные записи и платёжные данные, свежая резервная копия и контакт для экстренной остановки. Деструктивные проверки выносятся на тестовое окружение.
Чем пентест отличается от bug bounty?
Пентест — ограниченная по времени работа команды по согласованной методике с гарантированным покрытием всех областей и отчётом. Bug bounty — открытая программа вознаграждений, где независимые исследователи ищут то, что им интересно, без гарантии покрытия. Bug bounty имеет смысл после нескольких пентестов, когда очевидное закрыто.
Сколько стоит пентест веб-приложения?
Зависит от размера приложения, числа ролей, наличия API и формата (чёрный, серый, белый ящик). У Viviar цена считается по объёму после получасового разговора; для небольшой инфраструктуры вместе с сайтом есть экспресс-аудит от 5 200 BYN, а разбор кода одного продукта — от 20 300 BYN. Из чего складывается цена — в статье о стоимости пентеста.
Вывод
Пентест веб-приложения по методике OWASP — это не запуск сканера и не «проверка по Top 10», а ручная работа по двенадцати областям WSTG с доказательством каждой находки и оценкой по ASVS. Заказывая его, требуйте названную методику, серый ящик с реальными ролями, ручную проверку бизнес-логики и повторный тест после исправлений. Если у вас запуск, крупное обновление или требование регулятора, напишите нам: ответим за 2 рабочих дня, за полчаса разговора определим объём и формат.
Источники: OWASP Web Security Testing Guide, OWASP Top 10 (2021), OWASP API Security Top 10, OWASP Application Security Verification Standard (owasp.org); Common Vulnerability Scoring System (first.org); Закон Республики Беларусь от 07.05.2021 № 99-З «О защите персональных данных» (pravo.by); Указ Президента Республики Беларусь от 14.02.2023 № 40 «О кибербезопасности» (president.gov.by).