
Атомарные лаборатории по веб-уязвимостям. Одна уязвимость OWASP на приложение — минимальный Flask + Docker, намеренно уязвимые для практического изучения с Burp Suite.
⚠️ Намеренно уязвимо. Запускайте только локально. Никогда не выставляйте в интернет или общую сеть.
Читать на других языках: Português (Brasil)
Веха — v1.0: веб-серия теперь охватывает все десять категорий OWASP Top 10 2021 (A01–A10) в рамках 38 атомов. См. релиз v1.0.
atomicvulns — это коллекция атомарных веб-приложений: каждое из них крошечное, изолированное и сосредоточено на одной уязвимости из OWASP Top 10. Каждый атом поставляется с уязвимым приложением, исправленной версией, прокомментированным диффом между ними и практическим разбором эксплуатации.
Это не очередной DVWA или Juice Shop. Монолитные уязвимые приложения уже существуют. atomicvulns отличается радикальным атомизмом: одно приложение на один недостаток, быстро читать, быстро изучать. Вы прослеживаете причину в коде → запрос/ответ → эксплойт, не разбираясь предварительно во всём приложении целиком.
Веб-серия (Python/Flask) охватывает все десять категорий OWASP Top 10 2021 — всего 38 атомов:
| Категория | Атомы |
|---|---|
| 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 |
API-серия (TypeScript/Express) нацелена на OWASP API Security Top 10 2023. Её первая фаза — Authorization: Object & Function — опубликована: пять атомов в двух категориях, закрывающих оси авторизации на уровне объектов и на уровне функций. Полный упорядоченный план находится в ROADMAP.
| Категория | Атомы |
|---|---|
| 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 |
Студенты, изучающие пентест, и специалисты по AppSec, которые уже знают основы HTTP и терминала, используют (или учатся использовать) Burp Suite и хотят получить сфокусированную лабораторию, где каждое упражнение достаточно короткое, чтобы уложиться в один подход. Материал написан для тех, кто будет применять это в карьере пентестера — Burp является основным инструментом, а UI — лишь контекст.
Каждый атом находится в собственной папке — atoms/web/A0X-<category>/<atom-id>/ для веб-серии, atoms/api/APIX-<category>/<atom-id>/ для API-серии — и поставляется с docker-compose.yml. Корневой скрипт-обёртка ./atom управляет ими:
./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
Например:
./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
Каждый атом привязывается только к 127.0.0.1. Никогда не меняйте это — эти приложения намеренно уязвимы.
Распространяется под MIT License. Если вы форкаете этот репозиторий для образовательных материалов, указание авторства обязательно.