
Чрезвычайно уязвимое NodeJS-приложение

Уязвимое приложение NodeJS (DVNA) — это простое приложение NodeJS для демонстрации 10 основных уязвимостей по OWASP и руководства по исправлению и предотвращению этих уязвимостей. Ветка fixes содержит исправления для уязвимостей. Исправления для уязвимостей OWASP Top 10 2017 находятся в ветке fixes-2017.
Приложение построено на широко используемых библиотеках, таких как express, passport, sequelize и т.д.
Приложение поставляется с понятным разработчику всеобъемлющим руководством, которое можно использовать для изучения, предотвращения и исправления уязвимостей. Руководство доступно по адресу docs и охватывает следующее:
Блог-пост о данном релизе доступен по адресу https://blog.appsecco.com/damn-vulnerable-nodejs-application-dvna-by-appsecco-7d782d36dc1e
Вы можете настроить локальный сервер gitbook для доступа к документации с помощью следующих команд. После этого документация будет доступна по адресу http://localhost:4000.
cd docs/
docker run --rm -v `pwd`:/gitbook -p 4000:4000 --name gitbook amontaigu/gitbook gitbook serve
Попробуйте DVNA с помощью одной команды Docker. Эта настройка использует базу данных SQLite вместо MySQL.
docker run --name dvna -p 9090:9090 -d appsecco/dvna:sqlite
Откройте приложение по адресу http://127.0.0.1:9090/
DVNA можно развернуть тремя способами
Подробные инструкции по настройке и требования приведены в руководстве Gitbook
Клонируйте этот репозиторий
git clone https://github.com/appsecco/dvna; cd dvna
Создайте файл vars.env с желаемой конфигурацией базы данных
MYSQL_USER=dvna
MYSQL_DATABASE=dvna
MYSQL_PASSWORD=passw0rd
MYSQL_RANDOM_ROOT_PASSWORD=yes
Запустите приложение и базу данных с помощью docker-compose
docker-compose up
Откройте приложение по адресу http://127.0.0.1:9090/
Приложение будет автоматически перезагружаться при изменениях в коде, так что не стесняйтесь вносить правки и экспериментировать.
Создайте файл с именем vars.env со следующей конфигурацией
MYSQL_USER=dvna
MYSQL_DATABASE=dvna
MYSQL_PASSWORD=passw0rd
MYSQL_RANDOM_ROOT_PASSWORD=yes
MYSQL_HOST=mysql-db
MYSQL_PORT=3306
Запустите контейнер MySQL
docker run --rm --name dvna-mysql --env-file vars.env -d mysql:5.7
Запустите приложение, используя официальный образ
docker run --rm --name dvna-app --env-file vars.env --link dvna-mysql:mysql-db -p 9090:9090 appsecco/dvna
Откройте приложение по адресу http://127.0.0.1:9090/ и начинайте тестирование!
Клонируйте репозиторий
git clone https://github.com/appsecco/dvna; cd dvna
Настройте переменные окружения с информацией о вашей базе данных
export MYSQL_USER=dvna
export MYSQL_DATABASE=dvna
export MYSQL_PASSWORD=passw0rd
export MYSQL_HOST=127.0.0.1
export MYSQL_PORT=3306
Установите зависимости
npm install
Запустите приложение
npm start
Откройте приложение по адресу http://localhost:9090
В случае обнаружения ошибок в приложении, пожалуйста, создайте issue на GitHub. Pull-запросы приветствуются!
Abhisek Datta - abhisek за архитектуру приложения и front-end код
MIT