AWS - Redshift Privesc

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks

Redshift

Więcej informacji o RDS znajdziesz:

AWS - Redshift Enum

redshift:DescribeClusters, redshift:GetClusterCredentials

Dzięki tym uprawnieniom możesz uzyskać informacje o wszystkich klastrach (w tym nazwę i nazwę użytkownika klastra) oraz pobrać poświadczenia umożliwiające dostęp:

# Get creds
aws redshift get-cluster-credentials --db-user postgres --cluster-identifier redshift-cluster-1
# Connect, even if the password is a base64 string, that is the password
psql -h redshift-cluster-1.asdjuezc439a.us-east-1.redshift.amazonaws.com -U "IAM:<username>" -d template1 -p 5439

Potencjalny wpływ: Znalezienie poufnych informacji w bazach danych.

redshift:DescribeClusters, redshift:GetClusterCredentialsWithIAM

Dzięki tym uprawnieniom możesz uzyskać informacje o wszystkich klastrach oraz uzyskać poświadczenia umożliwiające dostęp.
Należy pamiętać, że użytkownik postgres będzie miał uprawnienia, które posiada IAM identity użyta do uzyskania poświadczeń.

# Get creds
aws redshift get-cluster-credentials-with-iam --cluster-identifier redshift-cluster-1
# Connect, even if the password is a base64 string, that is the password
psql -h redshift-cluster-1.asdjuezc439a.us-east-1.redshift.amazonaws.com -U "IAMR:AWSReservedSSO_AdministratorAccess_4601154638985c45" -d template1 -p 5439

Potencjalny wpływ: Odnalezienie wrażliwych informacji w bazach danych.

redshift:DescribeClusters, redshift:ModifyCluster?

Możliwe jest zmodyfikowanie głównego hasła wewnętrznego użytkownika postgres (redshit) za pomocą aws cli (chyba takie uprawnienia są potrzebne, ale jeszcze ich nie przetestowałem):

aws redshift modify-cluster –cluster-identifier <identifier-for-the cluster> –master-user-password ‘master-password’;

Potencjalny wpływ: Znalezienie wrażliwych informacji w bazach danych.

Dostęp do usług zewnętrznych

Warning

Aby uzyskać dostęp do wszystkich poniższych zasobów, będziesz musiał określić rolę do użycia. Klaster Redshift może mieć przypisaną listę ról AWS, których możesz użyć jeśli znasz ARN lub możesz po prostu ustawić “default”, aby użyć przypisanej domyślnej roli.

Co więcej, jak explained here, Redshift pozwala także łączyć role (pod warunkiem, że pierwsza może założyć drugą) aby uzyskać dalszy dostęp — wystarczy rozdzielić je przecinkiem: iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';

Lambdas

Jak wyjaśniono w https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_FUNCTION.html, możliwe jest wywołanie funkcji lambda z redshift przy użyciu czegoś takiego:

CREATE EXTERNAL FUNCTION exfunc_sum2(INT,INT)
RETURNS INT
STABLE
LAMBDA 'lambda_function'
IAM_ROLE default;

S3

Jak wyjaśniono w https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-run-copy.html, możliwe jest odczytywanie i zapisywanie w S3 buckets:

# Read
copy table from 's3://<your-bucket-name>/load/key_prefix'
credentials 'aws_iam_role=arn:aws:iam::<aws-account-id>:role/<role-name>'
region '<region>'
options;

# Write
unload ('select * from venue')
to 's3://mybucket/tickit/unload/venue_'
iam_role default;

Dynamo

Jak wyjaśniono w https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-dynamodb.html, możliwe jest pobranie danych z dynamodb:

copy favoritemovies
from 'dynamodb://ProductCatalog'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Warning

Tabela Amazon DynamoDB, która dostarcza dane, musi być utworzona w tym samym AWS Region co Twój klaster, chyba że użyjesz opcji REGION aby określić AWS Region, w którym znajduje się tabela Amazon DynamoDB.

EMR

Zobacz https://docs.aws.amazon.com/redshift/latest/dg/loading-data-from-emr.html

Źródła

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks