
원자적 웹 취약점 실습 환경. 앱당 하나의 OWASP 취약점 — Burp Suite를 활용한 실습 학습을 위해 의도적으로 취약하게 만든 최소한의 Flask + Docker.
⚠️ 의도적으로 취약합니다. 로컬에서만 실행하세요. 인터넷이나 공유 네트워크에 절대 노출하지 마세요.
다른 언어로 읽기: Português (Brasil)
마일스톤 — v1.0: 웹 시리즈가 이제 38개의 atom에 걸쳐 **OWASP Top 10 2021의 모든 10개 카테고리(A01–A10)**를 다룹니다. v1.0 릴리스를 참고하세요.
atomicvulns는 원자적 웹 애플리케이션 모음입니다. 각 애플리케이션은 작고 격리되어 있으며 OWASP Top 10의 단일 취약점 하나에 집중합니다. 모든 atom에는 취약한 앱, 수정된 버전, 두 버전 간의 주석이 달린 diff, 그리고 익스플로잇에 대한 실습형 워크스루가 함께 제공됩니다.
이것은 또 다른 DVWA나 Juice Shop이 아닙니다. 모놀리식 취약 앱은 이미 존재합니다. atomicvulns를 차별화하는 것은 급진적 원자주의입니다. 결함 하나당 앱 하나, 읽기 빠르고 탐색하기 빠릅니다. 전체 애플리케이션을 먼저 이해할 필요 없이 코드 원인 → 요청/응답 → 익스플로잇을 매핑할 수 있습니다.
웹 시리즈(Python/Flask)는 OWASP Top 10 2021의 모든 10개 카테고리를 다루며, 총 38개의 atom으로 구성됩니다:
| 카테고리 | Atoms |
|---|---|
| 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 |
API 시리즈(TypeScript/Express)는 OWASP API Security Top 10 2023을 대상으로 합니다. 첫 번째 단계인 권한 부여: 객체 및 함수가 게시되었습니다. 두 카테고리에 걸친 5개의 atom으로, 객체 수준 및 함수 수준 권한 부여 축을 다룹니다. 전체 순서 계획은 ROADMAP에 있습니다.
| 카테고리 | Atoms |
|---|---|
| API1 — 취약한 객체 수준 권한 부여 | bola-sequential-id, bola-uuid-leaked, bola-nested-resource |
| API5 — 취약한 함수 수준 권한 부여 | bfla-admin-function, bfla-method-based |
HTTP와 터미널의 기본을 이미 알고, Burp Suite를 사용하거나(또는 배우고 있으며), 각 실습이 한 번에 끝낼 수 있을 만큼 짧은 집중형 랩을 원하는 펜테스트 학생 및 AppSec 학습자. 이 자료는 펜테스트 커리어에서 이를 활용할 사람을 위해 작성되었습니다. Burp가 주요 도구이며, UI는 단지 맥락일 뿐입니다.
각 atom은 자체 폴더에 위치합니다 — 웹 시리즈의 경우 atoms/web/A0X-<category>/<atom-id>/, API 시리즈의 경우 atoms/api/APIX-<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 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
모든 atom은 127.0.0.1에만 바인딩됩니다. 절대 이를 변경하지 마세요 — 이 앱들은 의도적으로 취약하게 만들어졌습니다.
MIT License에 따라 배포됩니다. 교육 자료로 이 저장소를 포크하는 경우 출처 표기가 필요합니다.