
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 : la série web 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 atomiques — chacune minuscule, isolée et centrée sur une seule vulnérabilité 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 autre 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 cartographiez la cause dans le code → la requête/réponse → l'exploit sans avoir à comprendre d'abord une application entière.
La série web (Python/Flask) couvre les dix catégories de l'OWASP Top 10 2021 — 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, ssrf-blind-oob, ssrf-cloud-metadata |
La série API (TypeScript/Express) cible l'OWASP API Security Top 10 2023. Sa première phase — Autorisation : Objet & Fonction — est publiée : cinq atomes répartis sur deux catégories, couvrant les axes d'autorisation au niveau objet et au niveau fonction. Le plan complet et ordonné se trouve dans sa ROADMAP.
| Catégorie | Atomes |
|---|---|
| API1 — Autorisation défaillante au niveau objet | bola-sequential-id, bola-uuid-leaked, bola-nested-resource |
| API5 — Autorisation défaillante au niveau fonction | bfla-admin-function, bfla-method-based |
É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 souhaitent un lab 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 en pentest — Burp est l'outil principal, l'interface n'est qu'un contexte.
Chaque atome réside dans son propre dossier — atoms/web/A0X-<category>/<atom-id>/ pour la série web, atoms/api/APIX-<category>/<atom-id>/ pour la série API — et est livré avec un docker-compose.yml. Un script d'enveloppe racine, ./atom, les pilote :
./atom list # show all available atoms
./atom up <atom-id> # start the vulnerable + fixed pair
./atom down <atom-id> # stop and remove containers
./atom doctor # sanity-check your local setup
Par exemple :
./atom up sqli-union-basic # web series
# vulnerable → http://127.0.0.1:8001
# fixed → http://127.0.0.1:8101
./atom up bola-sequential-id # API series
# vulnerable → http://127.0.0.1:8201
# fixed → http://127.0.0.1:8301
Chaque atome se lie uniquement à 127.0.0.1. Ne changez jamais cela — ces applications sont intentionnellement vulnérables.
Publié sous la licence MIT. Si vous forkez ce dépôt pour du matériel pédagogique, l'attribution est requise.