OWASP Juice Shop: Probably the most modern and sophisticated insecure web application
Latest commit 4a7f363 Dec 13, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Use `stale` label for Probot integration Apr 6, 2018
config Rename favicon file Dec 5, 2018
data Fix code style issues Dec 2, 2018
encryptionkeys use a 16byte IV Feb 4, 2018
frontend Rename favicon file Dec 5, 2018
ftp Prevent accidental commits of hacked legal.md Nov 22, 2018
hooks Fix double-dash symbol in Docker build hook Dec 12, 2017
lib Prevent accidental commits of hacked legal.md Nov 22, 2018
models Use favicon and propose Gravatar profile Nov 4, 2018
routes Add a second "Reset Bjoern's Password" challenge Dec 1, 2018
screenshots Update slideshow with v8.x UI screenshots Nov 26, 2018
test Fix code style issues Dec 2, 2018
uploads/complaints Add upload/complaints folder to packaged archives Nov 26, 2018
vagrant Fix bootstrap start of shake Jun 6, 2018
views Update Jade and fix warnings Nov 7, 2018
.appveyor.yml Switch back to node 10 as default version Nov 29, 2018
.codeclimate.yml Include SASS ratings on Codeclimate Nov 10, 2018
.dockerignore Add back `frontend/node_modules/` Nov 4, 2018
.gitignore Prevent accidental commits of hacked legal.md Nov 22, 2018
.gitlab-ci.yml Add GitLab CI config to replace Gemnasium reports Jun 4, 2018
.travis.yml Remove obsolete services Dec 2, 2018
CODE_OF_CONDUCT.md Update code of conduct Dec 5, 2018
CONTRIBUTING.md Lift code freeze for master-branch Nov 10, 2018
Dockerfile Bump version and update contributors list Dec 5, 2018
Gruntfile.js Add upload/complaints folder to packaged archives Nov 26, 2018
HALL_OF_FAME.md Bump version and update contributors list Dec 5, 2018
LICENSE Bump copyright range to 2014-2019 Nov 7, 2018
README.md Add 4th customer testimonial Dec 13, 2018
REFERENCES.md Add video links from BeNeLux Days 2018 Dec 13, 2018
TROUBLESHOOTING.md Update troubleshooting tips for v8.x Dec 5, 2018
app.js Apply `no-strict` transform from `lebab` Aug 28, 2017
app.json Fix spelling of JavaScript Sep 12, 2017
crowdin.yaml Switch Crowdin mapping to /frontend i18n files Oct 2, 2018
ctf.key Externalize key for flag HMACs Jan 27, 2017
package.json Bump version and update contributors list Dec 5, 2018
protractor.conf.js Fall back to normal 800x600 resolution for ChromeHeadless Nov 8, 2018
server.js Prevent accidental commits of hacked legal.md Nov 22, 2018
swagger.yml Reformatted YAML files Mar 14, 2018


Juice Shop Logo OWASP Juice Shop OWASP Flagship GitHub release Twitter Follow

Build Status Build status Test Coverage Maintainability Greenkeeper badge CII Best Practices GitHub stars

The most trustworthy online shop out there. (@dschadow) — The best juice shop on the whole internet! (@shehackspurple) — Actually the most bug-free vulnerable application in existence! (@vanderaj) — First you 😂😂then you 😢 (@kramse)

OWASP Juice Shop is probably the most modern and sophisticated insecure web application! It can be used in security trainings, awareness demos, CTFs and as a guinea pig for security tools! Juice Shop encompasses vulnerabilities from the entire OWASP Top Ten along with many other security flaws found in real-world applications!

Juice Shop Screenshot Slideshow

For a detailed introduction, full list of features and architecture overview please visit the official project page: http://owasp-juice.shop


Deploy on Heroku (free ($0/month) dyno)

  1. Sign up to Heroku and log in to your account
  2. Click the button below and follow the instructions


This is the quickest way to get a running instance of Juice Shop! If you have forked this repository, the deploy button will automatically pick up your fork for deployment! As long as you do not perform any DDoS attacks you are free to use any tools or scripts to hack your Juice Shop instance on Heroku!

