
Atomic Web脆弱性ラボ。アプリごとに1つのOWASP脆弱性 — 最小限のFlask + Dockerで、Burp Suiteを使ったハンズオン学習のために意図的に脆弱性を作り込んでいます。
⚠️ 意図的に脆弱です。ローカルでのみ実行してください。インターネットや共有ネットワークに公開しないでください。
他の言語で読む: Português (Brasil)
マイルストーン — v1.0: atomicvulnsは**OWASP Top 10 2021の全10カテゴリ(A01–A10)**を、38個のatomでカバーするようになりました。v1.0リリースを参照してください。
atomicvulnsはアトミックなWebアプリケーションのコレクションです。それぞれが小さく、独立しており、OWASP Top 10の単一の脆弱性に焦点を当てています。各atomには、脆弱なアプリ、修正版、両者の差分にコメントを付けたもの、そしてエクスプロイトのハンズオン解説が含まれています。
これはもう一つのDVWAやJuice Shopでは。モノリシックな脆弱アプリはすでに存在します。atomicvulnsの際立った特徴はです。1つの欠陥につき1つのアプリで、素早く読めて、素早く探索できます。アプリケーション全体をまず理解する必要なく、コードの原因 → リクエスト/レスポンス → エクスプロイトを対応付けることができます。
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 |
HTTPとターミナルの基本をすでに理解しており、Burp Suiteを使用している(または使い方を学んでいる)、そして各演習が一度の座学で終えられるほど短い集中型ラボを求めているペネトレーションテストの学生やAppSec学習者。この教材は、これをペネトレーションテストのキャリアで活用する人のために書かれています。Burpが主要なツールであり、UIは単なるコンテキストです。
各atomはatoms/A0X-<category>/<atom-id>/配下の独自フォルダにあり、docker-compose.ymlが付属しています。ルートのラッパースクリプト./atomがそれらを操作します:
./atom list # 利用可能なすべてのatomを表示
./atom up <atom-id> # 脆弱版と修正版のペアを起動
./atom down <atom-id> # コンテナを停止して削除
./atom doctor # ローカル環境の健全性チェック
例えば、最初の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の下で公開されています。教育資料としてこのリポジトリをフォークする場合は、帰属表示が必要です。