
Laboratori web di vulnerabilità atomici. Una falla OWASP per app — Flask + Docker minimali, volutamente vulnerabili per lo studio pratico con Burp Suite.
⚠️ Intenzionalmente vulnerabile. Eseguire solo in locale. Non esporre mai a Internet o a una rete condivisa.
Leggi questo documento in altre lingue: Português (Brasil)
Traguardo — v1.0: la serie web ora copre tutte e dieci le categorie OWASP Top 10 2021 (A01–A10), attraverso 38 atomi. Vedi la release v1.0.
atomicvulns è una raccolta di applicazioni web atomiche — ognuna minuscola, isolata e incentrata su una singola vulnerabilità dell'OWASP Top 10. Ogni atomo include l'app vulnerabile, la versione corretta, un diff commentato tra le due e una guida pratica allo sfruttamento.
Questa non è l'ennesima DVWA o Juice Shop. Le app vulnerabili monolitiche esistono già. Ciò che distingue atomicvulns è l'atomismo radicale: un'app per ogni difetto, veloce da leggere, veloce da esplorare. Mappi la causa nel codice → richiesta/risposta → exploit senza dover prima comprendere un'intera applicazione.
La serie web (Python/Flask) copre tutte e dieci le categorie OWASP Top 10 2021 — 38 atomi in totale:
| Categoria | Atomi |
|---|---|
| A01 — Broken Access Control | idor-numeric-id, path-traversal-basic, idor-uuid-guessable, bola-rest, csrf-basic, open-redirect, mass-assignment |
| A02 — Cryptographic Failures | 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 — Insecure Design | race-condition-basic |
| A05 — Security Misconfiguration | xxe-basic, xxe-blind-oob, debug-enabled, cors-wildcard |
| A06 — Vulnerable and Outdated Components | cve-demo |
| A07 — Identification and Authentication Failures | session-fixation, weak-password-reset |
| A08 — Software and Data Integrity Failures | deserialization-pickle, prototype-pollution, deserialization-node |
| A09 — Security Logging and Monitoring Failures | logging-failures-demo |
| A10 — Server-Side Request Forgery (SSRF) | ssrf-basic, ssrf-blind-oob, ssrf-cloud-metadata |
La serie API (TypeScript/Express) è dedicata all'OWASP API Security Top 10 2023. La sua prima fase — Authorization: Object & Function — è pubblicata: cinque atomi in due categorie, che coprono gli assi di autorizzazione a livello di oggetto e di funzione. Il piano completo e ordinato è disponibile nella sua ROADMAP.
| Categoria | Atomi |
|---|---|
| API1 — Broken Object Level Authorization | bola-sequential-id, bola-uuid-leaked, bola-nested-resource |
| API5 — Broken Function Level Authorization | bfla-admin-function, bfla-method-based |
Studenti di pentest e apprendisti di AppSec che conoscono già le basi di HTTP e del terminale, usano (o stanno imparando a usare) Burp Suite e desiderano un laboratorio mirato in cui ogni esercizio sia abbastanza breve da completare in una sola sessione. Il materiale è scritto per chi applicherà queste conoscenze in una carriera nel pentest — Burp è lo strumento principale, l'interfaccia utente è solo contesto.
Ogni atom risiede nella propria cartella — atoms/web/A0X-<category>/<atom-id>/ per la serie web, atoms/api/APIX-<category>/<atom-id>/ per la serie API — e viene distribuito con un docker-compose.yml. Uno script wrapper alla radice, ./atom, li gestisce:
./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
Ad esempio:
./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
Ogni atom si lega solo a 127.0.0.1. Non modificarlo mai — queste app sono intenzionalmente vulnerabili.
Rilasciato sotto la Licenza MIT. Se esegui il fork di questo repository per materiale didattico, è richiesta l'attribuzione.