AWS - Redshift Privesc

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Redshift

Aby uzyskać więcej informacji na temat RDS, sprawdź:

pageAWS - Redshift Enum

redshift:DescribeClusters, redshift:GetClusterCredentials

Z tymi uprawnieniami możesz uzyskać informacje o wszystkich klastrach (w tym nazwę i nazwę użytkownika klastra) oraz uzyskać poświadczenia, aby uzyskać do niego 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

Potencjalne skutki: Znalezienie wrażliwych informacji w bazach danych.

redshift:DescribeClusters, redshift:GetClusterCredentialsWithIAM

Z tymi uprawnieniami możesz uzyskać informacje o wszystkich klastrach i uzyskać poświadczenia do dostępu do nich. Zauważ, że użytkownik postgres będzie miał uprawnienia, które ma tożsamość IAM, 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

Potencjalne skutki: Znalezienie wrażliwych informacji w bazach danych.

redshift:DescribeClusters, redshift:ModifyCluster?

Istnieje możliwość zmiany hasła głównego użytkownika wewnętrznego postgres (redshit) za pomocą aws cli (Myślę, że są to uprawnienia, których potrzebujesz, ale jeszcze ich nie testowałem):

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

Potencjalne skutki: Znalezienie wrażliwych informacji w bazach danych.

Dostęp do usług zewnętrznych

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

Co więcej, jak wyjaśniono tutaj, Redshift pozwala również na łączenie ról (pod warunkiem, że pierwsza może przejąć drugą) w celu uzyskania dalszego dostępu, ale wystarczy je oddzielić przecinkiem: iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';

Lambdy

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 za pomocą:

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, jest możliwe czytanie i zapisywanie do kubełków S3:

# 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, jest możliwe pobranie danych z dynamodb:

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

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

EMR

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

References

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated