
원자적 웹 취약점 실습 환경. 앱당 하나의 OWASP 취약점 — Burp Suite를 활용한 실습 학습을 위해 의도적으로 취약하게 만든 최소한의 Flask + Docker.
⚠️ 의도적으로 취약하게 설계되었습니다. 로컬에서만 실행하세요. 인터넷이나 공유 네트워크에 절대 노출하지 마세요.
다른 언어로 읽기: Português (Brasil)
마일스톤 — v1.0: atomicvulns는 이제 **OWASP Top 10 2021의 모든 10개 카테고리(A01–A10)**를 38개의 atom으로 다룹니다. v1.0 릴리스를 참고하세요.
atomicvulns는 원자적 웹 애플리케이션 모음입니다. 각 애플리케이션은 매우 작고 독립적이며, OWASP Top 10의 단일 취약점에 집중합니다. 모든 atom에는 취약한 앱, 수정된 버전, 두 버전 간의 주석이 달린 diff, 그리고 익스플로잇에 대한 실습 안내가 포함되어 있습니다.
이것은 또 다른 DVWA나 Juice Shop이 아닙니다. 모놀리식 취약 앱은 이미 존재합니다. atomicvulns를 차별화하는 것은 급진적 원자주의입니다. 결함당 하나의 앱, 빠르게 읽고, 빠르게 탐색할 수 있습니다. 전체 애플리케이션을 먼저 이해할 필요 없이 코드 원인 → 요청/응답 → 익스플로잇을 매핑할 수 있습니다.
OWASP Top 10 2021의 모든 10개 카테고리를 다루며, 총 38개의 atom이 있습니다:
| 카테고리 | Atom |
|---|---|
| A01 — 취약한 접근 제어 | idor-numeric-id, path-traversal-basic, idor-uuid-guessable, bola-rest, csrf-basic, open-redirect, mass-assignment |
| A02 — 암호화 실패 | jwt-none-alg, jwt-weak-secret, jwt-key-confusion, crypto-weak-hash, crypto-ecb-mode |
| A03 — 인젝션 | 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 — 안전하지 않은 설계 | race-condition-basic |
| A05 — 보안 설정 오류 | xxe-basic, xxe-blind-oob, debug-enabled, cors-wildcard |
| A06 — 취약하고 오래된 구성 요소 | cve-demo |
| A07 — 식별 및 인증 실패 | session-fixation, weak-password-reset |
| A08 — 소프트웨어 및 데이터 무결성 실패 | deserialization-pickle, prototype-pollution, deserialization-node |
| A09 — 보안 로깅 및 모니터링 실패 | logging-failures-demo |
| A10 — 서버 측 요청 위조 (SSRF) | ssrf-basic, ssrf-blind-oob, ssrf-cloud-metadata |
HTTP와 터미널의 기본을 이미 알고, Burp Suite를 사용하거나 배우고 있으며, 각 실습이 한 번에 끝낼 수 있을 만큼 짧은 집중형 랩을 원하는 펜테스트 학생 및 AppSec 학습자. 이 자료는 펜테스트 커리어에서 이를 적용할 사람을 위해 작성되었습니다. Burp가 주요 도구이며, UI는 단지 맥락일 뿐입니다.
각 atom은 atoms/A0X-<category>/<atom-id>/ 아래 자체 폴더에 있으며 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을 시작하려면:
./atom up sqli-union-basic
# vulnerable → http://127.0.0.1:8001
# fixed → http://127.0.0.1:8101
모든 atom은 127.0.0.1에만 바인딩됩니다. 절대 변경하지 마세요 — 이 앱들은 의도적으로 손상되어 있습니다.
MIT License에 따라 배포됩니다. 교육 자료로 이 저장소를 포크하는 경우 출처 표기가 필요합니다.