Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/commando-x/vuln-bank
コード分析ウェブセキュリティペネトレーションテストDevSecOps学習と教育APIセキュリティAIセキュリティラボと実践ラボと実践 第14位
GitHubcommando-x/vuln-bank

vuln-bank

Webアプリケーション、API、AI/LLMのセキュリティテスト、セキュアコードレビュー、DevSecOps統合を現実的なハンズオンラボで実践するための、意図的に脆弱性を持つ銀行プラットフォーム。

リポジトリを見るウェブサイト
9573486910日前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Vulnerable Bank Application 🏦

Web、API、LLMを対象としたアプリケーションセキュリティテスト、セキュアコードレビュー、CI/CDパイプラインへのセキュリティ実装を練習するための、意図的に脆弱なWebアプリケーションです。

⚠️ 警告:このアプリケーションは意図的に脆弱性を含んでおり、教育目的でのみ隔離された環境で使用してください。

image

概要

このプロジェクトは、複数のセキュリティ脆弱性を組み込んだシンプルなバンキングアプリケーションです。セキュリティエンジニア、開発者、インターン、QAアナリスト、DevSecOps実践者が以下について学ぶために設計されています:

  • 一般的なWebアプリケーションおよびAPIの脆弱性
  • AI/LLMの脆弱性
  • セキュアコーディングの実践
  • セキュリティテストの自動化
  • DevSecOpsの実装

機能と脆弱性

コアバンキング機能

  • 🔐 ユーザー認証と認可
  • 💰 アカウント残高管理
  • 💸 送金
  • 📝 ローン申請
  • 👤 プロフィール画像アップロード
  • 📊 取引履歴
  • 📈 取引分析ダッシュボード(GraphQLベース)
  • 🔑 パスワードリセットシステム(3桁のPIN)
  • 💳 多通貨バーチャルカード管理
  • 💱 メインのUSD残高からのバーチャルカードへのチャージ(内蔵の通貨換算機能付き:USD、GBP、NGN、JPY、EUR、QAR、BTC、ETH)
  • 🛒 意図的に脆弱なeコマース/デモ統合のための公開マーチャント決済API
  • 📱 請求書支払いシステム
  • 🤖 AIカスタマーサポートエージェント(DeepSeek APIを使用した実LLM / モックモード)

image

実装された脆弱性

  1. 認証と認可

    • ログインにおけるSQLインジェクション
    • 脆弱なJWT実装
    • 壊れたオブジェクトレベル認可(BOLA)
    • 壊れたオブジェクトプロパティレベル認可(BOPLA)
    • マスアサインメントと過剰なデータ露出
    • 脆弱なパスワードリセットメカニズム(3桁のPIN)
    • localStorageに保存されるトークン
    • サーバーサイドのトークン無効化なし
    • セッションの有効期限なし
  2. データセキュリティ

    • 情報開示
    • 機密データの露出
    • 平文パスワードの保存
    • SQLインジェクションポイント
    • デバッグ情報の露出
    • 詳細なエラーメッセージの露出
  3. 取引の脆弱性

    • 金額の検証なし
    • マイナス金額の送金が可能
    • 取引制限なし
    • 送金と残高更新における競合状態
    • 取引履歴の情報開示
    • 受取人アカウントの検証なし
  4. ファイル操作

    • 制限なしファイルアップロード
    • パストラバーサルの脆弱性
    • ファイルタイプの検証なし
    • ディレクトリトラバーサル
    • ファイルサイズ制限なし
    • 安全でないファイル命名
    • URLベースのプロフィール画像インポートによるServer-Side Request Forgery(SSRF)
  5. セッション管理

    • トークンの脆弱性
    • セッションの有効期限なし
    • 脆弱なシークレットキー
    • URLでのトークン露出
  6. クライアントおよびサーバーサイドの欠陥

    • クロスサイトスクリプティング(XSS)
    • クロスサイトリクエストフォージェリ(CSRF)
    • 安全でない直接オブジェクト参照
    • レート制限なし
  7. バーチャルカードの脆弱性

    • カード限度額更新におけるマスアサインメント
    • カードチャージの為替レート処理におけるマスアサインメント
    • 予測可能なカード番号生成
    • カード情報の平文保存
    • カード限度額の検証なし
    • カード操作におけるBOLA
    • 残高更新における競合状態
    • カード情報の情報開示
    • 取引検証なし
    • カード利用状況の監視不足
    • カードチャージ時のクライアント制御による通貨換算
  8. 請求書支払いの脆弱性

    • 支払い金額の検証なし
    • 請求元(biller)クエリにおけるSQLインジェクション
    • 支払い履歴における情報開示
    • 予測可能な参照番号
    • 取引履歴の露出
    • 請求元(biller)アカウントの検証なし
    • 支払い処理における競合状態
    • 支払い履歴アクセスにおけるBOLA
    • 支払い制限の欠如
  9. マーチャント決済APIの脆弱性

    • 平文のマーチャントパスワードとAPIキー
    • 登録およびログイン応答で返されるAPIキー
    • マーチャント決済APIが受け入れる生のカード番号/CVV
    • SQLインジェクションが発生しやすいマーチャントおよびカードの検索
    • 冪等性、リプレイ保護、支払い制限、レート制限の欠如
    • マーチャント決済検索におけるオブジェクトレベル認可の欠陥
    • 詳細な支払い拒否理由とデバッグデータの露出
    • 予測可能な認証コード生成
  10. AIカスタマーサポートの脆弱性

    • プロンプトインジェクション(CWE-77)
    • AIベースの情報開示(CWE-200)
    • AIコンテキストにおける壊れた認可(CWE-862)
    • AIシステム情報の露出(CWE-209)
    • AIプロンプトに対する不十分な入力検証(CWE-20)
    • AI操作による直接的なデータベースアクセス
    • AIロールオーバーライド攻撃
    • コンテキストインジェクションの脆弱性
    • AI支援による不正なデータアクセス
    • 露出したAIシステムプロンプトと設定
  11. GraphQLの脆弱性

    • 取引分析エンドポイントで有効化されたスキーマイントロスペクション
    • /graphql に継承される脆弱なJWTベース認証
    • GraphQLリゾルバのクエリ構築におけるSQLインジェクション
    • GraphQLの深さ/複雑さの制御の欠如
    • 生のGraphQLエラー開示
    • 管理者スコープのクエリによる取引分析の露出

