5439 - Pentesting Redshift
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Informazioni di base
This port is used by Amazon Redshift (AWS managed data warehouse). Redshift wire protocol is a slightly modified PostgreSQL protocol, so most Postgres client tooling works (psql, psycopg2, JDBC/ODBC) but auth and TLS requirements differ.
Per maggiori informazioni consulta:
AWS - Redshift Enum - HackTricks Cloud
Enumerazione e connettività
- Porta predefinita: 5439/TCP (configurabile). Anche i serverless workgroups usano 5439 di default.
- 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 richiede TLS 1.2+ e cifrari con perfect-forward-secrecy. Client vecchi potrebbero fallire; forzare TLS moderno:
psql "host=<endpoint> port=5439 user=awsuser dbname=dev sslmode=require"
# or using redshift-psql wrapper
- Parameter group
require_sslcontrolla se il plaintext è permesso. I nuovi cluster/workgroups usanodefault.redshift-2.0conrequire_ssl=true, quindi downgrade/mitm è più difficile.
Enumerazione rapida con 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;
Gli errori distinguono password errata da utente inesistente → potenziale username enumeration durante brute force.
Percorsi di autenticazione da testare
- Database password per l’utente master (spesso chiamato
awsuser) o per gli utenti DB creati. - IAM auth tokens: genera credenziali a breve durata e connettiti via libpq/JDBC/ODBC usando
sslmode=requireeauthMech=IAMoplugin_name=com.amazon.redshift.plugin.OktaCredentialsProvider. Abusa di credenziali/ruoli IAM rubati con un permesso equivalente in stilerds-db:connectper 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_namepuò avviare un webserver locale per SSO; il callback loopback catturato può leak SAML assertion o temp creds.
Configurazioni errate comuni (network)
- Cluster marcato PubliclyAccessible=true con SG aperto (0.0.0.0/0) espone una superficie simile a Postgres per brute force o sfruttamento SQLi.
- Porta predefinita 5439 e SG predefinito permettono facile scoperta (Shodan/Censys). Cambiare porta è una piccola misura di oscuramento ma a volte trascurata nelle checklist di hardening.
- No enhanced VPC routing → COPY/UNLOAD viaggiano su Internet pubblico; possono essere abusati per exfil quando l’attaccante controlla un bucket/endpoint S3.
Note sull’attacco
- Se il login ha successo, Redshift non ha superuser in serverless; nei cluster provisioned l’utente master ha ampi diritti inclusa la creazione di UDFs (Python), schema esterni per Spectrum, COPY da S3 controllato dall’attaccante, e
UNLOADper exfiltrare dati. - Controlla il parameter group del cluster per
max_concurrency_scaling_clusters,require_ssl,enable_user_activity_logging– il logging disabilitato aiuta la furtività. - I workgroup serverless sono comunque raggiungibili via TCP; stessa superficie SQL di attacco dei cluster provisioned.
- Client-side metadata SQLi (Dec 2024): JDBC 2.1.0.31, Python connector 2.1.4 and ODBC 2.1.5.0 costruiscono query di metadata con input utente non quotato in
getSchemas/getTables/getColumns(CVE-2024-12744/5/6). Se un’app permette agli attaccanti di controllare gli argomenti catalog o pattern, puoi iniettare SQL arbitraria che viene eseguita con l’utente DB usato dal 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 smettono di funzionare il 30 giugno 2026; solo Lambda UDFs saranno permessi dopo. Impatto offensivo: i cluster provisioned legacy eseguono ancora Python UDFs per code exec in-cluster (no FS/network). Le Lambda UDFs spostano il codice in Lambda dove il ruolo IAM può raggiungere Internet/endpoint VPC per SSRF/pivot ma senza accesso diretto al filesystem del cluster. Cercare cluster vecchi con Python UDFs abilitati può ancora portare a primitive RCE.
Cambiamenti di sicurezza recenti (impatto offensivo)
- Public access disabled by default sui nuovi cluster/snapshot (cambiamento del 10 gen 2025). Quelli legacy possono ancora essere pubblici.
- Encryption at rest + enforced TLS by default significa che sniffing/mitm è più difficile; servono credenziali valide o SSRF nella path VPC.
- Serverless VPCE rollout change (Jun 27, 2025): gli endpoint dei workgroup vengono creati in fino a 3 AZ durante la creazione. Gli strumenti di discovery dovrebbero enumerare tutti i nomi DNS dei workgroup VPCE per AZ per trovare IP raggiungibili.
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
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.


