
Plateforme cyber moderne avec 50 défis pratiques couvrant les domaines de la sécurité web, API, cloud, IA et équipe bleue. Propose des chaînes d'attaque guidées, un simulateur IA transparent et des rapports de preuves GRC pour apprendre les techniques de test d'intrusion et de défense.
Une application vulnérable moderne et un cyber range pour apprendre la sécurité Web, API, Cloud, IA et Blue Team grâce à des chaînes d'attaque pratiques.
╔═══════════════════════════════════════════════════════════════╗
║ ██████╗ ███████╗███╗ ██╗████████╗███████╗███████╗████████╗ ║
║ ██╔══██╗██╔════╝████╗ ██║╚══██╔══╝██╔════╝██╔════╝╚══██╔══╝ ║
║ ██████╔╝█████╗ ██╔██╗ ██║ ██║ █████╗ ███████╗ ██║ ║
║ ██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║ ██╔══╝ ╚════██║ ██║ ║
║ ██║ ███████╗██║ ╚████║ ██║ ███████╗███████║ ██║ ║
║ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚══════╝╚══════╝ ╚═╝ ║
║ CYBER RANGE MODERNE · 50 DÉFIS · 8 PISTES ║
╚═══════════════════════════════════════════════════════════════╝
★ Mettez une étoile à ce dépôt s'il vous aide – c'est gratuit et ça aide d'autres à découvrir une éducation gratuite à la sécurité.
PENTEST-LAB n'est pas un simple boîte à vulnérabilité unique. C'est un cyber range complet qui associe les perspectives de l'attaquant et du défenseur avec une sortie de preuves de type GRC :
[SYSTEM][USER][RETRIEVED][HISTORY], la sortie générée, la technique d'injection détectée et les bascules pour chaque mesure d'atténuation.127.0.0.1, avertit fortement sur 0.0.0.0, tous les secrets sont factices et clairement marqués, les cibles SSRF sont simulées en local dans le processus (pas de véritable sortie réseau), pas de cibles externes.make verify-registry valide le registre des défis (identifiants/drapeaux uniques, champs requis, ressources, nombre d'indices) pour que le catalogue reste cohérent.# 1. Commande unique (installe les dépendances, initialise la base de données, lance le serveur)
python start_lab.py
# ou : make start
Ouvrez http://localhost:3000 dans votre navigateur.
# Backend uniquement
cd backend && npm install && npm start
# Docker (publié sur 127.0.0.1 uniquement)
docker compose up --build
# Réinitialiser les drapeaux/événements/progression capturés
make reset
# Recharger les données de démonstration
make seed
# Test rapide des routes principales (lancez d'abord le lab)
make test
# Valider le registre des défis (identifiants/drapeaux uniques, champs, ressources)
make verify-registry
# Démonstration d'exploitation locale sécurisée (5 défis)
python demo_exploit.py
Chaque défi comporte : identifiant, titre, piste, catégorie, difficulté, objectif, point d'accès vulnérable, concept d'exploitation, 3 indices progressifs (vague → précis → réponse), drapeau, correction, notes de détection/preuves, un domaine de contrôle mappé et une liste de ressources apprenez avant de résoudre.
Cliquez sur n'importe quelle carte de défi pour ouvrir la fenêtre modale. Elle vous donne :
Une chaîne réaliste, entièrement locale, en six étapes détectées :
Reconnaissance → Divulgation d'informations → Abus de jetons/identifiants →
Élévation de privilèges → Accès aux données sensibles → Rapport de preuves
B=http://127.0.0.1:3000
curl -s $B/api/attack-chain/recon # 1. le point d'accès de débogage divulgue les routes
curl -s $B/api/attack-chain/leak # 2. secret JWT factice divulgué (weak123)
# 3. forger jeton admin -> 4. élever -> 5. lire les enregistrements clients factices -> 6. rapport
curl -s $B/api/attack-chain/progress
Suivez la progression en direct dans l'onglet Chaîne d'attaque.
L'onglet Défenseur montre la même activité que l'attaquant vient d'effectuer : événements récents, échecs de connexion, accès API suspects, téléchargements de fichiers, tentatives SSRF, tentatives d'élévation de privilèges, drapeaux capturés et progression de la chaîne d'attaque – chaque événement est coloré par sévérité, les captures de drapeaux sont signalées par 🚩.
curl -s http://localhost:3000/api/blue-team/dashboard
Générez un rapport à partir de vos drapeaux capturés, mappant chacun à une constatation avec sévérité, point d'accès affecté, preuve, impact métier, correction, domaine de contrôle et une opportunité de détection.
# Markdown (par défaut)
curl -s -X POST http://localhost:3000/api/evidence/report \
-H 'Content-Type: application/json' -d '{"format":"markdown"}'
# JSON ou CSV
curl -s -X POST http://localhost:3000/api/evidence/report -d '{"format":"csv"}'
# Domaines de contrôle mappés : Contrôle d'accès, Journalisation et supervision,
# Développement sécurisé, Gestion des secrets, Gestion des changements,
# Gestion de la configuration, Protection des données, Réponse aux incidents.
⚠️ Il s'agit d'un mapping large de domaines de contrôle pour l'apprentissage de la détection/GRC. Il n'affirme aucune conformité à une norme.
| Tableau de bord des pistes | Chaîne d'attaque |
| Vue défenseur | Rapport de preuves |
🎬 Démo GIF : docs/demo.gif – consultez docs/DEMO_WALKTHROUGH.md pour un script de présentation d'environ 6 minutes. (Déposez vos propres captures dans docs/screenshots/ et docs/demo.gif pour remplacer les placeholders.)
Ce lab est intentionnellement vulnérable. Exécutez-le uniquement dans des environnements isolés et ne l'exposez jamais à Internet.
127.0.0.1 par défaut (HOST=127.0.0.1 dans backend/.env).HOST=0.0.0.0 affiche un avertissement sonore ; l'interface montre une bannière de danger.├── start_lab.py # Lanceur en une commande (dépendances + initialisation + exécution)
├── demo_exploit.py # Démonstration d'exploitation locale sécurisée (5 défis)
├── docker-compose.yml # Publication uniquement sur localhost
├── Makefile # Installer / démarrer / réinitialiser / tester / démo / docker
├── CHALLENGES.md # Catalogue complet des défis
├── frontend/ # Interface utilisateur du tableau de bord (pistes, chaîne, défenseur, preuves)
├── backend/
│ ├── server.js # Application Express, liaison localhost, routage
│ ├── challenges/registry.js # REGISTRE CENTRAL des défis (50 défis)
│ ├── ai/ # Simulateur IA TRANSPARENT + stockage RAG (pas de LLM externe)
│ ├── utils/events.js # Magasin central d'événements + flux Blue Team
│ ├── routes/ # Routes vulnérables + modes (api, cloud, ai, shop, ...)
│ ├── scripts/ # init-db, seed, reset, test_routes
│ └── middleware/ # auth (sûr), auth.vulnerable, waf, security
├── solutions/ # Scripts d'exploitation Python
└── docs/ # SECURITY_REPORT, SETUP, DEMO_WALKTHROUGH
Vous avez trouvé un bug ou souhaitez ajouter un défi ? Les PR sont les bienvenues.
backend/challenges/registry.js (source unique de vérité).events.captureFlag({ flag, req }) depuis une route vulnérable.make test et make verify-registry avant de soumettre.Usage éducatif uniquement. Consultez LICENSE si présent. Utilisez uniquement contre des systèmes que vous possédez ou que vous êtes explicitement autorisé à tester – ici, cela signifie ce lab local.
Si ce lab vous a aidé à apprendre quelque chose de nouveau :
| Piste | Ce que vous apprenez | # |
|---|
| ◆ Web App Pentest | SQLi, IDOR, téléchargement de fichier, traversée de chemin, contournement WAF | 14 |
| ◆ API Security | BOLA, affectation en masse, contournement de limite de débit, webhooks, GraphQL, réflexion CORS, injection NoSQL | 7 |
| ◆ Auth & Session | Confusion kid/alg JWT, réutilisation de jeton d'actualisation, jetons de réinitialisation, fixation, MFA, empoisonnement de l'en-tête d'hôte, jeton de réinitialisation | 9 |
| ◆ Cloud / DevOps | Fuite de fichier .env, SSRF metadata, débogage Docker, stockage public, jetons CI/CD | 5 |
| ◆ AI Security | Injection de prompt, injection indirecte, fuite/empoisonnement RAG, appels d'outils, jailbreak multi-tours, contournement de filtre de sortie | 7 |
| ◆ Business Logic | Cumul de coupons, quantité négative, conditions de concurrence, contournement de paiement | 5 |
| ◆ Attack Chain | Parcours guidé de bout en bout + chaîne complète héritée RCE, avec preuves | 2 |
| ◆ Blue Team Evidence | Détecter des attaques et générer un rapport GRC | 1 |
| 50 |