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.
╔═══════════════════════════════════════════════════════════════╗
║ ██████╗ ███████╗███╗ ██╗████████╗███████╗███████╗████████╗ ║
║ ██╔══██╗██╔════╝████╗ ██║╚══██╔══╝██╔════╝██╔════╝╚══██╔══╝ ║
║ ██████╔╝█████╗ ██╔██╗ ██║ ██║ █████╗ ███████╗ ██║ ║
║ ██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║ ██╔══╝ ╚════██║ ██║ ║
║ ██║ ███████╗██║ ╚████║ ██║ ███████╗███████║ ██║ ║
║ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚══════╝╚══════╝ ╚═╝ ║
║ MODERN CYBER RANGE · 53 CHALLENGES · 8 TRACKS ║
╚═══════════════════════════════════════════════════════════════╝
★ Mettez une étoile à ce dépôt s'il vous aide - c'est gratuit et cela aide d'autres personnes à découvrir une formation gratuite en sécurité.
PENTEST-LAB n'est pas une autre machine à vulnérabilité unique. C'est un cyber range complet qui associe les perspectives attaquant et 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 interrupteurs pour chaque mesure d'atténuation.127.0.0.1, avertit bruyamment sur 0.0.0.0, tous les
secrets sont factices et clairement marqués, les cibles SSRF sont des simulations locales en mémoire (pas
de sortie réseau réelle), aucune cible externe.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. Une seule commande (installe les dépendances, initialise la base de données, démarre 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 capturés / événements / progression de la chaîne
make reset
# Rafraîchir les données de démonstration
make seed
# Test de fumée des routes principales (démarrez d'abord le laboratoire)
make test
# Valider le registre des défis (identifiants/drapeaux uniques, champs, ressources)
make verify-registry
# Démonstration d'exploitation sûre en local uniquement (5 défis)
python demo_exploit.py
| Parcours | Ce que vous apprenez | # |
|---|---|---|
| ◆ Test d'intrusion Web | SQLi, IDOR, téléversement de fichiers, traversée de chemins, contournement WAF | 14 |
| ◆ Sécurité API | BOLA, affectation massive, 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 réinitialisation par en-tête d'hôte | 9 |
| ◆ Cloud / DevOps | Fuite .env, SSRF métadonnées, débogage docker, stockage public, jetons CI/CD | 5 |
| ◆ Sécurité IA | injection d'invite, injection indirecte, fuite/empoisonnement RAG, appels d'outils, jailbreak multi-tours, contournement de filtre de sortie et exercices d'audit à trois niveaux | 10 |
| ◆ Logique métier | cumul de coupons, quantité négative, conditions de course, contournement de paiement | 5 |
| ◆ Chaîne d'attaque | Parcours de bout en bout guidé + chaîne complète RCE héritée, avec preuves | 2 |
| ◆ Preuves Blue Team | Détecter les attaques et générer un rapport GRC | 1 |
| 53 |
Chaque défi comprend : identifiant, titre, parcours, catégorie, difficulté, objectif, point de terminaison vulnérable, concept d'exploitation, 3 indices progressifs (vague → spécifique → réponse), drapeau, remédiation, notes de détection/preuves, un domaine de contrôle mappé et une liste de ressources à apprendre 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 d'identifiants/jetons →
É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 de terminaison de débogage divulgue les routes
curl -s $B/api/attack-chain/leak # 2. secret JWT factice divulgué (weak123)
# 3. forger un jeton admin -> 4. élever les privilèges -> 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 affiche la même activité que celle que l'attaquant vient d'effectuer : événements récents, échecs de connexion, accès API suspects, téléversements 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é selon sa 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, chacun mappé à un constat avec sévérité, point de terminaison affecté, preuve, impact métier, remédiation, domaine de contrôle et 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 \
-H 'Content-Type: application/json' -d '{"format":"csv"}'
# Domaines de contrôle mappés : Contrôle d'accès, Journalisation et surveillance,
# 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 mappage large de domaines de contrôle pour l'apprentissage de la détection/GRC. Il ne prétend pas être conforme à une norme quelconque.
Le dépôt ne contient pas de captures d'écran ni de GIF enregistré. Si vous créez
des ressources de démonstration locales, placez-les sous docs/screenshots/ et documentez le
processus de capture à côté. Le script de démonstration maintenu, prêt pour la présentation,
est docs/DEMO_WALKTHROUGH.md.
Ce laboratoire est volontairement vulnérable. Exécutez-le uniquement dans des environnements isolés et ne l'exposez jamais sur Internet.
127.0.0.1 par défaut (HOST=127.0.0.1 dans backend/.env).HOST=0.0.0.0 affiche un avertissement bruyant ; l'interface affiche une bannière de danger.├── start_lab.py # lanceur en une commande (dépendances + données + exécution)
├── demo_exploit.py # démonstration d'exploitation sûre en local uniquement (5 défis)
├── docker-compose.yml # publication localhost uniquement
├── Makefile # install / start / reset / test / demo / docker
├── CHALLENGES.md # catalogue complet des défis
├── frontend/ # interface du tableau de bord (parcours, chaîne, défenseur, preuves)
├── backend/
│ ├── server.js # application Express, liaison localhost, câblage des routes
│ ├── challenges/registry.js # REGISTRE CENTRAL des défis (53 défis)
│ ├── ai/ # SIMULATEUR IA TRANSPARENT + magasin RAG (sans LLM externe)
│ ├── utils/events.js # MAGASIN D'ÉVÉNEMENTS CENTRAL + flux Blue Team
│ ├── routes/ # routes vulnérables + modes (api, cloud, ai, shop, ...)
│ ├── scripts/ # init-db, seed, reset, test_routes
│ └── middleware/ # auth (sûre), auth.vulnerable, waf, security
├── solutions/ # écritures d'exploitation Python
└── docs/ # guides d'installation, d'outils, de démonstration et de chaîne d'attaque
Vous avez trouvé un bug ou souhaitez ajouter un défi ? Les PR sont les bienvenues.
backend/challenges/registry.js (source de vérité unique).events.captureFlag({ flag, req }) depuis une route vulnérable.make test et make verify-registry avant de soumettre.Usage pédagogique uniquement. Voir 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 laboratoire local.
Si ce laboratoire vous a aidé à apprendre quelque chose de nouveau :