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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-1094-PoC-Postgre-SQLi — CVE-2025-1094(深刻なPostgreSQL SQLインジェクションの脆弱性)の概念実証エミュレーションと分析。Dockerベースのラボ環境、エクスプロイトスクリプト、根本原因分析、セキュリティテストと教育のためのステップバイステップのデモを含みます。 | Kitploit
ツール/GitHubGitHub/ishwardeepp/cve-2025-1094-poc-postgre-sqli
脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育データベースセキュリティラボと実践

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
GitHub
ishwardeepp/cve-2025-1094-poc-postgre-sqli

CVE-2025-1094-PoC-Postgre-SQLi

CVE-2025-1094(深刻なPostgreSQL SQLインジェクションの脆弱性)の概念実証エミュレーションと分析。Dockerベースのラボ環境、エクスプロイトスクリプト、根本原因分析、セキュリティテストと教育のためのステップバイステップのデモを含みます。

リポジトリを見る
621年前未レビュー

CVE-2025-1094 の分析とエミュレーション設定

2025年3月14日に実施されたこの詳細な調査では、提供されたエミュレーション設定と概念実証(PoC)の実行に基づいて、PostgreSQLにおける仮想的な高深刻度SQLインジェクション脆弱性であるCVE-2025-1094を調査します。分析では、脆弱性の概要、根本原因、ファイルの寄与、PoCの手順、および緩和策をカバーし、エミュレーションプロセスからのすべての複雑な詳細を組み込んでいます。

脆弱性の概要

CVE-2025-1094は、PostgreSQLにおける深刻なSQLインジェクションの欠陥として説明されており、バージョン17.3、16.7、15.11、14.16、13.19より前のバージョンに影響し、CVSS 3.1基本スコアは8.1で、機密性、完全性、可用性に重大な影響を与えることを示しています。これにより、攻撃者は機密データにアクセスしたり、リモートコード実行(RCE)を行ったりすることが可能であり、BeyondTrustインシデント(17のエンタープライズ顧客に影響、BleepingComputer で報告)や米国財務省の侵害(The Register で詳細)などの実際の侵害で悪用されています。2025年3月14日に実施されたエミュレーションでは、server_encoding=EUC_TW と client_encoding=BIG5 を用いたDocker設定を使用し、エクスプロイトをトリガーするために重要でした。PoCでは、DOブロックを注入してラージオブジェクトを作成し、pg_read_file で /etc/passwd を読み取り、lo_put でラージオブジェクトに書き込み、lo_export で /tmp/payload にエクスポートすることで、エンコーディングの不一致が不正なファイルアクセスを可能にする役割を確認しました。

根本原因分析

根本原因はCWE-149(引用構文の不適切な無効化)に分類され、PostgreSQLのlibpq関数(PQescapeLiteral()、PQescapeIdentifier()、PQescapeString()、PQescapeStringConn())における不適切な処理が関係しており、これらの関数は、結果が psql コマンドラインツールへの入力の構築に使用されるときに引用構文を無効化できません。これは、client_encoding がBIG5に設定され、server_encoding がEUC_TWに設定されている場合(当設定で見られるように)に悪化し、SQLインジェクションを許容します。エミュレーションでは、不一致を作り出すためにEUC_TWと zh_TW.EUC_TW が必要であり、psycopg2 がEUC_TWをサポートしていないなどの問題は、UTF8で接続してからBIG5に切り替えることで解決しました。エクスプロイトの成功は、subprocess.run(["psql", ...]) を介して生のSQLを実行し、安全なクエリ処理をバイパスすることにかかっていました(ログに詳述)。

ファイルの説明と貢献

表:ファイルの貢献の概要

概念実証(PoC)の手順

2025年3月14日に実行されたPoCは、以下の手順を通じてエクスプロイトの影響を示しており、各手順には詳細な説明が含まれています。

  1. sudo docker compose up --build

    • 機能: Docker Composeサービス(db および app)を構築して起動し、必要に応じて更新されたイメージでコンテナを作成し、postgre_default ネットワークでリンクします。脆弱な環境が設定されることを保証し、db はEUC_TWエンコーディングを使用し、app はポート5000で /vuln-endpoint を公開します。これはエクスプロイトのエンコーディング不一致とエンドポイントアクセスにとって重要です。
    • 必要な理由: エクスプロイトが機能するために必要な環境を設定し、すべてのサービスが正しく実行および構成されていることを保証します。
  2. curl -X POST http://localhost:5000/vuln-endpoint -d "input=test"

    • 機能: input=test を使用してFlaskアプリのエンドポイントにPOSTリクエストを送信し、接続性と基本機能を確認し、"Executed" を期待します。アプリが実行中でデータベースに接続できることを確認し、エクスプロイトの準備ができていることを保証します。
    • 必要な理由: エクスプロイトに進む前にエンドポイントがアクセス可能で機能していることを確認し、PoC検証手順と一致します。
    • Checking Setup
  3. python3 cve-2025-1094-exploit.py

    • 機能: エクスプロイトスクリプトを実行し、DOブロックを含むPOSTリクエストを送信してラージオブジェクトを作成し、/etc/passwd を書き込み、/tmp/payload にエクスポートし、実行ステータスを出力します。SQLインジェクションをトリガーし、脆弱性を悪用して を読み取ります。これはCVE-2025-1094の影響を示すために重要であり、ログに成功したファイルエクスポートが確認されます。

デモンストレーションビデオ

