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

Используемые технологии
- Java 17
- Spring Boot
- ReactJS
- Javascript/TypeScript
Текущий перечень обрабатываемых типов уязвимостей
- Уязвимость JWT
- Внедрение команд (Command Injection)
- Криптографические уязвимости
- Уязвимость загрузки файлов
- Уязвимость обхода пути
- SQL-инъекция
- XSS
- XXE
- Открытое перенаправление
- SSRF
- IDOR
Участие в проекте
Существует несколько способов внести вклад в проект:
- Если вы разработчик и только начинаете работу с проектом, рекомендуется ознакомиться со списком задач с меткой
good first issue— они станут хорошей отправной точкой. - Если вы разработчик или специалист по безопасности и хотите добавить новый тип уязвимости, запустите команду
./gradlew GenerateSampleVulnerability. Она создаст шаблон с заглушками и комментариями. Изменённые файлы будут указаны в логах команды или в истории git. Перейдите к этим файлам, заполните заглушки и соберите проект, чтобы увидеть результат. - Если вы хотите способствовать росту проекта или его популяризации, не стесняйтесь добавлять свои мысли в раздел обсуждений или в задачи — мы будем рады обсудить их.
Запуск проекта
Существует два способа запустить проект:
- Самый простой способ — использовать Docker-контейнеры, которые запустят полноценное VulnerableApp со всеми компонентами:
- Загрузите и установите Docker Compose
- Клонируйте данный репозиторий GitHub
- Откройте терминал и перейдите в корневой каталог проекта
- Выполните команду
docker-compose pull && docker-compose up - Откройте браузер и перейдите по адресу
http://localhost— откроется пользовательский интерфейс VulnerableApp.
Примечание: Описанные выше шаги запустят последнюю нерелизную версию VulnerableApp. Для запуска последней стабильной версии используйте тег Docker latest.
- Другой способ — запустить VulnerableApp как самостоятельное приложение:
- Перейдите в раздел релизов на GitHub и загрузите JAR-файл последней версии
- Откройте терминал и перейдите в корневой каталог проекта
- Выполните команду
java -jar VulnerableApp-* - Откройте браузер и перейдите по адресу
http://localhost:9090/VulnerableApp— откроется устаревший пользовательский интерфейс VulnerableApp.
Сборка проекта
Проект можно собрать двумя способами:
- Как Docker-приложение для запуска полноценного VulnerableApp:
- Соберите Docker-образ командой
./gradlew jibDockerBuild - Загрузите Docker-Compose и выполните в той же директории команду
docker-compose up - Откройте браузер и перейдите по адресу
http://localhost— откроется пользовательский интерфейс VulnerableApp.
- Соберите Docker-образ командой
- Как приложение SpringBoot с Legacy UI или REST API — это удобно для отладки:
- Импортируйте проект в вашу IDE и запустите его
- Откройте браузер и перейдите по адресу
http://localhost:9090/VulnerableApp— откроется устаревший пользовательский интерфейс VulnerableApp для отладки и тестирования.
Подключение к встроенной базе данных H2
Для доступа к базе данных через браузер перейдите по адресу: http://localhost:9090/VulnerableApp/h2
Параметры подключения к базе данных:
JDBC Url: jdbc:h2:mem:testdb
User Name: admin
Password: hacker
Контакты
Если у вас возникли затруднения с какими-либо шагами или с пониманием целей и устройства проекта, напишите на karan.sasan@owasp.org или создайте задачу — мы постараемся помочь.
Документация и ссылки
- Документация
- Описание архитектуры
- OWASP VulnerableApp
- Обзорное видео для серии OWASP Spotlight
- Обзорное видео
Статьи и блоги
- Обзор OWASP-VulnerableApp — статья на Medium
- Обзор OWASP-VulnerableApp — пост в Blogspot
- Введение в OWASP VulnerableApp от Кэндзи Накадзимы
- Платформа Shannon на базе генеративного ИИ, использующая VulnerableApp