OWASP VulnerableApp
Взломайте. Просканируйте. Воспроизведите. Сравните. Улучшите.
OWASP VulnerableApp — это модульное намеренно уязвимое приложение, разработанное главным образом для проверки и сравнительного тестирования сканеров безопасности с помощью воспроизводимых тестовых сценариев, а также для обучения и экспериментов.
🔍 Что делает его особенным
В отличие от традиционных уязвимых приложений, VulnerableApp разработано как тестируемая экосистема безопасности, а не как статическое учебное приложение.
Оно позволяет:
- 🔬 Проводить сравнительное тестирование сканеров, таких как Burp Suite, OWASP ZAP и пользовательские DAST-движки
- 🧩 Использовать модульную архитектуру уязвимостей, позволяющую добавлять новые сценарии без изменения основных сервисов
- 📊 Выполнять регрессионное тестирование безопасности между релизами и окружениями
- 🎯 Моделировать реалистичную поверхность атаки для современных шаблонов веб-приложений
- 🧪 Обеспечивать детерминированное поведение уязвимостей для повторяемых результатов сканирования
- 🧠 Быть полезным инженерам по безопасности, исследователям и преподавателям

VulnerableApp помогает вам:
- Проверять, как инструменты безопасности ведут себя на известных шаблонах уязвимостей
- Создавать контролируемые среды для экспериментов в области безопасности
- Расширять покрытие уязвимостей по мере появления новых методов атак
- Запускать согласованные и воспроизводимые конвейеры тестирования безопасности
⚙️ Почему это важно
Большинство уязвимых приложений:
- Статичны
- Трудно расширяются
- Предназначены только для ручного обучения
VulnerableApp создано для:
автоматизации, воспроизводимости и развития
Пользовательский интерфейс