インストールとセットアップ 🚀

前提条件

  • DockerとDocker Compose(コンテナ環境でのセットアップ用)
  • PostgreSQL(ローカル実行の場合)
  • Python 3.9以上(ローカルセットアップ用)
  • Git

オプション1:Dockerを使用(推奨)

Docker Composeを使用(最も簡単)

  1. リポジトリをクローンします:
git clone https://github.com/Commando-X/vuln-bank.git
cd vuln-bank
  1. アプリケーションを起動します:
docker-compose up -d --build

アプリケーションは http://localhost:5000 で利用可能になります。

コンテナのリカバリ動作

Dockerセットアップには、手動のSSH介入なしでアプリが復旧できるようにするための運用上のセーフガードがいくつか含まれています:

  • web と db は restart: unless-stopped を使用するため、プロセスが終了した場合にDockerが自動的に再起動します。
  • db はヘルスチェックを公開し、web は起動前にPostgresの準備完了を待ちます。
  • web は debug=True でFlask開発サーバーを実行します(意図的。Werkzeugデバッガーを対象としたトレーニングシナリオを維持するため)。
  • web は GET /healthz を公開し、コンテナがアプリとデータベースが実際に使用可能かどうかを報告できるようにします。

これにより、意図的に脆弱なアプリケーションの動作を維持しながら、コンテナのライフサイクルをより堅牢にします。

ローカルスモークテスト

実際のコンテナを起動せずに、ローカルのランタイム構成を検証できます:

python3 -m unittest discover -s tests -v

これにより /healthz エンドポイントの動作をチェックし、start.sh がデータベースを待ってからFlaskアプリを起動することを検証します。 現在のPython環境にFlaskアプリの依存関係がインストールされていない場合は、/healthz ルートのテストはスキップされ、起動スクリプトのスモークテストは引き続き実行されます。

Dockerのみを使用

  1. リポジトリをクローンします:
git clone https://github.com/Commando-X/vuln-bank.git
cd vuln-bank
  1. Dockerイメージをビルドします:
docker build -t vuln-bank .
  1. コンテナを実行します:
docker run -p 5000:5000 vuln-bank

オプション2:ローカルインストール

前提条件

  • Python 3.9以上
  • PostgreSQLがインストールされ実行中であること
  • pip(Pythonパッケージマネージャー)
  • Git

手順

  1. リポジトリをクローンします:
git clone https://github.com/Commando-X/vuln-bank.git
cd vuln-bank
  1. 仮想環境を作成して有効化します(推奨):
