
Labs de vulnérabilités web atomiques. Une faille OWASP par application — Flask + Docker minimal, intentionnellement vulnérable pour une étude pratique avec Burp Suite.
⚠️ Intentionnellement vulnérable. À exécuter en local uniquement. Ne jamais exposer à Internet ni à un réseau partagé.
Lire ce document dans d'autres langues : Português (Brasil)
Jalon — v1.0 : atomicvulns couvre désormais les dix catégories de l'OWASP Top 10 2021 (A01–A10), à travers 38 atomes. Voir la version v1.0.
atomicvulns est une collection d'applications web — chacune minuscule, isolée et centrée sur de l'OWASP Top 10. Chaque atome est livré avec l'application vulnérable, la version corrigée, un diff commenté entre les deux, et un guide pratique de l'exploit.
Ce n'est pas un énième DVWA ou Juice Shop. Les applications vulnérables monolithiques existent déjà. Ce qui distingue atomicvulns, c'est l'atomisme radical : une application par faille, rapide à lire, rapide à explorer. Vous reliez la cause dans le code → la requête/réponse → l'exploit sans avoir à comprendre d'abord toute une application.
Les dix catégories de l'OWASP Top 10 2021 sont couvertes — 38 atomes au total :
| Catégorie | Atomes |
|---|---|
| A01 — Contrôle d'accès défaillant | idor-numeric-id, path-traversal-basic, idor-uuid-guessable, bola-rest, csrf-basic, open-redirect, mass-assignment |
| A02 — Défaillances cryptographiques | jwt-none-alg, jwt-weak-secret, jwt-key-confusion, crypto-weak-hash, crypto-ecb-mode |
| A03 — Injection | sqli-union-basic, xss-reflected, sqli-blind-boolean, sqli-blind-time, xss-stored, command-injection-basic, ssti-jinja, xss-dom, nosql-injection-mongo, ldap-injection, sqli-second-order |
| A04 — Conception non sécurisée | race-condition-basic |
| A05 — Mauvaise configuration de sécurité | xxe-basic, xxe-blind-oob, debug-enabled, cors-wildcard |
| A06 — Composants vulnérables et obsolètes | cve-demo |
| A07 — Défaillances d'identification et d'authentification | session-fixation, weak-password-reset |
| A08 — Défaillances d'intégrité des logiciels et des données | deserialization-pickle, prototype-pollution, deserialization-node |
| A09 — Défaillances de journalisation et de surveillance de sécurité | logging-failures-demo |
| A10 — Falsification de requête côté serveur (SSRF) | ssrf-basic, , |
Étudiants en pentest et apprenants en AppSec qui connaissent déjà les bases de HTTP et du terminal, utilisent (ou apprennent à utiliser) Burp Suite, et veulent un labo ciblé où chaque exercice est assez court pour être terminé en une seule session. Le contenu est écrit pour quelqu'un qui appliquera cela dans une carrière de pentest — Burp est l'outil principal, l'interface n'est qu'un contexte.
Chaque atome réside dans son propre dossier sous atoms/A0X-<category>/<atom-id>/ et est livré avec un docker-compose.yml. Un script englobant à la racine, ./atom, les pilote :
./atom list # afficher tous les atomes disponibles
./atom up <atom-id> # démarrer la paire vulnérable + corrigée
./atom down <atom-id> # arrêter et supprimer les conteneurs
./atom doctor # vérifier votre configuration locale
Par exemple, pour démarrer le premier atome :
./atom up sqli-union-basic
# vulnerable → http://127.0.0.1:8001
# fixed → http://127.0.0.1:8101
Chaque atome se lie uniquement à 127.0.0.1. Ne jamais modifier cela — ces applications sont intentionnellement défaillantes.
Publié sous la licence MIT. Si vous forkez ce dépôt pour du matériel éducatif, l'attribution est requise.
ssrf-blind-oobssrf-cloud-metadata