Запуск проекта
Существует 2 способа запуска проекта:
- Самый простой способ — использовать Docker-контейнеры, которые запускают полнофункциональное приложение VulnerableApplication со всеми компонентами. Чтобы запустить приложение через Docker, выполните следующие шаги:
- Загрузите и установите Docker Compose
- Клонируйте этот репозиторий GitHub
- Откройте терминал и перейдите в корневой каталог проекта
- Выполните команду
docker-compose pull && docker-compose up - Откройте в браузере
http://localhost— откроется пользовательский интерфейс VulnerableApp. - Mailpit также доступен по адресу
http://localhost:8025для просмотра писем, перехваченных локальным SMTP-сервером.
Примечание: приведённые выше шаги запустят последнюю ещё не выпущенную версию VulnerableApp. Если вы хотите использовать последнюю официально выпущенную версию, используйте Docker-тег latest.
- Другой способ — запуск VulnerableApp как автономного приложения:
- Перейдите в раздел Releases на GitHub и загрузите JAR-файл последней выпущенной версии
- Откройте терминал и перейдите в корневой каталог проекта
- Выполните команду
java -jar VulnerableApp-* - Откройте в браузере
http://localhost:9090/VulnerableApp. Это откроет классический пользовательский интерфейс VulnerableApp.
Сборка проекта
Существует 2 способа собрать и использовать этот проект:
- Как Docker-приложение, позволяющее запускать полнофункциональное VulnerableApplication. Для этого:
- Соберите Docker-образ командой
./gradlew jibDockerBuild - Загрузите Docker-Compose и выполните в том же каталоге команду
docker-compose up - Откройте в браузере
http://localhost— откроется пользовательский интерфейс VulnerableApp.
- Соберите Docker-образ командой
- Как Spring Boot-приложение, работающее с классическим интерфейсом или REST API, что позволяет выполнять отладку и устранять проблемы. Это наиболее простой способ:
- Импортируйте проект в предпочитаемую IDE и запустите его
- Откройте в браузере
http://localhost:9090/VulnerableApp— откроется классический пользовательский интерфейс VulnerableApp, который можно использовать для отладки и тестирования.
Участие в проекте
Есть несколько способов внести вклад в проект:
- Если вы разработчик и только начинаете работать с проектом, рекомендуется ознакомиться со списком issues, содержащим задачи с пометкой
good first issue, которые отлично подходят для начала. - Если вы разработчик или специалист по безопасности и хотите добавить новый тип уязвимости, выполните
./gradlew GenerateSampleVulnerability. Будет создан шаблон примерной уязвимости с заполнителями и комментариями. Изменённые файлы будут указаны в журнале выполнения команды или в истории GitHub. Перейдите к этим файлам, заполните необходимые места, затем соберите проект, чтобы увидеть результат изменений. - Если вы хотите помочь развитию проекта, рассказывая о нём или участвуя в его продвижении, не стесняйтесь делиться своими идеями в разделе обсуждений или через issues — мы с удовольствием их обсудим.
Тестирование с современным интерфейсом
VulnerableApp-facade предоставляет современный пользовательский интерфейс для VulnerableApp. Чтобы протестировать локальные изменения с современным интерфейсом:
- Предварительное условие: убедитесь, что у вас установлены Docker и Docker-Compose.
- Запустите сценарий тестирования:
- В Windows:
.\scripts\testWithModernUI.bat - В Linux/Mac:
./scripts/testWithModernUI.sh
- В Windows:
Этот сценарий соберёт ваши локальные изменения в Docker-образ (sasanlabs/owasp-vulnerableapp:unreleased) и запустит полный стек (включая facade, jsp и php-сервисы) с использованием docker-compose.local.yml.
-
Откройте интерфейс: перейдите по адресу
http://localhost, чтобы увидеть современный интерфейс с вашими изменениями. -
Откройте Mailpit: перейдите по адресу
http://localhost:8025, чтобы просмотреть письма, перехваченные локальным SMTP-сервером.
Используемые технологии
- Java17
- Spring Boot
- ReactJS
- Javascript/TypeScript
Подключение к встроенной базе данных H2
Для доступа к базе данных из браузера перейдите по адресу: http://localhost:9090/VulnerableApp/h2
Параметры подключения к базе данных:
JDBC Url: jdbc:h2:mem:testdb
User Name: admin
Password: hacker
Поддерживаемые в настоящее время типы уязвимостей
- Уязвимости JWT
- Внедрение команд (Command Injection)
- Ошибки криптографии
- Уязвимость загрузки файлов
- Уязвимость обхода каталогов (Path Traversal)
- SQL-инъекция
- XSS
- XXE
- Открытое перенаправление (Open Redirect)
- SSRF
- IDOR
- Clickjacking
- LDAP-инъекция
- Уязвимости аутентификации
Сравнительное тестирование вашего сканера
VulnerableApp включает компаратор, который оценивает результаты работы сканера относительно встроенной «эталонной» базы проекта и создаёт отчёт о покрытии, пропущенных и лишних находках. Один и тот же конечный пункт поддерживает как DAST-, так и SAST-сканеры:
- Конечная точка:
POST http://<baseurl>/VulnerableApp/scanner/benchmark - Тело запроса — выберите формат, соответствующий вашему сканеру:
- DAST:
{ tool, scanType: "DAST", findings: [ { url, type, cwe, wascId } ] }(scanTypeнеобязателен и по умолчанию равенDAST; поляtype/cwe/wascIdпо отдельности необязательны — достаточно совпадения по любому одному критерию) - SAST:
{ tool, scanType: "SAST", findings: [ { filePath, line, cwe, type } ] }
- DAST:
- Тело ответа и файл
benchmarks/<tool>-results.jsonна диске: отчёт о покрытии
Запуск самого сканера не входит в область ответственности проекта — вы самостоятельно предоставляете JSON. См. benchmarks/README.md для получения полной информации о схемах входных и выходных данных, правилах сопоставления, каноническом словаре типов уязвимостей и примерах curl.
Контакты
Если вы столкнулись с трудностями при выполнении какого-либо из шагов или хотите лучше понять проект и его цели, напишите на адрес karan.sasan@owasp.org или создайте issue, и мы постараемся помочь.
Документация и ссылки
- Документация
- Документация по архитектуре
- OWASP VulnerableApp
- Обзорное видео серии OWASP Spotlight
- Обзорное видео
Блоги
- Обзор Owasp-VulnerableApp — статья на Medium
- Обзор Owasp-VulnerableApp — публикация на Blogspot
- Введение в Owasp VulnerableApp от Kenji Nakajima
- Платформа Shannon на базе Gen AI, эксплуатирующая VulnerableApp
- Я создал дополнение OWASP ZAP File Upload. Почему сначала пришлось создать VulnerableApp-Facade