# Windowsの場合
python -m venv venv
venv\Scripts\activate

# Linux/Macの場合
python3 -m venv venv
source venv/bin/activate
  1. 必要なパッケージをインストールします:
pip install -r requirements.txt
  1. 必要なディレクトリを作成します:
# Windowsの場合
mkdir static\uploads

# Linux/Macの場合
mkdir -p static/uploads
  1. .envファイルを変更します:

    • ローカルのPostgreSQL接続用に、.envを開いてDB_HOSTを 'db' から 'localhost' に変更します
  2. アプリケーションを実行します:

# Windowsの場合
python app.py

# Linux/Macの場合
python3 app.py

環境変数

.env ファイルは、教育目的での簡単なセットアップを促進するために、このリポジトリに意図的に含まれています。実際のアプリケーションでは、.env ファイルをバージョン管理にコミットしてはいけません。

現在の環境変数:

DB_NAME=vulnerable_bank
DB_USER=postgres
DB_PASSWORD=postgres
DB_HOST=db  # ローカルインストールの場合は 'localhost' に変更
DB_PORT=5432

データベースセットアップ

このアプリケーションはPostgreSQLを使用します。アプリケーションを初めて実行するとデータベースが自動的に初期化され、以下を作成します:

  • Usersテーブル
  • Transactionsテーブル
  • Loansテーブル

アプリケーションへのアクセス

  • メインアプリケーション:http://localhost:5000
  • APIドキュメント:http://localhost:5000/api/docs
  • GraphQL分析エンドポイント:http://localhost:5000/graphql
  • 管理者分析ビュー:管理者ユーザーとしてログイン後、管理者ダッシュボードから利用可能

よくある問題と解決策

Windows

  1. "python not found" エラーが発生する場合:

    • PythonがシステムのPATHに追加されていることを確認してください
    • python の代わりに py を使用してみてください
  2. uploadsフォルダの権限の問題:

    • コマンドプロンプトを管理者として実行してください
    • プロジェクトディレクトリに書き込み権限があることを確認してください

Linux/Mac

  1. ディレクトリ作成時にPermission deniedエラーが発生する場合:

    sudo mkdir -p static/uploads
    sudo chown -R $USER:$USER static/uploads
    
  2. ポート5000がすでに使用されている場合:

    # ポート5000を使用しているプロセスを終了
    sudo lsof -i:5000
    sudo kill <PID>
    

PostgreSQLの問題

  1. 接続が拒否された場合:

    • PostgreSQLが実行されていることを確認してください
    • .env ファイルの認証情報を確認してください
    • PostgreSQLポートがブロックされていないことを確認してください
  2. 認証に失敗した場合:

    • .env の DB_PASSWORD がPostgresユーザーのパスワードと一致していることを確認してください。

    • または、postgres ユーザーを次のコマンドでリセットします:

      ALTER ROLE postgres WITH PASSWORD 'your_password';
      
  3. インストールエラーが発生した場合:

    • PostgreSQLのエラーが発生した場合は、Chocolateyでインストールし、パスワードを postgres に設定します:

      choco install postgresql --version=17.4.0 -y
      # 生成されたパスワードを使用するか、すぐにリセットします:
      & 'C:\Program Files\PostgreSQL\17\bin\psql.exe' -U postgres -c "ALTER ROLE postgres WITH PASSWORD 'postgres';"
      
  4. データベースが存在しない場合:

    • 手動で作成します:

      CREATE DATABASE vulnerable_bank;
      
    • または、次のコマンドを実行します:

      createdb -U postgres -h localhost vulnerable_bank
      

テストガイド 🎯

認証テスト

  1. ログインにおけるSQLインジェクション
  2. 脆弱なパスワードリセット(3桁PINのブルートフォース)
  3. JWTトークンの改ざん
  4. ユーザー名の列挙
  5. トークン保存の脆弱性

認可テスト

  1. 口座番号を介して他のユーザーの取引履歴にアクセス
  2. 悪意のあるファイルをアップロード
  3. 管理者パネルにアクセス
  4. JWTクレームを改ざん
  5. BOPLAを悪用(過剰なデータ露出とマスアサインメント)
  6. 登録を通じた権限昇格

取引テスト

  1. マイナス金額の送金を試行
  2. 送金における競合状態
  3. 取引履歴へのアクセス
  4. 残高の改ざん
ツールをダウンロード