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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-2005 — CVE-2026-2005 の PoC | Kitploit
ツール/GitHubGitHub/var77/cve-2026-2005
特権昇格メモリフォレンジック脆弱性分析エクスプロイト学習と教育データベースセキュリティバイナリエクスプロイト
GitHubvar77/cve-2026-2005

CVE-2026-2005

CVE-2026-2005 の PoC

リポジトリを見る
265154ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-2005 - PostgreSQL pgcrypto ヒープオーバーフローエクスプロイト

PostgreSQL pgcrypto拡張機能のPGPセッションキー解析におけるヒープベースのバッファオーバーフローに対するPoCエクスプロイト。任意のメモリ読み取り/書き込みとスーパーユーザーへの権限昇格を実現します。

詳細な技術情報は、Zeroday Cloudアドバイザリを参照してください。

デモ

PoCデモ

使い方

1. PostgreSQLのコンパイル

脆弱性のあるコミットからPostgreSQLをクローンし、コンパイルして、バイナリのシンボルオフセットが正確に一致するようにします。エクスプロイトは、漏洩したポインタをELFシンボルオフセットと照合することでASLRベースを解決します。ビルドやバージョンが異なるとオフセットが異なり、失敗します。

root@kitploit:~
git clone https://github.com/postgres/postgres.git
cd postgres
git checkout 4b324845ba5d24682b9b3708a769f00d160afbd7
./configure \
    --prefix="$HOME/projects/pg/pgsql" \
    --with-libxml \
    --with-libxslt \
    --enable-debug \
    --with-ssl=openssl
make -j$(nproc)
make install-world-bin

2. Pythonの依存関係のインストール

root@kitploit:~
pip install -r requirements.txt

3. エクスプロイトの実行

root@kitploit:~
python poc.py \
    --binary "$HOME/projects/pg/pgsql/bin/postgres" \
    --dbname test-db \
    --host 127.0.0.1 \
    --port 5432 \
    --user test-user \
    --password secret \
    --cmd id

オプション

エクスプロイトの流れ

エクスプロイトは7つの段階で進行します:

  1. ヒープポインタリーク - 細工されたPGPメッセージがmdstバッファのmallocチャンクヘッダを破損します。PostgreSQLが破損したチャンクに対してpfree()を呼び出すと、アロケータはポインタアドレスを含むエラーを発行し、mdst->dataのヒープ位置をリークします。

  2. 任意読み取り - 2回目のオーバーフローでmdst->dataを書き換えて(leaked_ptr - 0x10000)を指すようにします。復号後、mbuf_steal_data()はそのアドレスの内容を復号された出力として返し、古いコードポインタを含む可能性のあるヒープメモリをダンプします。

  3. ポインタスキャン - 16進ダンプから、コードアドレス(0x500000000000以上)のように見えるがヒープ領域にはない8バイトのリトルエンディアン値をスキャンします。これらは候補PIE(位置独立実行可能ファイル)ポインタです。

  4. PIEベース投票 - 各候補アドレスをpostgresバイナリのELFシンボルオフセットと照合します。ページオフセットが一致する(addr - sym_offset)ペアごとに投票が行われます。10票以上の候補が保持され、投票数でソートされた最小のベース(PIEは最低マッピングELFセグメント)が最有力候補となります。

  5. PIEベース検証 - 任意読み取りプリミティブを使用して、エクスプロイトは(candidate_base + current_user_offset)のCurrentUserIdを読み取り、セッションの既知のOIDと比較します。一致すればPIEベースが確定します。

  6. 任意書き込み - オーバーフローはmsrcとの両方のMBufヘッダを破損します。偽装された/は、暗号化されたスーパーユーザーOID(10)を含む埋め込みsym暗号化パケットを指します。偽装されたはを指します(はのが出力長を最初の4バイトに書き込むことを考慮しています)。

必要条件

  • Python 3.10+
  • psycopg2-binary, pwntools, pycryptodome (pip install -r requirements.txt)
  • 脆弱性のあるコミット(4b324845)からpgcryptoを有効にしてコンパイルされたPostgreSQL

免責事項

このProof of Conceptは教育および防御研究目的のみです。所有しているシステム、またはテストする明示的な許可を得たシステムに対してのみ使用してください。

参照

  • CVE-2026-2005: PostgreSQL pgcrypto Integer Overflow to RCE
ツールをダウンロード
ArgumentDefaultDescription
--binary(postgres binary)シンボル抽出用のpostgresバイナリへのパス
--dbnamepostgresターゲットデータベース名
--hostlocalhostPostgreSQLホスト
--port5432PostgreSQLポート
--userpostgresデータベースユーザー
--password(empty)データベースパスワード
--cmdwhoami権限昇格後に実行するOSコマンド
--gdb(flag)オーバーフローポイントでtmux経由でGDBをアタッチ
mdst
msrc->data
read_pos
mdst->data
CurrentUserId - 4
-4
pgp-pgsql.c:533
SET_VARSIZE
  • 権限昇格 - CurrentUserIdが10(bootstrapスーパーユーザー)に上書きされると、COPY FROM PROGRAMが指定されたOSコマンドをpostgresシステムユーザーとして実行します。