Educator Kit - OSS OopsSec Store

May 14, 2026 · View on GitHub

A ready-to-use guide for instructors, bootcamp trainers, CTF organizers, and security team leads who want to integrate OSS OopsSec Store into their curriculum or training sessions.

Quick start for your students:

npx create-oss-store my-lab
cd my-lab && npm start
# → http://localhost:3000

Or with Docker (no Node.js required):

docker run -p 3000:3000 leogra/oss-oopssec-store

Point your students to the Roadmap as their entry point. It lays out all 34 challenges in a visual learning path, with chapters ordered from easy to hard, and recommends a self-guided approach (try the challenge first, then read the walkthrough).


Table of Contents

  1. Why OopsSec Store?
  2. OWASP Coverage Grid
  3. Challenge Catalog & Time Estimates
  4. Syllabus Integration Guide
  5. Deployment FAQ
  6. Student Report Template
  7. Contact & Support

Why OopsSec Store?

OopsSec Store is the only intentionally vulnerable web application built with Next.js and React: the stack your students will actually encounter in production.

OopsSec StoreDVWAJuice Shop
StackNext.js · React · PrismaPHP · MySQLNode.js · Angular
Setupnpx create-oss-store (< 1 min)Manual / DockerDocker
CTF format with flags
Walkthroughs includedPartial (hints)
Modern API attack vectorsPartial
Actively maintained⚠️
Hall of Fame for students
Free & open source (MIT)

Each vulnerability hides a flag in the format OSS{...}. Walkthroughs are available at koadt.github.io/oss-oopssec-store (useful for debriefing sessions or when students get stuck.)


OWASP Coverage Grid

OopsSec Store covers the full OWASP Top 10 (2025) plus advanced topics relevant to modern web stacks.

