5439 - Pentesting Redshift

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Βασικές Πληροφορίες

Αυτή η θύρα χρησιμοποιείται από Amazon Redshift (διαχειριζόμενη αποθήκη δεδομένων της AWS). Το Redshift wire protocol είναι μια ελαφρώς τροποποιημένη υλοποίηση του PostgreSQL protocol, οπότε τα περισσότερα Postgres client εργαλεία λειτουργούν (psql, psycopg2, JDBC/ODBC), αλλά οι απαιτήσεις auth και TLS διαφέρουν.

Για περισσότερες πληροφορίες δείτε:

AWS - Redshift Enum - HackTricks Cloud

Εντοπισμός & Συνδεσιμότητα

  • Προεπιλεγμένη θύρα: 5439/TCP (προσαρμόσιμη). Serverless workgroups επίσης χρησιμοποιούν την προεπιλεγμένη 5439.
  • Πρότυπο δημόσιου endpoint: <clusterid>.<random>.<region>.redshift.amazonaws.com (public) ή .redshift.amazonaws.com.cn (Κίνα). Serverless: <workgroup>.<random>.<region>.redshift-serverless.amazonaws.com.
  • TLS: Το Redshift απαιτεί TLS 1.2+ και cipher suites με perfect-forward-secrecy. Παλιότεροι clients μπορεί να αποτύχουν· επιβάλετε σύγχρονο TLS:
psql "host=<endpoint> port=5439 user=awsuser dbname=dev sslmode=require"
# or using redshift-psql wrapper
  • Parameter group require_ssl ελέγχει αν επιτρέπεται το plaintext. Νέες clusters/workgroups χρησιμοποιούν default.redshift-2.0 με require_ssl=true, οπότε downgrade/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;

Τα σφάλματα διαχωρίζουν bad password vs missing user → πιθανή username enumeration during brute force.

Διαδρομές authentication για δοκιμή

  • Database password για τον master user (συχνά ονομαζόμενος awsuser) ή για δημιουργημένους DB users.
  • IAM auth tokens: generate short-lived credentials και συνδεθείτε μέσω libpq/JDBC/ODBC χρησιμοποιώντας sslmode=require και authMech=IAM ή plugin_name=com.amazon.redshift.plugin.OktaCredentialsProvider. Κακοχρησιμοποιήστε κλεμμένα IAM creds/roles με ισοδύναμη άδεια τύπου rds-db:connect για Redshift.
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 μπορεί να ξεκινήσει local webserver για SSO· το captured loopback callback μπορεί να leak SAML assertion ή temp creds.

Συνηθισμένες λανθασμένες ρυθμίσεις (network)

  • Cluster με PubliclyAccessible=true και ευρύ SG (0.0.0.0/0) εκθέτει επιφάνεια τύπου Postgres για brute force ή SQLi exploitation.
  • Default port 5439 μαζί με default SG επιτρέπει εύκολη ανακάλυψη (Shodan/Censys). Η αλλαγή του port είναι μικρή απόκρυψη αλλά μερικές φορές παραβλέπεται σε λίστες hardening.
  • No enhanced VPC routing → τα COPY/UNLOAD πηγαίνουν πάνω από το public Internet· μπορούν να abused για exfil όταν attacker ελέγχει S3 bucket/endpoint.

Σημειώσεις επίθεσης

  • Αν το login πετύχει, το Redshift lacks superuser σε serverless· σε provisioned clusters ο master user έχει ευρεία δικαιώματα, συμπεριλαμβανομένης της δημιουργίας UDFs (Python), external schema προς Spectrum, COPY από attacker S3, και UNLOAD για exfil δεδομένων.
  • Ελέγξτε το cluster parameter group για max_concurrency_scaling_clusters, require_ssl, enable_user_activity_logging – απενεργοποίηση logging βοηθά στη διατήρηση stealth.
  • Τα serverless workgroups εξακολουθούν να είναι reachable μέσω TCP· η ίδια SQL attack surface με provisioned clusters.
  • Client-side metadata SQLi (Dec 2024): JDBC 2.1.0.31, Python connector 2.1.4 and ODBC 2.1.5.0 δημιουργούν metadata queries με unquoted user input σε getSchemas/getTables/getColumns (CVE-2024-12744/5/6). Αν μια εφαρμογή επιτρέπει σε attackers να ελέγχουν catalog ή pattern arguments, μπορείτε να inject arbitrary SQL που εκτελείται με τον DB user που χρησιμοποιεί ο connector.
# 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 σταματούν να λειτουργούν June 30, 2026; μετά επιτρέπονται μόνο Lambda UDFs. Επίπτωση για offense: legacy provisioned clusters που τρέχουν ακόμα Python UDFs παρέχουν in-cluster code exec (no FS/network). Τα Lambda UDFs μεταφέρουν τον κώδικα σε Lambda όπου το IAM role μπορεί να φτάσει σε Internet/VPC endpoints για SSRF/pivot αλλά χωρίς άμεση πρόσβαση στο cluster filesystem. Το κυνήγι παλαιών clusters με ενεργοποιημένα Python UDFs μπορεί ακόμη να αποδώσει RCE primitives.

Πρόσφατες αλλαγές ασφαλείας (offense impact)

  • Public access disabled by default σε νέα clusters/snapshots (Jan 10, 2025 change). Τα legacy μπορεί να είναι ακόμα public.
  • Encryption at rest + enforced TLS by default σημαίνει ότι sniffing/mitm γίνεται δυσκολότερο· απαιτούνται valid credentials ή SSRF στο VPC path.
  • Serverless VPCE rollout change (Jun 27, 2025): τα workgroup endpoints δημιουργούνται σε έως 3 AZ κατά τη δημιουργία. Τα discovery εργαλεία πρέπει να απαριθμήσουν όλα τα workgroup VPCE DNS names ανά AZ για να βρουν reachable IPs.

Αναφορές

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks