ToyStore VulnLab is a deliberately insecure, Amazonβstyle toy shopping web app built for learning Web App VAPT through handsβon practice.
Run it locally, break it safely, and sharpen your skills against OWASP Top 10 issues using real workflows: login, cart, checkout, admin panel, and more.
Security skills improve fastest when you can see the bug, exploit it, and then fix it.
This project is designed as a controlled vulnerable lab where you can:
- Practice Web Application Penetration Testing
- Reproduce real-world vulnerability patterns
- Learn how bugs behave in auth, sessions, API calls, DB queries
- Improve both attacker mindset + defender thinking
β
Perfect for: Students β’ Bug bounty beginners β’ VAPT practice β’ OWASP Top 10 training
ToyStore VulnLab includes typical eβcommerce modules:
- User signup / login / sessions
- Product listing + search
- Cart & checkout flow
- Orders / payments simulation
- Admin panel features (intentionally unsafe in places)
- Dockerized DB initialization
This lab intentionally contains vulnerable patterns based on OWASP Top 10:
- β Injection (SQLi-like patterns / unsafe queries)
- β Broken Access Control (IDOR / missing role checks)
- β Identification & Authentication failures
- β Security Misconfiguration
- β Insecure Design decisions (by intention)
- β Data exposure / weak validation flows
- β Logging gaps / monitoring weaknesses
π See: VULNERABILITY_MATRIX.md for the full list + mapping.
- Node.js / Express (server)
- PostgreSQL (database)
- Docker + Docker Compose (local environment)
- SQL init scripts in
/db
Make sure you have:
- Docker + Docker Compose installed
- Node.js (optional if you run only via Docker)
git clone https://github.com/Itachi-Hacks/toy-store-vuln.git
cd toy-store-vuln-COMPLETE
docker compose up --buildThe app will start locally (check terminal output for the exact port).
β You can also use the included start scripts:
chmod +x start.sh
./start.shor
chmod +x start-simple.sh
./start-simple.shSome builds may insert demo users during DB init.
If you donβt see credentials mentioned on startup, check:
SETUP.mddb/init.sql
- Start the lab locally
- Open
TESTING_GUIDE.md - Follow modules in order:
- Authentication testing
- Authorization / access control
- Input validation & injection
- Session management
- Admin routes
- Document findings like a real report:
- Impact
- Steps to reproduce
- Payload
- Fix recommendation
You can test this lab using:
- Browser DevTools
- Burp Suite / OWASP ZAP
- curl / httpie
- sqlmap (only locally)
- Nmap (localhost only)
- Custom scripts
This repo is meant to run only in a local isolated environment:
β Allowed:
- Localhost scanning
- Docker network traffic inspection
- Testing payloads for learning
β Not allowed:
- Deploying publicly
- Scanning external targets
- Using it against systems you donβt own
toy-store-vuln-COMPLETE/
βββ web-app.js # Main Node.js app
βββ docker-compose.yml # App + DB containers
βββ Dockerfile # App image build
βββ db/
β βββ init.sql # Database schema + seed data
βββ SETUP.md # Setup & environment info
βββ TESTING_GUIDE.md # Step-by-step testing guide
βββ VULNERABILITY_MATRIX.md # Vulnerability mapping table
βββ UPDATES.md # Change log / updates
βββ start.sh / start-simple.sh # Quick run scripts
Want to level up?
After finding vulnerabilities, try to patch the app:
- Sanitize + validate user input
- Add server-side authorization checks
- Use parameterized queries everywhere
- Lock down admin routes
- Improve error handling & logging
- Add rate-limiting / basic security headers
Then compare your fixes with secure coding best practices.
Useful project docs included in this repo:
SETUP.mdβ Setup steps & environment detailsTESTING_GUIDE.mdβ VAPT walkthrough tasksVULNERABILITY_MATRIX.mdβ Vulnerabilities + OWASP mappingUPDATES.mdβ Changes & version notes
This is a learning repo β contributions are welcome:
- Add new vulnerable modules (with labels)
- Improve documentation clarity
- Add fixes behind a secure branch
- Improve DB seed data and realism
β Please keep vulnerabilities intentional and documented.
Educational use only.
This project is intentionally vulnerable and must be used only in controlled environments.
By using this repo, you agree that:
- You will not deploy it publicly
- You will use it only for legal, ethical practice
- You are responsible for your own actions
If you learned something from this project:
- Star the repo β
- Share it with your security friends π§ π
- Build your own βsecure versionβ fork π οΈ
Happy (ethical) hacking! π§Έπ₯