
Atomare Web-Sicherheitslücken-Labore. Eine OWASP-Schwachstelle pro App — minimales Flask + Docker, absichtlich fehlerhaft für praktisches Lernen mit Burp Suite.
⚠️ Absichtlich verwundbar. Nur lokal ausführen. Niemals dem Internet oder einem gemeinsam genutzten Netzwerk aussetzen.
Lies dies in anderen Sprachen: Português (Brasil)
Meilenstein — v1.0: Die Web-Serie deckt jetzt alle zehn OWASP-Top-10-2021-Kategorien (A01–A10) ab, verteilt auf 38 Atome. Siehe das v1.0-Release.
atomicvulns ist eine Sammlung atomarer Webanwendungen — jede einzelne winzig, isoliert und auf eine einzige Schwachstelle aus den OWASP Top 10 fokussiert. Jedes Atom wird mit der verwundbaren App, der korrigierten Version, einem kommentierten Diff zwischen beiden und einer praktischen Schritt-für-Schritt-Anleitung zum Exploit ausgeliefert.
Dies ist nicht ein weiteres DVWA oder Juice Shop. Monolithische verwundbare Apps gibt es bereits. Was atomicvulns auszeichnet, ist der radikale Atomismus: eine App pro Schwachstelle, schnell zu lesen, schnell zu erkunden. Du bildest die Ursache im Code → Request/Response → Exploit ab, ohne zuerst eine gesamte Anwendung verstehen zu müssen.
Die Web-Serie (Python/Flask) deckt alle zehn OWASP-Top-10-2021-Kategorien ab — insgesamt 38 Atome:
| Kategorie | Atome |
|---|---|
| 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 |
Die API-Serie (TypeScript/Express) zielt auf die OWASP API Security Top 10 2023 ab. Ihre erste Phase — Authorization: Object & Function — ist veröffentlicht: fünf Atome in zwei Kategorien, die die Achsen der objektbezogenen und funktionsbezogenen Autorisierung abdecken. Der vollständige geordnete Plan befindet sich in der ROADMAP.
| Kategorie | Atome |
|---|---|
| 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 |
Pentest-Studierende und AppSec-Lernende, die bereits die Grundlagen von HTTP und dem Terminal kennen, Burp Suite verwenden (oder gerade lernen, es zu verwenden) und ein fokussiertes Labor wünschen, in dem jede Übung kurz genug ist, um sie in einer Sitzung abzuschließen. Das Material ist für jemanden geschrieben, der dies in einer Pentest-Karriere anwenden wird — Burp ist das primäre Werkzeug, die UI ist nur Kontext.
Jedes Atom liegt in einem eigenen Ordner — atoms/web/A0X-<category>/<atom-id>/ für die Web-Serie, atoms/api/APIX-<category>/<atom-id>/ für die API-Serie — und wird mit einer docker-compose.yml ausgeliefert. Ein Wrapper-Skript im Stammverzeichnis, ./atom, steuert sie:
./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
Zum Beispiel:
./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
Jedes Atom bindet ausschließlich an 127.0.0.1. Ändern Sie das niemals — diese Apps sind absichtlich fehlerhaft.
Veröffentlicht unter der MIT-Lizenz. Wenn Sie dieses Repository für Lehrmaterial forken, ist eine Namensnennung erforderlich.