AWS - DynamoDB Post Exploitation
DynamoDB
Pour plus d'informations, consultez :
AWS - DynamoDB Enumdynamodb:BatchGetItem
dynamodb:BatchGetItem
Un attaquant avec ces permissions pourra obtenir des éléments des tables par la clé primaire (vous ne pouvez pas simplement demander toutes les données de la table). Cela signifie que vous devez connaître les clés primaires (vous pouvez les obtenir en récupérant les métadonnées de la table (describe-table
).
Impact potentiel : Privesc indirect en localisant des informations sensibles dans la table
dynamodb:GetItem
dynamodb:GetItem
Similaire aux permissions précédentes, celle-ci permet à un attaquant potentiel de lire des valeurs d'une seule table donnée la clé primaire de l'entrée à récupérer :
Avec cette permission, il est également possible d'utiliser la méthode transact-get-items
comme :
Impact Potentiel : Privesc indirect en localisant des informations sensibles dans la table
dynamodb:Query
dynamodb:Query
Similaire aux permissions précédentes, celle-ci permet à un attaquant potentiel de lire des valeurs d'une seule table donnée la clé primaire de l'entrée à récupérer. Elle permet d'utiliser un sous-ensemble de comparaisons, mais la seule comparaison autorisée avec la clé primaire (qui doit apparaître) est "EQ", donc vous ne pouvez pas utiliser une comparaison pour obtenir toute la base de données en une seule requête.
Impact potentiel : Privesc indirect en localisant des informations sensibles dans la table
dynamodb:Scan
dynamodb:Scan
Vous pouvez utiliser cette permission pour vider facilement l'intégralité de la table.
Impact Potentiel : Privesc indirect en localisant des informations sensibles dans la table
dynamodb:PartiQLSelect
dynamodb:PartiQLSelect
Vous pouvez utiliser cette permission pour vider facilement l'intégralité de la table.
Cette permission permet également d'exécuter batch-execute-statement
comme :
mais vous devez spécifier la clé primaire avec une valeur, donc ce n'est pas très utile.
Impact potentiel : Privesc indirect en localisant des informations sensibles dans la table
dynamodb:ExportTableToPointInTime|(dynamodb:UpdateContinuousBackups)
dynamodb:ExportTableToPointInTime|(dynamodb:UpdateContinuousBackups)
Cette permission permettra à un attaquant d'exporter toute la table vers un bucket S3 de son choix :
Notez que pour que cela fonctionne, la table doit avoir la récupération point-in-time activée. Vous pouvez vérifier si la table l'a avec :
Si ce n'est pas activé, vous devrez l'activer et pour cela, vous avez besoin de la permission dynamodb:ExportTableToPointInTime
:
Impact Potentiel : Privesc indirect en localisant des informations sensibles dans la table
dynamodb:CreateTable
, dynamodb:RestoreTableFromBackup
, (dynamodb:CreateBackup)
dynamodb:CreateTable
, dynamodb:RestoreTableFromBackup
, (dynamodb:CreateBackup)
Avec ces permissions, un attaquant serait capable de créer une nouvelle table à partir d'une sauvegarde (ou même créer une sauvegarde pour ensuite la restaurer dans une table différente). Ensuite, avec les permissions nécessaires, il serait capable de vérifier les informations des sauvegardes qui pourraient ne plus être dans la table de production.
Impact Potentiel : Privesc indirect en localisant des informations sensibles dans la sauvegarde de la table
dynamodb:PutItem
dynamodb:PutItem
Cette permission permet aux utilisateurs d'ajouter un nouvel élément à la table ou de remplacer un élément existant par un nouvel élément. Si un élément avec la même clé primaire existe déjà, l'élément entier sera remplacé par le nouvel élément. Si la clé primaire n'existe pas, un nouvel élément avec la clé primaire spécifiée sera créé.
Impact Potentiel : Exploitation de vulnérabilités supplémentaires/contournements en étant capable d'ajouter/modifier des données dans une table DynamoDB
dynamodb:UpdateItem
dynamodb:UpdateItem
Cette permission permet aux utilisateurs de modifier les attributs existants d'un élément ou d'ajouter de nouveaux attributs à un élément. Elle ne remplace pas l'élément entier ; elle ne met à jour que les attributs spécifiés. Si la clé primaire n'existe pas dans la table, l'opération créera un nouvel élément avec la clé primaire spécifiée et définira les attributs spécifiés dans l'expression de mise à jour.
Impact Potentiel : Exploitation de vulnérabilités supplémentaires/contournements en étant capable d'ajouter/modifier des données dans une table DynamoDB
dynamodb:DeleteTable
dynamodb:DeleteTable
Un attaquant avec cette permission peut supprimer une table DynamoDB, entraînant une perte de données.
Impact potentiel : Perte de données et perturbation des services dépendant de la table supprimée.
dynamodb:DeleteBackup
dynamodb:DeleteBackup
Un attaquant avec cette permission peut supprimer une sauvegarde DynamoDB, causant potentiellement une perte de données en cas de scénario de récupération après sinistre.
Impact potentiel : Perte de données et incapacité à récupérer à partir d'une sauvegarde lors d'un scénario de reprise après sinistre.
dynamodb:StreamSpecification
, dynamodb:UpdateTable
, dynamodb:DescribeStream
, dynamodb:GetShardIterator
, dynamodb:GetRecords
dynamodb:StreamSpecification
, dynamodb:UpdateTable
, dynamodb:DescribeStream
, dynamodb:GetShardIterator
, dynamodb:GetRecords
TODO: Tester si cela fonctionne réellement
Un attaquant avec ces permissions peut activer un flux sur une table DynamoDB, mettre à jour la table pour commencer à diffuser les changements, puis accéder au flux pour surveiller les changements de la table en temps réel. Cela permet à l'attaquant de surveiller et d'exfiltrer les changements de données, ce qui peut potentiellement conduire à une fuite de données.
Activer un flux sur une table DynamoDB :
Décrire le stream pour obtenir l'ARN et d'autres détails :
Obtenez l'itérateur de fragment en utilisant l'ARN du flux :
Impact potentiel : Surveillance en temps réel et fuite de données des changements de la table DynamoDB.
Last updated