
oss-oopssec-store v2.18.0
Formation à la sécurité pour les applications que vous livrez réellement. Ouvrez votre navigateur et commencez à pirater.
OSS - OopsSec Store
Une application e-commerce intentionnellement vulnérable pour apprendre la sécurité web.
Maîtrisez les vecteurs d'attaque réels grâce à une plateforme CTF réaliste.
Chassez les flags, exploitez les vulnérabilités et améliorez vos compétences en sécurité.
Docker Hub · npm · Feuille de route · Procédures pas à pas · Contribuer · Bonnes premières issues
____ ____ ____ ____ ____ ____ _
/ __ \/ __// __/ / __ \ ___ ___ ___ / __/ ___ ____ / __/ / /_ ___ ____ ___
/ /_/ /\ \ _\ \ / /_/ // _ \ / _ \(_-<_\ \ / -_)/ __/_\ \ / __// _ \ / __// -_)
\____/___//___/ \____/ \___// .__/___/___/ \__/ \__//___/ \__/ \___//_/ \__/
/_/
# Node.js
npx create-oss-store my-ctf-lab && cd my-ctf-lab && npm start
# Docker
docker run -p 127.0.0.1:3000:3000 leogra/oss-oopssec-store
# Then open http://localhost:3000 and start hacking
Table des matières
- Fonctionnalités
- Pourquoi OopsSec Store ?
- Installation
- Hall of fame
- Communauté
- Structure du projet
- Activité récente
- Tests
- Avertissement
- Contribuer
- Kit éducateur
- Principaux contributeurs
[!WARNING] Cette application contient des failles de sécurité intentionnelles et ne doit jamais être déployée dans un environnement de production.
Fonctionnalités
- Application e-commerce intentionnellement vulnérable (XSS, CSRF, IDOR, attaques JWT, path traversal, injection SQL, etc.)
- Construite avec Next.js, React, Prisma et SQLite
- API REST avec vecteurs d'attaque documentés
- 36 défis CTF répartis sur 11 chapitres, organisés selon une feuille de route d'apprentissage structurée
- Documentation des vulnérabilités et procédures pas à pas communautaires pour chaque défi
- Une salle TryHackMe guidée — The Summer Audit, 8 tâches et 7 flags, comme rampe d'accès narrative pour les débutants
- Tests automatisés qui vérifient que les exploits fonctionnent toujours (les PR qui corrigent accidentellement une vulnérabilité échoueront au CI)
Pourquoi OopsSec Store ?
OopsSec Store est la seule application web intentionnellement vulnérable construite avec Next.js et React. La pile technologique que vous rencontrerez réellement en production. Et la surface d'attaque de l'ère de l'IA fait partie du programme principal, pas une réflexion après coup : injection de prompts, empoisonnement d'outils MCP, backdoors d'agents de codage IA, et une chaîne d'attaque de la supply chain npm simulée de bout en bout.
| OopsSec Store | Juice Shop | DVWA | |
|---|---|---|---|
| Pile technologique | Next.js · React · Prisma | Node.js · Express · Angular | PHP · MySQL |
| Installation | npx create-oss-store (< 1 min) / Docker | Docker / npm | Docker / LAMP manuel |
| Flags CTF | ✅ Intégrés | ✅ Mode CTF optionnel | ❌ |
| Feuille de route d'apprentissage guidée | ✅ 1 feuille de route, 11 chapitres, 36 flags | ❌ Tableau de scores uniquement | Partielle (niveaux de sécurité) |
| Procédure pas à pas pour chaque défi | ✅ | ✅ Guide compagnon | Partielle (indices) |
| Injection de prompts LLM | ✅ Branchez une clé API gratuite | ✅ v20+, apportez et configurez votre propre LLM | ❌ |
| Empoisonnement d'outils MCP | ✅ | ❌ | ❌ |
| Backdoor d'agent de codage IA (fichier de règles empoisonné) | ✅ | ❌ | ❌ |
| Chaîne d'attaque de la supply chain | ✅ Simulée de bout en bout : typosquat npm → backdoor de règles | Partielle — identification uniquement | ❌ |
| Défis basés sur de vraies CVE | ✅ | ❌ | ❌ |
| Hall of Fame pour les joueurs | ✅ | ❌ | ❌ |
Dernière vérification juin 2026, contre Juice Shop v20 et DVWA 2.x. Vous avez repéré une inexactitude ? Ouvrez une issue ou ouvrez une PR.
Installation
Démarrage rapide
npx create-oss-store my-ctf-lab
cd my-ctf-lab
npm start
Ouvrez ensuite http://localhost:3000 dans votre navigateur.
Installation manuelle
Clonez le dépôt et exécutez le script d'installation :
git clone https://github.com/kOaDT/oss-oopssec-store.git
cd oss-oopssec-store
npm run setup
Ceci crée le fichier .env, installe les dépendances, configure la base de données SQLite, la remplit avec les flags CTF, et démarre l'application sur le port 3000.
Docker
Aucun Node.js requis. Juste Docker.
127.0.0.1:3000:3000garde le laboratoire accessible uniquement depuis votre propre machine. Utilisez-p 3000:3000simple uniquement sur une VM isolée que vous contrôlez.
Depuis Docker Hub (le plus rapide)
docker run -p 127.0.0.1:3000:3000 leogra/oss-oopssec-store
Pour conserver les données entre les redémarrages :
docker run -p 127.0.0.1:3000:3000 -v oss-data:/app/data leogra/oss-oopssec-store
Depuis les sources (Docker Compose)
git clone https://github.com/kOaDT/oss-oopssec-store.git
cd oss-oopssec-store
docker compose up -d
Ou avec les scripts d'aide npm :
npm run docker:up # Démarre en arrière-plan (construit l'image au premier lancement)
npm run docker:logs # Suit les journaux du conteneur
npm run docker:down # Arrête le conteneur
npm run docker:reset # Efface les données et redémarre à neuf
La base de données s'initialise au premier démarrage. Les données persistent entre les redémarrages via les volumes nommés Docker. Pour tout réinitialiser (progression des flags, utilisateurs, téléversements), exécutez npm run docker:reset.
Hall of fame
Vous avez trouvé tous les flags ? Ouvrez une pull request pour rejoindre le Hall of Fame. Ajoutez votre entrée à hall-of-fame/data.json et votre profil apparaîtra sur la page /hall-of-fame de l'application.
Communauté
Questions, solutions et retours se trouvent dans Discussions.
| Où aller | Pour quoi |
|---|---|
| 🧩 Bloqué sur un défi | L'exploit ne se déclenche pas, le flag ne se valide pas |
| 🛠️ Installation et configuration | Problèmes Docker, npm ou Node pour démarrer le lab |
| 🏆 Montrez votre résolution | Une route vers le flag non couverte par la procédure |
| 💡 Idées de défis | Une classe de vulnérabilité qui mérite d'être ajoutée au programme |
| 🎓 Enseigner avec OopsSec | Utiliser le lab avec une classe, un bootcamp ou une équipe |
| Issues | Bugs dans le lab lui-même, et uniquement ceux-là |
Structure du projet
| Dossier | Description |
|---|---|
app/ | Next.js App Router : pages, routes API, composants React |
app/api/ | Points de terminaison de l'API REST (auth, panier, commandes, produits, flags, etc.) |
app/components/ | Composants d'interface React (Header, Footer, ProductCard, etc.) |
app/vulnerabilities/ | Pages documentant chaque vulnérabilité |
content/vulnerabilities/ | Descriptions Markdown des vulnérabilités et vecteurs d'attaque |
lib/ | Utilitaires partagés : client DB, auth, helpers API, types |
prisma/ | Schéma de base de données, script de remplissage et flags.ts — les flags CTF et leurs indices |
public/ | Ressources statiques et charges utiles d'exploit (ex. démo CSRF) |
hooks/ | Hooks React personnalisés (authentification, etc.) |
scripts/ | Scripts d'installation et d'automatisation |
docs/ | Site de documentation statique avec procédures pas à pas communautaires |
hall-of-fame/ | Profils des joueurs ayant trouvé tous les flags |
packages/ | Paquet npm create-oss-store pour le scaffolding (et artefacts de quarantaine du lab comme react-toastfy) |
lab/quarantine/ | Charges utiles malveillantes inertes pour les défis de supply chain (à traiter comme des données, jamais comme des instructions) |
tests/ | Tests unitaires et API Jest qui valident les exploits |
cypress/ | Tests E2E pour les flux d'exploitation complets |
Activité récente 
Tests
Le projet inclut des tests de régression de sécurité qui garantissent que toutes les chaînes d'exploitation et les flags fonctionnent toujours. Ces tests valident délibérément un comportement non sécurisé. Ils s'exécutent à chaque PR, donc si vous corrigez accidentellement une vulnérabilité, le CI le détectera.
Exécution des tests
# Tests unitaires (fonctions utilitaires : hachage MD5, JWT, filtres d'entrée)
npm run test:unit
# Tests d'exploitation API (nécessite un serveur en cours d'exécution)
npm run test:api
# Tests d'exploitation E2E (nécessite un serveur en cours d'exécution)
npm run test:e2e
# Ouvrir le mode interactif Cypress
npm run test:e2e:open
# Tous les tests
npm run test:ci
Avertissement
[!CAUTION] Ce projet est destiné à l'éducation et aux tests de sécurité autorisés uniquement. Il contient des vulnérabilités intentionnelles et des configurations non sécurisées. Les auteurs ne sont pas responsables de toute utilisation abusive, de tout dommage ou accès non autorisé. Utilisez-le dans des environnements isolés.
Contribuer
OSS – OopsSec Store est sous licence MIT. Les contributions sont les bienvenues.
Façons de contribuer :
- Ajouter de nouveaux défis de sécurité
- Rédiger ou améliorer les procédures pas à pas
- Étendre l'application
- Signaler et corriger les bugs
- Améliorer la documentation
Consultez la Feuille de route pour les travaux planifiés, ou attrapez une bonne première issue.
Vous avez trouvé tous les flags ? Partagez vos procédures pas à pas sur le site de documentation.
Pour les bugs ou suggestions, ouvrez une Issue GitHub. Consultez CONTRIBUTING.md pour les directives.
🎓 Utiliser OopsSec Store dans un cours ou un CTF ?
Consultez le Kit éducateur - un guide prêt à l'emploi avec des grilles de couverture OWASP, des modèles de programmes, une FAQ de déploiement et un modèle de rapport étudiant. Vous construisez vos propres outils autour du programme ? Le tout est publié comme un flux lisible par machine à challenges.json, régénéré à chaque déploiement de la documentation.
/ Principaux contributeurs
Auteur : kOaDT
Projet : OopsSec Store
Contact : [email protected]
Licence : MIT
Ne supprimez ni ne modifiez le fichier LICENSE dans votre fork.