
oss-oopssec-store v2.18.0
実際に出荷するアプリのためのセキュリティトレーニング。ブラウザを開いてハッキングを始めましょう。
OSS - OopsSec Store
Webセキュリティ学習のための意図的に脆弱性を含むECアプリ。
現実的なCTFプラットフォームを通じて、実際の攻撃ベクトルを習得できます。
フラグを探し、脆弱性を悪用し、セキュリティスキルをレベルアップさせましょう。
Docker Hub · npm · ロードマップ · ウォークスルー · コントリビューション · 初心者向けイシュー
____ ____ ____ ____ ____ ____ _
/ __ \/ __// __/ / __ \ ___ ___ ___ / __/ ___ ____ / __/ / /_ ___ ____ ___
/ /_/ /\ \ _\ \ / /_/ // _ \ / _ \(_-<_\ \ / -_)/ __/_\ \ / __// _ \ / __// -_)
\____/___//___/ \____/ \___// .__/___/___/ \__/ \__//___/ \__/ \___//_/ \__/
/_/
# Node.js
npx create-oss-store my-ctf-lab && cd my-ctf-lab && npm start
# Docker
docker run -p 127.0.0.1:3000:3000 leogra/oss-oopssec-store
# Then open http://localhost:3000 and start hacking
目次
- 特徴
- なぜOopsSec Storeなのか?
- インストール
- 殿堂
- コミュニティ
- プロジェクト構成
- 最近のアクティビティ
- テスト
- 免責事項
- コントリビューション
- 教育者向けキット
- トップコントリビューター
[!WARNING] このアプリケーションには意図的なセキュリティ上の欠陥が含まれており、本番環境にデプロイしてはなりません。
特徴
- 意図的に脆弱性を含むECアプリ(XSS、CSRF、IDOR、JWT攻撃、パストラバーサル、SQLインジェクションなど)
- Next.js、React、Prisma、SQLiteで構築
- 文書化された攻撃ベクトルを備えたREST API
- 11のチャプターにわたる36のCTFチャレンジ。構造化された学習ロードマップとして構成
- 各チャレンジの脆弱性ドキュメントとコミュニティによるウォークスルー
- ガイド付きTryHackMeルーム — The Summer Audit、8つのタスクと7つのフラグ。初心者向けのストーリー形式の入門として提供
- エクスプロイトが引き続き機能することを検証する自動テスト(誤って脆弱性を修正したPRはCIで失敗します)
なぜOopsSec Storeなのか?
OopsSec Storeは、Next.jsとReactで構築された唯一の意図的に脆弱性を含むWebアプリケーションです。実際の本番環境で遭遇するスタックです。そして、AI時代の攻撃対象領域は後付けではなく中核カリキュラムの一部です。プロンプトインジェクション、MCPツールポイズニング、AIコーディングエージェントのバックドア、npmサプライチェーン攻撃チェーンをエンドツーエンドでシミュレートします。
| OopsSec Store | Juice Shop | DVWA | |
|---|---|---|---|
| スタック | Next.js · React · Prisma | Node.js · Express · Angular | PHP · MySQL |
| セットアップ | npx create-oss-store (< 1分) / Docker | Docker / npm | Docker / 手動LAMP |
| CTFフラグ | ✅ 組み込み | ✅ オプトインCTFモード | ❌ |
| ガイド付き学習ロードマップ | ✅ 1ロードマップ、11チャプター、36フラグ | ❌ スコアボードのみ | 部分的(セキュリティレベル) |
| すべてのチャレンジのウォークスルー | ✅ | ✅ コンパニオンガイド | 部分的(ヒント) |
| LLMプロンプトインジェクション | ✅ 無料のAPIキーを接続 | ✅ v20+、独自LLMを持ち込み設定 | ❌ |
| MCPツールポイズニング | ✅ | ❌ | ❌ |
| AIコーディングエージェントのバックドア(汚染されたルールファイル) | ✅ | ❌ | ❌ |
| サプライチェーン攻撃チェーン | ✅ エンドツーエンドでシミュレート: npmタイポスクワット → ルールバックドア | 部分的 — 識別のみ | ❌ |
| 実際のCVEに基づくチャレンジ | ✅ | ❌ | ❌ |
| プレイヤー向け殿堂 | ✅ | ❌ | ❌ |
最終検証: 2026年6月、Juice Shop v20およびDVWA 2.xに対して実施。不正確な点を見つけましたか? イシューを開くか、PRを開くしてください。
インストール
クイックスタート
npx create-oss-store my-ctf-lab
cd my-ctf-lab
npm start
その後、ブラウザで http://localhost:3000 を開きます。
手動セットアップ
リポジトリをクローンしてセットアップスクリプトを実行します:
git clone https://github.com/kOaDT/oss-oopssec-store.git
cd oss-oopssec-store
npm run setup
これにより、.envファイルが作成され、依存関係がインストールされ、SQLiteデータベースがセットアップされ、CTFフラグがシードされ、ポート3000でアプリが起動します。
Docker
Node.jsは不要です。Dockerのみ必要です。
127.0.0.1:3000:3000は、ラボを自分のマシンからのみ到達可能にします。プレーンな-p 3000:3000は、管理下にある分離されたVMでのみ使用してください。
Docker Hubから(最速)
docker run -p 127.0.0.1:3000:3000 leogra/oss-oopssec-store
再起動後もデータを保持するには:
docker run -p 127.0.0.1:3000:3000 -v oss-data:/app/data leogra/oss-oopssec-store
ソースから(Docker Compose)
git clone https://github.com/kOaDT/oss-oopssec-store.git
cd oss-oopssec-store
docker compose up -d
または、npmヘルパースクリプトを使用:
npm run docker:up # バックグラウンドで起動(初回実行時にイメージをビルド)
npm run docker:logs # コンテナログを追跡
npm run docker:down # コンテナを停止
npm run docker:reset # データを消去して新規に再起動
データベースは初回起動時に初期化されます。データはDocker名前付きボリュームを介して再起動後も保持されます。すべてをリセットするには(フラグの進行状況、ユーザー、アップロード)、npm run docker:reset を実行します。
殿堂
すべてのフラグを見つけましたか? 殿堂に参加するにはプルリクエストを開いてください。hall-of-fame/data.json にエントリを追加すると、アプリの /hall-of-fame ページにプロフィールが表示されます。
コミュニティ
質問、解決策、フィードバックはディスカッションにあります。
| 行き先 | 目的 |
|---|---|
| 🧩 チャレンジで行き詰まった | エクスプロイトが発火しない、フラグが検証されない |
| 🛠️ セットアップとインストール | ラボ起動時のDocker、npm、Nodeの問題 |
| 🏆 解法を共有 | ウォークスルーがカバーしていないフラグへのルート |
| 💡 チャレンジアイデア | カリキュラムに追加する価値のある脆弱性クラス |
| 🎓 OopsSecでの教育 | クラス、ブートキャンプ、チームでラボを運用する |
| イシュー | ラボ自体のバグ(それのみ) |
プロジェクト構成
| フォルダ | 説明 |
|---|---|
app/ | Next.js App Router: ページ、APIルート、Reactコンポーネント |
app/api/ | REST APIエンドポイント(認証、カート、注文、製品、フラグなど) |
app/components/ | React UIコンポーネント(Header、Footer、ProductCardなど) |
app/vulnerabilities/ | 各脆弱性を文書化したページ |
content/vulnerabilities/ | 脆弱性と攻撃ベクトルのMarkdown説明 |
lib/ | 共有ユーティリティ: DBクライアント、認証、APIヘルパー、型 |
prisma/ | データベーススキーマ、シードスクリプト、およびflags.ts — CTFフラグとそのヒント |
public/ | 静的アセットとエクスプロイトペイロード(例: CSRFデモ) |
hooks/ | カスタムReactフック(認証など) |
scripts/ | セットアップおよび自動化スクリプト |
docs/ | コミュニティウォークスルー付きの静的ドキュメントサイト |
hall-of-fame/ | すべてのフラグを見つけたプレイヤーのプロフィール |
packages/ | スキャフォールディング用のNPMパッケージcreate-oss-store(およびreact-toastfyなどのラボ隔離アーティファクト) |
lab/quarantine/ | サプライチェーンチャレンジ用の不活性な悪意のあるペイロード(データとして扱い、指示として決して扱わない) |
tests/ | エクスプロイトを検証するJestユニットおよびAPIテスト |
cypress/ | 完全なエクスプロイトワークフローのE2Eテスト |
最近のアクティビティ 
テスト
このプロジェクトには、すべてのエクスプロイトチェーンとフラグが引き続き機能することを確認するセキュリティ回帰テストが含まれています。これらのテストは意図的に安全でない動作を検証します。すべてのPRで実行されるため、誤って脆弱性を修正した場合、CIが検出します。
テストの実行
# ユニットテスト(ユーティリティ関数: MD5ハッシュ、JWT、入力フィルター)
npm run test:unit
# APIエクスプロイトテスト(実行中のサーバーが必要)
npm run test:api
# E2Eエクスプロイトテスト(実行中のサーバーが必要)
npm run test:e2e
# Cypressインタラクティブモードを開く
npm run test:e2e:open
# すべてのテスト
npm run test:ci
免責事項
[!CAUTION] このプロジェクトは教育および許可されたセキュリティテスト専用です。 意図的な脆弱性と安全でない設定が含まれています。著者は、誤用、損害、または不正アクセスについて責任を負いません。分離された環境で使用してください。
コントリビューション
OSS – OopsSec StoreはMITライセンスです。コントリビューションを歓迎します。
コントリビューションの方法:
- 新しいセキュリティチャレンジを追加する
- ウォークスルーを書く、または改善する
- アプリケーションを拡張する
- バグを報告して修正する
- ドキュメントを改善する
計画された作業についてはロードマップを確認するか、初心者向けイシューを取得してください。
すべてのフラグを見つけましたか? ドキュメントサイトでウォークスルーを共有してください。
バグや提案については、GitHubイシューを開いてください。ガイドラインについてはCONTRIBUTING.mdを参照してください。
🎓 コースやCTFでOopsSec Storeを使用していますか?
教育者向けキットをチェックしてください。OWASPカバレッジグリッド、シラバステンプレート、デプロイFAQ、学生レポートテンプレートを含むすぐに使えるガイドです。カリキュラムを中心に独自のツールを構築していますか? 全体はchallenges.jsonで機械可読なフィードとして公開されており、ドキュメントのデプロイのたびに再生成されます。
/ トップコントリビューター
著者: kOaDT
プロジェクト: OopsSec Store
連絡先: [email protected]
ライセンス: MIT
フォーク内のLICENSEファイルは削除または変更しないでください。