From Sources

  1. Install node.js
  2. Run git clone https://github.com/bkimminich/juice-shop.git (or clone your own fork of the repository)
  3. Go into the cloned folder with cd juice-shop
  4. Run npm install (only has to be done before first start or when you change the source code)
  5. Run npm start
  6. Browse to http://localhost:3000

Packaged Distributions GitHub release SourceForge

  1. Install a 64bit node.js on your Windows (or Linux) machine
  2. Download juice-shop-<version>_<node-version>_<os>_x64.zip (or .tgz) attached to latest release
  3. Unpack and cd into the unpacked folder
  4. Run npm start
  5. Browse to http://localhost:3000

Each packaged distribution includes some binaries for SQLite bound to the OS and node.js version which npm install was executed on.

Docker Container Docker Automated build Docker Pulls Docker Stars

  1. Install Docker
  2. Run docker pull bkimminich/juice-shop
  3. Run docker run --rm -p 3000:3000 bkimminich/juice-shop
  4. Browse to http://localhost:3000 (on macOS and Windows browse to if you are using docker-machine instead of the native docker installation)

If you want to run Juice Shop on a Raspberry Pi 3, there is an unofficial Docker image available at https://hub.docker.com/r/arclight/juice-shop_arm which is based on resin/rpi-raspbian and maintained by @battletux.

Even easier: Run Docker Container from Docker Toolbox (Kitematic)

  1. Install and launch Docker Toolbox
  2. Search for juice-shop and click Create to download image and run container
  3. Click on the Open icon next to Web Preview to browse to OWASP Juice Shop


  1. Install Vagrant and Virtualbox
  2. Run git clone https://github.com/bkimminich/juice-shop.git (or clone your own fork of the repository)
  3. Run cd vagrant && vagrant up
  4. Browse to

There is a very convenient Vagrant box available at https://app.vagrantup.com/commjoen/boxes/trainingbox (🔬) from @commjoen which comes with latest Docker containers of the OWASP Juice Shop, OWASP WebGoat and other vulnerable web applications as well as pentesting tools like OWASP ZAP.

Amazon EC2 Instance

  1. Setup an Amazon Linux AMI instance
  2. In Step 3: Configure Instance Details unfold Advanced Details and copy the script below into User Data
  3. In Step 6: Configure Security Group add a Rule that opens port 80 for HTTP
  4. Launch instance
  5. Browse to your instance's public DNS
yum update -y
yum install -y docker
service docker start
docker pull bkimminich/juice-shop
docker run -d -p 80:3000 bkimminich/juice-shop

Technically Amazon could view hacking activity on any EC2 instance as an attack on their AWS infrastructure! We highly discourage aggressive scanning or automated brute force attacks! You have been warned!

Azure Container Instance

  1. Open and login (via az login) to your Azure CLI or login to the Azure Portal, open the CloudShell and then choose Bash (not PowerShell).
  2. Create a resource group by running az group create --name <group name> --location <location name, e.g. "centralus">
  3. Create a new container by running az container create --resource-group <group name> --name <container name> --image bkimminich/juice-shop --dns-name-label <dns name label> --ports 3000 --ip-address public
  4. Your container will be available at http://<dns name label>.<location name>.azurecontainer.io:3000

For more information please refer to the detailed walkthrough with screenshots by @JasonHaley. You can alternatively follow his guide to set up OWASP Juice Shop as an Azure Web App for Containers.

Node.js version compatibility

OWASP Juice Shop officially supports the following versions of node.js in line as close as possible with the official node.js LTS schedule. Docker images and packaged distributions are offered accordingly:

node.js Docker image Packaged distributions
11.x juice-shop-<version>_node11_windows_x64.zip, juice-shop-<version>_node11_linux_x64.tgz
10.x latest (current official release), snapshot (preview from develop branch) juice-shop-<version>_node10_windows_x64.zip, juice-shop-<version>_node10_linux_x64.tgz
9.x juice-shop-<version>_node9_windows_x64.zip, juice-shop-<version>_node9_linux_x64.tgz
8.x juice-shop-<version>_node8_windows_x64.zip, juice-shop-<version>_node8_linux_x64.tgz

