brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
juice-shop"'OWASP Juice Shop guide: Web application security testing with intentionally" vulnerable Node.js/Express application for learning and practice'
Independent GitHub snapshot · Automated classification · Original documentation governs
name: juice-shop compatibility: opencode completeness: 95 content-types:
The OWASP Juice Shop is an intentionally vulnerable Node.js/Express web application for learning and practicing web application security testing.
Use when:
Do NOT use when:
┌─────────────────────────────────────────────────────────────┐
│ Juice Shop Application │
├─────────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Frontend │────▶│ Backend │────▶│ Database │ │
│ │ (Angular) │ │ (Express) │ │ (SQLite/Mongo)││
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ Security │ │
│ │ Features │ │
│ │ (Vulnerabilities) │
│ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
The application contains SQL injection vulnerabilities in search functions.
// Vulnerable pattern (DO NOT USE in production)
app.get('/search', (req, res) => {
const query = req.query.q;
db.execute(`SELECT * FROM products WHERE name LIKE '%${query}%'`);
});
Reflected and stored XSS vulnerabilities in user-input fields.
File access endpoints without proper path validation.
// Vulnerable pattern
app.get('/download', (req, res) => {
const file = req.query.file;
res.sendFile(path.join(__dirname, 'ftp', file));
});
Weak session management and password policies.
# Clone the repository
git clone https://github.com/juice-shop/juice-shop.git
cd juice-shop
# Install dependencies
npm install
# Start the application
npm start
# or
node app.js
Manual Testing: Use browser developer tools to:
Automated Scanning: Use tools like:
The application includes a challenge system to guide learners:
# View available challenges
curl -X GET http://localhost:3000/api/Challenges
# Database configuration
export DATABASE=sqlite
export DATABASE_PATH=./data/juiceshop.sqlite
# Port configuration
export PORT=3000
# Log level
export LOG_LEVEL=debug
# Security settings
export NO_SECURITY_HINTS=false
docker run -p 3000:3000 owaspjuice-shop/juice-shop
Port already in use
PORT environment variablekill $(lsof -t -i:3000)Database errors
Modules not found
npm install from project root