OWASP CategoryChallenges covered
A01 - Broken Access ControlIDOR (orders), BOLA (wishlist), Open Redirect, Path Traversal, Middleware Authorization Bypass (CVE-2025-29927), CSRF, CSRF + Self-XSS chain (profile takeover)
A02 - Security MisconfigurationPublic environment variable exposure, Information disclosure via API errors, XXE (supplier import)
A03 - Software Supply Chain Failuresnpm Typosquat → AI Rules File Backdoor chain (typosquatted package drops a malicious Cursor/Claude rules file with a hidden prompt-injection payload that steers the dev's AI agent)
A04 - Cryptographic FailuresWeak JWT secret, Weak MD5 Hashing, Padding Oracle (AES-CBC), Insecure Randomness (gift card code generation)
A05 - InjectionStored XSS (product reviews), Self-XSS (profile injection), SQL Injection (login), Product Search SQLi, Second-Order SQLi, X-Forwarded-For SQLi, Prompt Injection, MCP Server Poisoning
A06 - Insecure DesignClient-side price manipulation, Stored XSS via SVG upload, Race Condition Coupon Abuse
A07 - Authentication FailuresSession fixation & weak session management, Brute force (no rate limiting), Insecure password reset, AI Rules File Backdoor (hardcoded magic-header auth bypass on hidden diag endpoint)
A08 - Software or Data Integrity FailuresReact2Shell - RSC RCE (CVE-2025-55182), Mass Assignment / Parameter Pollution
A09 - Security Logging & Alerting FailuresPlaintext password logging
A10 - Mishandling of Exceptional ConditionsNo challenge currently maps directly to A10 — contributions welcome.

Note on SSRF: The Server-Side Request Forgery challenge is tagged A10:2021 since SSRF was removed as a standalone category in the 2025 release — it is now implicitly covered under A01 Broken Access Control.


Challenge Catalog & Time Estimates

A visual version of this catalog is available as the Roadmap on the docs site, grouped into 11 thematic chapters.

Difficulty: 🟢 Beginner · 🟡 Intermediate · 🔴 Advanced

#ChallengeCategoryDifficultyEst. time
1Public Environment Variable ExposureInformation Disclosure🟢15–20 min
2Information Disclosure via API ErrorsInformation Disclosure🟢15–20 min
3IDOR - Private Orders AccessBroken Access Control🟢20–30 min
4Open Redirect via Login PageInput Validation🟢20–30 min
5Stored XSS via Product ReviewInjection🟢30–45 min
6Self-XSS - Profile Bio InjectionInjection🟢20–30 min
7SQL Injection (Login)Injection🟡30–45 min
8Product Search SQL InjectionInjection🟡30–45 min
9Weak JWT SecretAuthentication🟡45–60 min
10Client-Side Price ManipulationInput Validation🟡30–45 min
11Weak MD5 HashingCryptographic🟡30–45 min
12Cross-Site Request Forgery (CSRF)Request Forgery🟡45–60 min
13Mass Assignment / Parameter PollutionInput Validation🟡45–60 min
14Path TraversalInput Validation🟡30–45 min
15Server-Side Request Forgery (SSRF)Request Forgery🟡45–60 min
16Session Fixation & Weak Session ManagementAuthentication🟡60–90 min
17Brute Force - No Rate LimitingAuthentication🟡30–45 min
18Insecure Password ResetAuthentication🟡45–60 min
19Broken Object Level Authorization (BOLA)Authorization🟡45–60 min
20Plaintext Password in Server LogsInformation Disclosure🟡30 min
21Prompt Injection - AI Support AssistantInjection🟡60–90 min
22Middleware Authorization Bypass (CVE-2025-29927)Authorization🟡30–45 min
23Insecure Randomness — Gift Card CodeCryptographic🟡45–60 min
24AI Rules File BackdoorSupply Chain🟡20–30 min
25Second-Order SQL InjectionInjection🔴60–90 min
26XXE - Supplier Import EndpointInjection🔴45–60 min
27SVG Upload - Stored XSSInjection🔴45–60 min
28X-Forwarded-For SQL InjectionInjection🔴60–90 min
29CSRF + Self-XSS Chain - Profile TakeoverRequest Forgery🔴90–120 min
30Padding Oracle - AES-CBC Token ForgeryCryptographic🔴90–120 min
31MCP Server Poisoning - Agent ManipulationInjection🔴90–120 min
32React2Shell - RSC RCE (CVE-2025-55182)RCE🔴120+ min
33Race Condition — Coupon AbuseBusiness Logic🔴45–90 min
34npm Supply Chain TyposquatSupply Chain🔴60–90 min

Total estimated time: 33–48 hours for the full curriculum depending on student level. Challenges 24 and 34 are chained — once the chain is started for flag #34, flag #24 follows in a few minutes. You don't need to cover everything. Pick the challenges that match your course objectives and time constraints.


Syllabus Integration Guide

Option A - One-week intensive (bootcamp)

Designed for a 5-day security bootcamp with 3–4 hours of lab time per day.

DayFocusChallenges
Day 1Recon & injection fundamentalsPublic Env Variable, Info Disclosure API, SQL Injection (login), Product Search SQLi, X-Forwarded-For SQLi
Day 2Client-side attacksStored XSS (review), Self-XSS (profile), SVG Upload XSS, CSRF, CSRF + Self-XSS chain
Day 3Auth & access controlIDOR, BOLA, Open Redirect, Weak JWT, Session Fixation, Brute Force, Password Reset, Middleware Bypass (CVE-2025-29927)
Day 4Crypto, data & server-sideWeak MD5, Padding Oracle, Insecure Randomness (gift card), Plaintext Logs, Path Traversal, SSRF, Client-Side Price Manipulation, Mass Assignment
Day 5Advanced, supply chain & AISecond-Order SQLi, XXE, Prompt Injection, MCP Poisoning, React2Shell RCE, Race Condition Coupon Abuse, npm Typosquat → AI Rules File Backdoor

Debrief format: After each session, share the walkthrough URL for each challenge and run a 15-min group debrief. Encourage students to compare their approach with the official walkthrough.


Option B - Semester module (university)

Designed to complement a web security or application security course over 6–10 weeks, with one 2-hour lab session per week.

WeekTopicChallengesLearning outcomes
1Lab setup & reconPublic Env Variable, Info Disclosure APIUnderstand the app architecture and attack surface
2SQL InjectionSQL Injection (login), Product Search SQLi, X-Forwarded-For SQLiIdentify and exploit injection in modern ORMs
3XSS & client-side attacksStored XSS, Self-XSS (profile), SVG Upload XSSUnderstand DOM context and stored payload execution
4Access control & input validationIDOR, BOLA, Open Redirect, Path Traversal, Client-Side Price Manipulation, Middleware Bypass (CVE-2025-29927)Enumerate and exploit broken access controls
5Auth & session managementWeak JWT, Session Fixation, Brute Force, Password Reset, Mass AssignmentAnalyze authentication flaws in real flows
6Cryptographic & logging failuresWeak MD5, Padding Oracle, Insecure Randomness (gift card), Plaintext LogsExploit weak crypto implementations
7Request forgery & chainingCSRF, SSRF, CSRF + Self-XSS chainChain low-severity bugs into critical exploits
8Advanced injection & AI securitySecond-Order SQLi, XXE, Prompt Injection, MCP PoisoningUnderstand advanced injection and AI attack surfaces
9Business logic & race conditionsClient-Side Price Manipulation, Race Condition Coupon AbuseExploit non-atomic state transitions and TOCTOU flaws
10Supply chain & AI tooling risknpm Typosquat, AI Rules File BackdoorRecognize supply-chain attack chains and AI-tooling poisoning vectors

Assessment: Use the Student Report Template as a graded deliverable for each challenge.


Option C - CTF event (half-day or full-day)

Designed for competitive CTF events with 10–30 participants.

Setup: Deploy one shared instance with Docker for the event, or have each participant run their own local instance.

# Shared instance (for organizers)
git clone https://github.com/kOaDT/oss-oopssec-store.git
cd oss-oopssec-store
docker compose up -d

# Per-participant instance
npx create-oss-store my-lab && cd my-lab && npm start

Scoring suggestion:

  • 🟢 Beginner challenges: 100 pts each
  • 🟡 Intermediate challenges: 250 pts each
  • 🔴 Advanced challenges: 500 pts each

Hall of Fame: Participants who find all flags can submit a PR to the Hall of Fame to have their profile listed in the app.


Option D - Security team internal training

Designed for pentesters or developers onboarding to a security-aware team.

Recommended path for developers (focus on understanding, not exploitation): Challenges 1–6 (recon & basics) → 7–8 (SQLi) → 12 (CSRF) → 14 (Path Traversal) → 21 (Prompt Injection). Focus on the "How to Fix" section of each walkthrough.

Recommended path for junior pentesters (focus on technique): Full catalog in order of difficulty. Target: complete all 34 challenges in 4–5 weeks of part-time practice.


Deployment FAQ

Can I run this in a classroom with no internet access?

Yes. Both the local Node.js and Docker setups are fully self-contained. No external network calls are required after initial setup.

# Pre-pull the Docker image on your network
docker pull leogra/oss-oopssec-store

# Students run locally with no internet
docker run -p 3000:3000 leogra/oss-oopssec-store

Can multiple students share one instance?

It's not recommended. Each student should run their own local instance. Shared instances can cause flag collisions (a student capturing a flag that another already submitted) and pollute the database state.

Exception: for CTF events where competition is the goal, a shared instance is fine.

How do I reset the database between sessions?

# Node.js setup
npm run setup   # Re-seeds the database from scratch

# Docker setup
npm run docker:reset   # Wipes all data and restarts fresh

Is it safe to run on a school or company network?

No. OopsSec Store must only be run in isolated environments (local machine or air-gapped VM). It contains intentional security flaws and must never be exposed to a production network or the internet.

Recommended setup for classrooms: each student runs the app on their own machine via localhost. No shared network exposure needed.

What are the system requirements?

SetupRequirements
Node.jsNode 18+, npm
DockerDocker Desktop or Docker Engine
Disk space~500 MB
RAM512 MB minimum, 1 GB recommended

Can I contribute new challenges for my course?

Yes, contributions are welcome. See CONTRIBUTING.md. New challenges should include a flag in seed.ts and a markdown walkthrough in content/vulnerabilities/.


Student Report Template

Use this template as a graded deliverable for each challenge. Students should complete one report per vulnerability exploited.


# Vulnerability Report - [Challenge Name]

**Student name:** **\*\***\_\_\_**\*\***
**Date:** **\*\***\_\_\_**\*\***
**Challenge difficulty:** 🟢 Beginner / 🟡 Intermediate / 🔴 Advanced

---

## 1. Vulnerability Summary

> In 2–3 sentences, describe the vulnerability in your own words.
> What is it? Where is it located in the application?

[Your answer here]

---

## 2. Steps to Reproduce

> List the exact steps you followed to exploit the vulnerability.
> Be precise enough that someone else could reproduce it.

1.
2.
3.

---

## 3. Proof of Exploitation

> Paste the flag you captured, and include a screenshot or HTTP request
> showing the successful exploit.

**Flag:** `OSS{...}`

**Evidence:**
[Screenshot / HTTP request / payload]

---

## 4. Root Cause Analysis

> Why does this vulnerability exist?
> What insecure code pattern or configuration makes it possible?

[Your answer here]

---

## 5. Remediation

> How would you fix this vulnerability?
> Reference OWASP guidance or best practices where relevant.

[Your answer here]

---

## 6. OWASP Classification

> Which OWASP Top 10 category does this vulnerability belong to?
> Justify your answer.

**Category:** A0X - [Name]
**Justification:** [Your answer here]

---

## 7. Reflection

> What did you learn from this challenge?
> Was anything surprising or harder than expected?

[Your answer here]

Contact & Support

If you use OopsSec Store in your course or event, I'd love to hear about it. Open a Discussion or send an email. Feedback from educators directly shapes the roadmap.


Last updated: May 2026. New challenges may have been added since this guide was written/updated.

OSS OopsSec Store is MIT-licensed. Free to use, adapt, and share. Do not deploy in production environments. For educational use only.