
취약한 NodeJS 애플리케이션

취약한 NodeJS 애플리케이션 (DVNA)은 OWASP Top 10 취약점을 시연하고 이러한 취약점을 수정하고 방지하는 방법을 안내하는 간단한 NodeJS 애플리케이션입니다. 수정 브랜치에는 취약점 수정 사항이 포함되어 있습니다. 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
Docker를 사용하여 단일 명령어로 DVNA를 사용해 보세요. 이 설정은 MySQL 대신 SQLite 데이터베이스를 사용합니다.
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에 이슈를 생성해 주세요. 풀 리퀘스트는 언제든지 환영합니다!
애플리케이션 아키텍처와 프론트엔드 코드에 기여해 주신 Abhisek Datta - abhisek 님께 감사드립니다.
MIT