OWASP VulnerableApp OWASP VulnerableApp

OWASP Incubator Лицензия Java CI с Gradle PR приветствуются Загрузки Docker codecov

Взломайте. Просканируйте. Воспроизведите. Сравните. Улучшите.

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

🔍 Что делает его особенным

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

Оно позволяет:

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

Полная архитектура

VulnerableApp помогает вам:

  • Проверять, как инструменты безопасности ведут себя на известных шаблонах уязвимостей
  • Создавать контролируемые среды для экспериментов в области безопасности
  • Расширять покрытие уязвимостей по мере появления новых методов атак
  • Запускать согласованные и воспроизводимые конвейеры тестирования безопасности

⚙️ Почему это важно

Большинство уязвимых приложений:

  • Статичны
  • Трудно расширяются
  • Предназначены только для ручного обучения

VulnerableApp создано для:

автоматизации, воспроизводимости и развития

Пользовательский интерфейс

Интерфейс VulnerableApp-facade

Запуск проекта

Существует 2 способа запуска проекта:

  1. Самый простой способ — использовать Docker-контейнеры, которые запускают полнофункциональное приложение VulnerableApplication со всеми компонентами. Чтобы запустить приложение через Docker, выполните следующие шаги:
    1. Загрузите и установите Docker Compose
    2. Клонируйте этот репозиторий GitHub
    3. Откройте терминал и перейдите в корневой каталог проекта
    4. Выполните команду docker-compose pull && docker-compose up
    5. Откройте в браузере http://localhost — откроется пользовательский интерфейс VulnerableApp.
    6. Mailpit также доступен по адресу http://localhost:8025 для просмотра писем, перехваченных локальным SMTP-сервером.

    Примечание: приведённые выше шаги запустят последнюю ещё не выпущенную версию VulnerableApp. Если вы хотите использовать последнюю официально выпущенную версию, используйте Docker-тег latest.

  2. Другой способ — запуск VulnerableApp как автономного приложения:
    1. Перейдите в раздел Releases на GitHub и загрузите JAR-файл последней выпущенной версии
    2. Откройте терминал и перейдите в корневой каталог проекта
    3. Выполните команду java -jar VulnerableApp-*
    4. Откройте в браузере http://localhost:9090/VulnerableApp. Это откроет классический пользовательский интерфейс VulnerableApp.

Сборка проекта

Существует 2 способа собрать и использовать этот проект:

  1. Как Docker-приложение, позволяющее запускать полнофункциональное VulnerableApplication. Для этого:
    1. Соберите Docker-образ командой ./gradlew jibDockerBuild
    2. Загрузите Docker-Compose и выполните в том же каталоге команду docker-compose up
    3. Откройте в браузере http://localhost — откроется пользовательский интерфейс VulnerableApp.
  2. Как Spring Boot-приложение, работающее с классическим интерфейсом или REST API, что позволяет выполнять отладку и устранять проблемы. Это наиболее простой способ:
    1. Импортируйте проект в предпочитаемую IDE и запустите его
    2. Откройте в браузере http://localhost:9090/VulnerableApp — откроется классический пользовательский интерфейс VulnerableApp, который можно использовать для отладки и тестирования.

Участие в проекте

Есть несколько способов внести вклад в проект:

  1. Если вы разработчик и только начинаете работать с проектом, рекомендуется ознакомиться со списком issues, содержащим задачи с пометкой good first issue, которые отлично подходят для начала.
  2. Если вы разработчик или специалист по безопасности и хотите добавить новый тип уязвимости, выполните ./gradlew GenerateSampleVulnerability. Будет создан шаблон примерной уязвимости с заполнителями и комментариями. Изменённые файлы будут указаны в журнале выполнения команды или в истории GitHub. Перейдите к этим файлам, заполните необходимые места, затем соберите проект, чтобы увидеть результат изменений.
  3. Если вы хотите помочь развитию проекта, рассказывая о нём или участвуя в его продвижении, не стесняйтесь делиться своими идеями в разделе обсуждений или через issues — мы с удовольствием их обсудим.

Тестирование с современным интерфейсом

VulnerableApp-facade предоставляет современный пользовательский интерфейс для VulnerableApp. Чтобы протестировать локальные изменения с современным интерфейсом:

  1. Предварительное условие: убедитесь, что у вас установлены Docker и Docker-Compose.
  2. Запустите сценарий тестирования:
    • В Windows: .\scripts\testWithModernUI.bat
    • В Linux/Mac: ./scripts/testWithModernUI.sh

Этот сценарий соберёт ваши локальные изменения в Docker-образ (sasanlabs/owasp-vulnerableapp:unreleased) и запустит полный стек (включая facade, jsp и php-сервисы) с использованием docker-compose.local.yml.

  1. Откройте интерфейс: перейдите по адресу http://localhost, чтобы увидеть современный интерфейс с вашими изменениями.

  2. Откройте 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

Поддерживаемые в настоящее время типы уязвимостей

  1. Уязвимости JWT
  2. Внедрение команд (Command Injection)
  3. Ошибки криптографии
  4. Уязвимость загрузки файлов
  5. Уязвимость обхода каталогов (Path Traversal)
  6. SQL-инъекция
    1. SQLi на основе ошибок
    2. SQLi на основе UNION
    3. Слепая SQLi
  7. XSS
    1. Постоянная XSS
    2. Отражённая XSS
  8. XXE
  9. Открытое перенаправление (Open Redirect)
    1. На основе HTTP-кодов состояния 3xx
  10. SSRF
  11. IDOR
  12. Clickjacking
  13. LDAP-инъекция
  14. Уязвимости аутентификации

Сравнительное тестирование вашего сканера

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 } ] }
  • Тело ответа и файл benchmarks/<tool>-results.json на диске: отчёт о покрытии

Запуск самого сканера не входит в область ответственности проекта — вы самостоятельно предоставляете JSON. См. benchmarks/README.md для получения полной информации о схемах входных и выходных данных, правилах сопоставления, каноническом словаре типов уязвимостей и примерах curl.

Контакты

Если вы столкнулись с трудностями при выполнении какого-либо из шагов или хотите лучше понять проект и его цели, напишите на адрес karan.sasan@owasp.org или создайте issue, и мы постараемся помочь.

Документация и ссылки

  1. Документация
  2. Документация по архитектуре
  3. OWASP VulnerableApp
  4. Обзорное видео серии OWASP Spotlight
  5. Обзорное видео

Блоги

  1. Обзор Owasp-VulnerableApp — статья на Medium
  2. Обзор Owasp-VulnerableApp — публикация на Blogspot
  3. Введение в Owasp VulnerableApp от Kenji Nakajima
  4. Платформа Shannon на базе Gen AI, эксплуатирующая VulnerableApp
  5. Я создал дополнение OWASP ZAP File Upload. Почему сначала пришлось создать VulnerableApp-Facade

Использование OWASP VulnerableApp

  1. Посмотреть глобальный академический интерес

Материалы по устранению неполадок

  1. Обсуждение эксплуатации SQL-инъекции в Reddit

README на других языках

  1. Русский
  2. Китайский
  3. Хинди
  4. Панджаби
  5. Корейский