Vimeoのデモンストレーションビデオ
クリックしてVimeoでPoCのデモをご覧ください。

緩和策

CVE-2025-1094を緩和するには、エミュレーションの洞察と業界のガイダンスに基づいて、以下の対策が推奨されます。

  • パッチ適用済みバージョンへのアップグレード: PostgreSQLバージョン17.3、16.7、15.11、14.16、または13.19にアップグレードします。PostgreSQLダウンロードページ から入手可能です。
  • 入力検証: すべてのユーザー入力をUTF-8エンコーディングで検証し、インジェクションを防止します。Armosecブログ のアドバイスによる。
  • psqlアクセスの制限: psql へのアクセスを信頼できるユーザーのみに制限し、攻撃対象領域を減らします。
  • パラメータ化クエリまたはORMフレームワーク: パラメータ化クエリまたはORMフレームワークを使用してSQLインジェクションを防止し、セキュリティを強化します。
  • 多要素認証(MFA)とロールベースアクセス制御(RBAC): MFAとRBACを実装してアクセス制御を強化します。Ox Security Insights による。
  • ログ監視: 定期的にログを監視して異常や不審な活動を早期に検出し、潜在的なエクスプロイトを発見します。
  • 堅牢なバックアップ: データベースの定期的かつ堅牢なバックアップを維持し、潜在的な侵害から回復してデータの整合性を確保します。
ツールをダウンロード
ファイル機能PoCへの貢献必要な理由
exploit.pyDOブロックを含むPOSTリクエストを送信し、ラージオブジェクトを作成・エクスポートして /etc/passwd を読み取ります。SQLインジェクションをトリガーし、エンコーディングの不一致を悪用して任意のSQLコマンドを実行します。エクスプロイトの実行を可能にし、PoCの影響にとって重要です。
app.pyFlaskアプリで /vuln-endpoint を公開し、psql を介して生のSQLを実行します。エクスプロイトのための脆弱なエンドポイントを提供します。エクスプロイトのエントリポイントであり、脆弱性のデモンストレーションに必要です。
init.sql文字列入力用に id VARCHAR(255) のテストテーブルを作成します。インジェクションのスキーマを設定し、タイプエラーなしでペイロードの実行を保証します。エクスプロイトのデータベース設定、SQLインジェクションに不可欠です。
Dockerfile必要な依存関係を持つFlaskアプリコンテナを構築します。エンドポイントデプロイメント用の分離されたアプリサービスを作成します。脆弱なアプリをデプロイし、PoCの再現性にとって重要です。
docker-compose.yml特定の構成で db と app サービスを定義しリンクします。設定をオーケストレーションし、エンコーディングの不一致とサービスの依存関係を保証します。サービスをリンクし、環境設定と分離に不可欠です。
Dockerfile.dbEUC_TWエンコーディングのPostgreSQLコンテナを構築します。必要なエンコーディングで脆弱なデータベースを作成します。必要なエンコーディングでデータベースを設定し、脆弱性トリガーにとって重要です。
/etc/passwd
  • 必要な理由: コアエクスプロイトを実行し、攻撃者がどのように機密データにアクセスできるかを示し、実際の攻撃をエミュレートするPoCの目標と一致します。
  • Running Exploit
  • sudo docker ps

    • 機能: 実行中のコンテナを一覧表示し、postgre-app-1 と postgre-db-1 が稼働していることを確認します。エクスプロイトを実行する前に設定を確認し、両方のサービスがアクティブであることを保証します。これはPoCの信頼性にとって重要です。ユーザーにコンテナIDを提供し、後続のコマンドで必要となります。
    • 必要な理由: 必要なすべてのサービスが実行中であることを確認し、さらなるエクスプロイト手順の前のチェックポイントを提供します。
  • sudo docker exec -it bash -c "LC_ALL=C ls -l /tmp/payload && LC_ALL=C cat /tmp/payload"

    • 機能: postgre-db-1 コンテナ内でコマンドを実行し、英語出力で /tmp/payload を一覧表示して表示し、エクスプロイトの結果(/etc/passwd が表示されるはず)を確認します。ファイルを確認してエクスプロイトが機能したことを確認し、/tmp/payload に機密データが含まれていることを保証し、PoC検証と一致し、LC_ALL=C でロケールの文字化けを回避します。
    • 必要な理由: 出力をチェックしてエクスプロイトの成功を確認し、機密データが期待通りにアクセスされたことを保証します。
    • Validating Exploit
  • sudo docker exec -it psql -U postgres -d postgres -c "SELECT * FROM test;"

    • 機能: データベースコンテナ内でSQLクエリを実行し、test テーブルからすべてを選択し、エクスプロイトからのINSERTを確認します("Exploit ran with loid ..." が表示されるはず)。エクスプロイトによるデータベースの変更を確認し、DOブロックが実行されたことを保証し、PoC検証と一致し、loid のログを検証します。
    • 必要な理由: データベースが期待通りに変更されたことを保証し、エクスプロイトの影響の追加検証を提供します。
  • sudo docker compose down

    • 機能: コンテナ、ネットワーク、ボリュームを停止および削除し、環境をクリーンアップします。リソースが解放されることを保証し、システムの清潔さを維持します。これは残留物なく再現可能なPoC実行に不可欠です。
    • 必要な理由: テスト後にクリーンアップし、残留するサービスやデータが将来のテストに影響を与えないようにし、制御された環境を維持します。