OWASP Juice Shop
![Subreddit subscribers](https://camo.githubusercontent.com/5bdf671db427320d0b4c2a460eef38b6b41c9cfb58b10f1e3e741f414daaf350/68747470733a2f2f696d672e736869656c64732e696f2f7265646469742f7375627265646469742d73756273637269626572732f6f776173705f6a7569636573686f703f7374796c653d736f6369616c)
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) — But this doesn't have anything to do with juice. (@coderPatros' wife)
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!
For a detailed introduction, full list of features and architecture overview please visit the official project page: https://owasp-juice.shop
Setup
You can find some less common installation variations in the Running OWASP Juice Shop documentation.
Deploy on Heroku (free ($0/month) dyno)
- Sign up to Heroku and log in to your account
- 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
- Install node.js
- Run
git clone https://github.com/bkimminich/juice-shop.git
(or clone your own fork of the repository) - Go into the cloned folder with
cd juice-shop
- Run
npm install
(only has to be done before first start or when you change the source code) - Run
npm start
- Browse to http://localhost:3000
Packaged Distributions
- Install a 64bit node.js on your Windows, MacOS or Linux machine
- Download
juice-shop-<version>_<node-version>_<os>_x64.zip
(or.tgz
) attached to latest release - Unpack and
cd
into the unpacked folder - Run
npm start
- Browse to http://localhost:3000
Each packaged distribution includes some binaries for
sqlite3
andlibxmljs
bound to the OS and node.js version whichnpm install
was executed on.
Docker Container
- Install Docker
- Run
docker pull bkimminich/juice-shop
- Run
docker run --rm -p 3000:3000 bkimminich/juice-shop
- Browse to http://localhost:3000 (on macOS and Windows browse to http://192.168.99.100:3000 if you are using docker-machine instead of the native docker installation)
Vagrant
- Install Vagrant and Virtualbox
- Run
git clone https://github.com/bkimminich/juice-shop.git
(or clone your own fork of the repository) - Run
cd vagrant && vagrant up
- Browse to 192.168.33.10:3000
Amazon EC2 Instance
- In the EC2 sidenav select Instances and click Launch Instance
- In Step 1: Choose an Amazon Machine Image (AMI) choose an Amazon Linux AMI or Amazon Linux 2 AMI
- In Step 3: Configure Instance Details unfold Advanced Details and copy the script below into User Data
- In Step 6: Configure Security Group add a Rule that opens port 80 for HTTP
- Launch your instance
- Browse to your instance's public DNS
#!/bin/bash
yum update -y
yum install -y docker
service docker start
docker pull bkimminich/juice-shop
docker run -d -p 80:3000 bkimminich/juice-shop
Azure Container Instance
- 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). - Create a resource group by running
az group create --name <group name> --location <location name, e.g. "centralus">
- 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
- Your container will be available at
http://<dns name label>.<location name>.azurecontainer.io:3000
Google Compute Engine Instance
- Login to the Google Cloud Console and open Cloud Shell.
- Launch a new GCE instance based on the juice-shop container. Take
note of the
EXTERNAL_IP
provided in the output.
gcloud compute instances create-with-container owasp-juice-shop-app --container-image bkimminich/juice-shop
- Create a firewall rule that allows inbound traffic to port 3000
gcloud compute firewall-rules create juice-rule --allow tcp:3000
- Your container is now running and available at
http://<EXTERNAL_IP>:3000/
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 | Supported | Packaged Distributions | Docker image tags |
---|---|---|---|
14.x | ✔️ | ![]() ![]() ![]() ![]() |
latest (current official master release), snapshot (preview from develop branch) |
13.x | (:heavy_check_mark:) | ||
12.x | ✔️ | ![]() ![]() ![]() ![]() |
|
11.x | (:heavy_check_mark:) | ||
10.x | ✔️ | ![]() ![]() ![]() ![]() |
|
<10.x | ❌ |
Juice Shop is automatically tested only on the latest .x
minor
version of each node.js version mentioned above! There is no guarantee
that older minor node.js releases will always work with Juice Shop!
Please make sure you stay up to date with your chosen version.
Demo
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!
Customization
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.
CTF-Extension
If you want to run OWASP Juice Shop as a Capture-The-Flag event, we
recommend you set it up along with a CTFd or
FBCTF 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.
If you need help with the application setup please check our our existing Troubleshooting guide. If this does not solve your issue please post your specific problem or question in the Gitter Chat where community members can best try to help you.
🛑 Please avoid opening GitHub issues for support requests or questions!
Documentation
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 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!
Slide Decks
We are always happy to get new contributors on board! Please check CONTRIBUTING.md to learn how to contribute to our codebase or the translation into different languages!
References
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!
Merchandise
- 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! !
The OWASP Foundation gratefully accepts donations via Stripe. Projects such as Juice Shop can then request reimbursement for expenses from the Foundation. If you'd like to express your support of the Juice Shop project, please make sure to tick the "Publicly list me as a supporter of OWASP Juice Shop" checkbox on the donation form. You can find our more about donations and how they are used here:
https://pwning.owasp-juice.shop/part3/donations.html
Contributors
The OWASP Juice Shop core project team are:
- Björn Kimminich aka
bkimminich
(Project Leader) - Jannik Hollenbach aka
J12934
- Timo Pagel aka
wurstbrot
For a list of all contributors to the OWASP Juice Shop please visit our HALL_OF_FAME.md.
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-2020.