
Damn Vulnerable NodeJS Application (DVNA) 是一个简单的 NodeJS 应用程序,用于演示 OWASP Top 10 漏洞 并提供修复和避免这些漏洞的指南。fixes 分支包含漏洞的修复代码。OWASssP 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
使用 Docker 通过单个命令尝试 DVNA。此设置使用 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 访问应用程序
如果应用程序中发现错误,请在 github 上创建 issue。非常欢迎 Pull requests!
Abhisek Datta - abhisek 提供的应用程序架构和前端代码
MIT