
Damn Vulnerable NodeJS Application (DVNA) は、OWASP Top 10 脆弱性 を実演し、これらの脆弱性の修正と回避方法をガイドするシンプルな NodeJS アプリケーションです。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 を試せます。このセットアップでは、MySQL の代わりに SQLite データベースを使用します。
docker run --name dvna -p 9090:9090 -d appsecco/dvna:sqlite
アプリケーションに http://127.0.0.1:9090/ でアクセスします。
DVNA は3つの方法でデプロイできます。
セットアップと要件の詳細な手順は、ガイド 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 を作成してください。プルリクエストは大歓迎です!
アプリケーションアーキテクチャとフロントエンドコードについて Abhisek Datta - abhisek に感謝します。
MIT