Probably the most modern and sophisticated insecure web application
The Open Worldwide Application Security Project® (OWASP) is a nonprofit foundation that works to improve the security of software. Through community-led open source software projects, hundreds of local chapters worldwide, tens of thousands of members, and leading educational and training conferences, the OWASP Foundation is the source for developers and technologists to secure the web.
Open Worldwide Application Security Project and OWASP are registered trademarks of the OWASP Foundation, Inc.
Translating "dump" or "useless outfit" into German yields "Saftladen" which is a compound word from "Saft" and "Laden". This reverse-translates into "juice" and "shop". Hence the project name.
That the initials "JS" match with those of "JavaScript" was purely coincidental!
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)
Unsuspectingly browse the Juice Shop like Average Joe!
Covering various vulnerabilities and serious design flaws
OWASP Juice Shop covers all vulnerabilities from the latest OWASP Top 10 and more.
There's something to do for beginners and veterans alike
Challenge progress is tracked on server-side
Solved challenges are announced as push notifications
Auto-saves your hacking progress and restores on server restart
Some challenges come with an embedded interactive tutorial
Gradually unlocking tutorials and the entire Score Board
Solved challenges are rated based on cheating probability
Identify the underlying code flaw and select an appropriate fix
Flag codes can optionally be displayed for solved challenges
All participants use individual Juice Shop instances anywhere, sharing only the flag code-ctfKey
and a central score server.
Utility project to help you host a hacking event on CTFd, FBCTF or RootTheBox
Locally via npm i -g juice-shop-ctf-cli
or as Docker container
Run juice-shop-ctf
on the command line and let a wizard create a data-dump to conveniently import into CTFd, FBCTF or RootTheBox
Run juice-shop-ctf --config myconfig.yml
to use non-interactive mode passing in configuration via YAML file
ctfFramework: CTFd | FBCTF | RootTheBox
juiceShopUrl: https://juice-shop.herokuapp.com
ctfKey: https://raw.githubusercontent.com/bkimminich/juice-shop/master/ctf.key
countryMapping: https://raw.githubusercontent.com/bkimminich/juice-shop/master/config/fbctf.yml
insertHints: none | free | paid
insertHintUrls: none | free | paid
insertHintSnippets: none | free | paid
Your CTF score server instance will be ready-to-play in <5min
Official platform to run separate Juice Shop instances for training or CTF participants on a central Kubernetes cluster
Restricts number of users to team members and protects against illicit cross-team instance access
Trivial registration, transparent instance stickiness, CTF-friendly score board out-of-the-box, automatic light/dark mode
Fully customizable business context and look & feel
Customize the application via a simple YAML
file
application:
domain: juice-sh.op
name: 'OWASP Juice Shop'
logo: JuiceShop_Logo.png
favicon: favicon_js.ico
theme: bluegrey-lightgreen
showVersionNumber: true
showGitHubLinks: true
numberOfRandomFakeUsers: 0
altcoinName: Juicycoin
privacyContactEmail: donotreply@owasp-juice.shop
customMetricsPrefix: juiceshop
social:
twitterUrl: 'https://twitter.com/owasp_juiceshop'
facebookUrl: 'https://www.facebook.com/owasp.juiceshop'
[...]
[...]
The YAML
configuration allows you to override all products
products:
-
name: 'Product Name'
price: 100
description: 'Product Description'
image: '(https://somewhe.re/)image.png'
useForProductTamperingChallenge: false
useForChristmasChallenge: false
fileForRetrieveBlueprintChallenge: ~
reviews:
- { text: 'Customer review', author: jim }
-
name: 'Product with Lorem Ipsum description, filler image and random price'
Your config is validated on server startup to prevent broken or unsolvable challenges!
JavaScript/TypeScript all the way from UI to REST API
Comes with cloud, local and containerized run options
Crowd-sourced UI translations for 40+ languages
Maximizing Test Automation & Code Coverage
Automated Build, CI/CD & Code Analysis
Convenient monitoring, notification and data integration capabilities
Sends a payload to a specified URL whenever a challenge is solved
{
"solution": {
"challenge": "localXssChallenge",
"cheatScore": 0,
"totalCheatScore": 0.15,
"issuedOn": "2020-12-15T18:24:33.027Z"
},
"ctfFlag": "b0d70dce...b85fac6785dba2349b",
"issuer": {
"hostName": "fv-az116-673",
"os": "Linux (5.4.0-1031-azure)",
"appName": "OWASP Juice Shop",
"config": "default",
"version": "12.3.0-SNAPSHOT"
}
}
JSON
template allows to import a dashboard into Grafana consuming and displaying all metrics gathered via Prometheus
If FAQ & README don't help, ask for help in the chat. Please refrain from using GitHub issues for support requests.
Yes, definitely! Use whatever pentesting tools you like the most!
Proxies like Zed Attack Proxy or BurpSuite Free Edition can definitely be useful. Automatic tools like Arachni or Nikto might find some vulnerabilities but will obviously not be able to get the Score Board to 100% for you.
No! The code from GitHub would spoiler all challenge solutions!
You can of course use everything that the application hands to you in the browser, so use its DevTools
! Peeking into the code snippets provided on the Score Board is fine, too. If you are a SAST tool vendor, you can obviously test your scanner against the Juice Shop codebase!
Yes! Feel free to look for ideas, clues & hints everywhere!
Again: Except for the application's own GitHub repository! Also there are many third party solution guides and videos available online, so you might want to be careful about accidental spoilers.
Please carefully follow the instructions in the README!
If Setup & Troubleshooting docs don't help, you can always ask the community or open an issue!
The application is cleanly reset on every startup!
Your Score Board progress is saved automatically and will restore after server restart! This only works if cookies are enabled in your browser.
Find more hints in the free official companion guide on Leanpub
The eBook can also be read online. You can always ask for hints in the community chat as well!
Please report untracked vulnerabilities by opening an issue
Of course you can also contribute directly by opening a pull request. Just stick to the contribution guide!
Some challenges are actually harmful in containerized or public cloud environments and are deliberately disabled there
This affects all Stored XSS due to risk of abuse, all XXE challenges (because they can lead to instance death by segfault
error) and the SSTi, Deserialization and some NoSQLi challenges (as they could have unforeseeable side effects on the hosting platform).
Of course! Visit our backlog on GitHub & translations on Crowdin
Issues labelled with good first issue and/or help wanted are the best starting point!
We fully agree! Thankfully, Brian Johnson already recorded one!
We couldn't agree more!
|
|
|
|
Some amazing facts & stats about the project
Copyright (c) 2014-2023 Björn Kimminich / @bkimminich
Licensed under the MIT license.
Created with reveal.js - The HTML Presentation Framework