Demo Heroku

Feel free to have a look at the latest version of OWASP Juice Shop: http://demo.owasp-juice.shop

This is a deployment-test and sneak-peek instance only! You are not supposed to use this instance for your own hacking endeavours! No guaranteed uptime! Guaranteed stern looks if you break it!


Via a YAML configuration file in /config, the OWASP Juice Shop can be customized in its content and look & feel.

For detailed instructions and examples please refer to our Customization documentation.


If you want to run OWASP Juice Shop as a Capture-The-Flag event, we recommend you set it up along with a CTFd server conveniently using the official juice-shop-ctf-cli tool.

For step-by-step instructions and examples please refer to the Hosting a CTF event chapter of our companion guide ebook.

XSS Demo

To show the possible impact of XSS, you can download this docker-compose-file and run docker-compose up to start the juice-shop and the shake-logger. Assume you received and (of course) clicked this inconspicuous phishing link and login. Apart from the visual/audible effect, the attacker also installed an input logger to grab credentials! This could easily run on a 3rd party server in real life!

You can also find a recording of this attack in action on YouTube: 📺

Additional Documentation

Pwning OWASP Juice Shop Write Goodreads Review

This is the official companion guide to the OWASP Juice Shop. It will give you a complete overview of the vulnerabilities found in the application including hints how to spot and exploit them. In the appendix you will even find complete step-by-step solutions to every challenge. Pwning OWASP Juice Shop is published with GitBook under CC BY-NC-ND 4.0 and is available for free in PDF, Kindle and ePub format. You can also browse the full content online!

Pwning OWASP Juice Shop Cover

Slide Decks

Troubleshooting Gitter

If you need help with the application setup please check the TROUBLESHOOTING.md or post your specific problem or question in the official Gitter Chat.

Contributing GitHub contributors Waffle.io - Columns and their card count JavaScript Style Guide Crowdin Bountysource Activity

We are always happy to get new contributors on board! Please check the following table for possible ways to do so:

Found a bug? Crashed the app? Broken challenge? Found a vulnerability that is not on the Score Board? Create an issue or post your ideas in the chat
Want to help with development? Pull requests are highly welcome! Please refer to the Contribute to development and Codebase 101 chapters of our companion guide ebook
Want to help with internationalization? Find out how to join our Crowdin project in the Helping with translations documentation
Anything else you would like to contribute? Write an email to owasp_juice_shop_project@lists.owasp.org or bjoern.kimminich@owasp.org


Did you write a blog post, magazine article or do a podcast about or mentioning OWASP Juice Shop? Or maybe you held or joined a conference talk or meetup session, a hacking workshop or public training where this project was mentioned?

Add it to our ever-growing list of REFERENCES.md by forking and opening a Pull Request!


  • On Spreadshirt.com and Spreadshirt.de you can get some swag (Shirts, Hoodies, Mugs) with the official OWASP Juice Shop logo
  • On StickerYou.com you can get variants of the OWASP Juice Shop logo as single stickers to decorate your laptop with. They can also print magnets, iron-ons, sticker sheets and temporary tattoos.

The most honorable way to get some stickers is to contribute to the project by fixing an issue, finding a serious bug or submitting a good idea for a new challenge!

We're also happy to supply you with stickers if you organize a meetup or conference talk where you use or talk about or hack the OWASP Juice Shop! Just contact the mailing list or the project leader to discuss your plans! !


PayPal PayPal

PayPal donations via above button go to the OWASP Foundations and are earmarked for "Juice Shop". This is the preferred and most convenient way to support the project.

Credit Card (through RegOnline)

OWASP hosts a donation form on RegOnline. Refer to the Credit card donation step-by-step guide for help with filling out the donation form correctly.

Liberapay Liberapay receiving

Crypto Currency

Bitcoin Dash Ether


The OWASP Juice Shop core project team are:

For a list of all contributors to the OWASP Juice Shop please visit our HALL_OF_FAME.md.

Licensing license

This program is free software: you can redistribute it and/or modify it under the terms of the MIT license. OWASP Juice Shop and any contributions are Copyright © by Bjoern Kimminich 2014-2019.

Juice Shop Logo