AWS - Redshift Privesc
Redshift
Pour plus d'informations sur RDS, consultez :
AWS - Redshift Enumredshift:DescribeClusters
, redshift:GetClusterCredentials
redshift:DescribeClusters
, redshift:GetClusterCredentials
Avec ces permissions, vous pouvez obtenir des informations sur tous les clusters (y compris le nom et le nom d'utilisateur du cluster) et obtenir des identifiants pour y accéder :
Impact Potentiel : Trouver des informations sensibles à l'intérieur des bases de données.
redshift:DescribeClusters
, redshift:GetClusterCredentialsWithIAM
redshift:DescribeClusters
, redshift:GetClusterCredentialsWithIAM
Avec ces permissions, vous pouvez obtenir des informations sur tous les clusters et obtenir des identifiants pour y accéder. Notez que l'utilisateur postgres aura les permissions que l'identité IAM utilisée pour obtenir les identifiants possède.
Impact Potentiel : Trouver des informations sensibles à l'intérieur des bases de données.
redshift:DescribeClusters
, redshift:ModifyCluster?
redshift:DescribeClusters
, redshift:ModifyCluster?
Il est possible de modifier le mot de passe maître de l'utilisateur postgres interne (redshift) depuis aws cli (je pense que ce sont les permissions dont vous avez besoin mais je ne les ai pas encore testées) :
Impact Potentiel : Trouver des informations sensibles dans les bases de données.
Accéder aux Services Externes
Pour accéder à toutes les ressources suivantes, vous devrez spécifier le rôle à utiliser. Un cluster Redshift peut avoir une liste de rôles AWS assignés que vous pouvez utiliser si vous connaissez l'ARN ou vous pouvez simplement définir "default" pour utiliser celui 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 faire appel à une fonction lambda depuis redshift avec quelque chose comme :
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 :
Dynamo
Comme expliqué dans https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-dynamodb.html, il est possible de récupérer des données de dynamodb :
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
Last updated