# AWS - Redshift Privesc {{#include ../../../banners/hacktricks-training.md}} ## Redshift Vir meer inligting oor RDS, kyk: {{#ref}} ../aws-services/aws-redshift-enum.md {{#endref}} ### `redshift:DescribeClusters`, `redshift:GetClusterCredentials` Met hierdie toestemmings kan jy **inligting van al die klusters** verkry (insluitend naam en kluster gebruikersnaam) en **kredensiale** kry om toegang te verkry: ```bash # 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:" -d template1 -p 5439 ``` **Potensiële Impak:** Vind sensitiewe inligting binne die databasisse. ### `redshift:DescribeClusters`, `redshift:GetClusterCredentialsWithIAM` Met hierdie toestemmings kan jy **inligting van al die klusters** verkry en **kredensiale** kry om toegang te verkry.\ Let daarop dat die postgres gebruiker die **toestemmings wat die IAM identiteit** wat gebruik is om die kredensiale te verkry, sal hê. ```bash # 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 ``` **Potensiële Impak:** Vind sensitiewe inligting binne die databasisse. ### `redshift:DescribeClusters`, `redshift:ModifyCluster?` Dit is moontlik om die **hoof wagwoord** van die interne postgres (redshit) gebruiker vanaf aws cli te **wysig** (Ek dink dit is die regte toestemmings wat jy nodig het, maar ek het dit nog nie getoets nie): ``` aws redshift modify-cluster –cluster-identifier –master-user-password ‘master-password’; ``` **Potensiële Impak:** Vind sensitiewe inligting binne die databasisse. ## Toegang tot Eksterne Dienste > [!WARNING] > Om toegang te verkry tot al die volgende hulpbronne, sal jy **die rol wat gebruik moet word** moet **specifiseer**. 'n Redshift-kluster **kan 'n lys van AWS-rolle toegeken hê** wat jy kan gebruik **as jy die ARN ken** of jy kan net "**default**" stel om die standaard een te gebruik. > Boonop, soos [**hier verduidelik**](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html), laat Redshift ook toe om rolle te concat (solank die eerste een die tweede een kan aanvaar) om verdere toegang te verkry, maar net **deur** hulle met 'n **komma** te **skei**: `iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';` ### Lambdas Soos verduidelik in [https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_FUNCTION.html](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_FUNCTION.html), is dit moontlik om 'n **lambda-funksie vanaf redshift aan te roep** met iets soos: ```sql CREATE EXTERNAL FUNCTION exfunc_sum2(INT,INT) RETURNS INT STABLE LAMBDA 'lambda_function' IAM_ROLE default; ``` ### S3 Soos verduidelik in [https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-run-copy.html](https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-run-copy.html), is dit moontlik om **te lees en te skryf in S3-buckets**: ```sql # Read copy table from 's3:///load/key_prefix' credentials 'aws_iam_role=arn:aws:iam:::role/' region '' options; # Write unload ('select * from venue') to 's3://mybucket/tickit/unload/venue_' iam_role default; ``` ### Dynamo Soos verduidelik in [https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-dynamodb.html](https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-dynamodb.html), is dit moontlik om **data van dynamodb te verkry**: ```sql copy favoritemovies from 'dynamodb://ProductCatalog' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'; ``` > [!WARNING] > Die Amazon DynamoDB tabel wat die data verskaf, moet in dieselfde AWS Region as jou kluster geskep word, tensy jy die [REGION](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-source-s3.html#copy-region) opsie gebruik om die AWS Region aan te dui waarin die Amazon DynamoDB tabel geleë is. ### EMR Kontroleer [https://docs.aws.amazon.com/redshift/latest/dg/loading-data-from-emr.html](https://docs.aws.amazon.com/redshift/latest/dg/loading-data-from-emr.html) ## References - [https://gist.github.com/kmcquade/33860a617e651104d243c324ddf7992a](https://gist.github.com/kmcquade/33860a617e651104d243c324ddf7992a) {{#include ../../../banners/hacktricks-training.md}}