AWS - DynamoDB Post Exploitation
DynamoDB
Para mais informações, confira:
AWS - DynamoDB Enumdynamodb:BatchGetItem
dynamodb:BatchGetItem
Um atacante com essas permissões poderá obter itens de tabelas pela chave primária (você não pode simplesmente pedir todos os dados da tabela). Isso significa que você precisa conhecer as chaves primárias (você pode obter isso obtendo os metadados da tabela (describe-table
).
Impacto Potencial: Privesc indireto ao localizar informações sensíveis na tabela
dynamodb:GetItem
dynamodb:GetItem
Semelhante às permissões anteriores, esta permite que um potencial atacante leia valores de apenas 1 tabela, dado a chave primária da entrada a ser recuperada:
Com essa permissão, também é possível usar o método transact-get-items
assim:
Impacto Potencial: Privesc indireto ao localizar informações sensíveis na tabela
dynamodb:Query
dynamodb:Query
Semelhante às permissões anteriores, esta permite que um potencial atacante leia valores de apenas 1 tabela, dado a chave primária da entrada a ser recuperada. Permite usar um subconjunto de comparações, mas a única comparação permitida com a chave primária (que deve aparecer) é "EQ", então você não pode usar uma comparação para obter todo o DB em uma solicitação.
Impacto Potencial: Privesc indireto ao localizar informações sensíveis na tabela
dynamodb:Scan
dynamodb:Scan
Você pode usar essa permissão para despejar a tabela inteira facilmente.
Impacto Potencial: Privesc indireto ao localizar informações sensíveis na tabela
dynamodb:PartiQLSelect
dynamodb:PartiQLSelect
Você pode usar esta permissão para despejar a tabela inteira facilmente.
Esta permissão também permite executar batch-execute-statement
como:
mas você precisa especificar a chave primária com um valor, então não é tão útil.
Impacto Potencial: Privesc indireto ao localizar informações sensíveis na tabela
dynamodb:ExportTableToPointInTime|(dynamodb:UpdateContinuousBackups)
dynamodb:ExportTableToPointInTime|(dynamodb:UpdateContinuousBackups)
Esta permissão permitirá que um atacante exporte a tabela inteira para um bucket S3 de sua escolha:
Note que para isso funcionar, a tabela precisa ter a recuperação pontual habilitada. Você pode verificar se a tabela possui essa configuração com:
Se não estiver habilitado, você precisará habilitá-lo e, para isso, você precisa da permissão dynamodb:ExportTableToPointInTime
:
Potencial Impacto: Privesc indireto ao localizar informações sensíveis na tabela
dynamodb:CreateTable
, dynamodb:RestoreTableFromBackup
, (dynamodb:CreateBackup)
dynamodb:CreateTable
, dynamodb:RestoreTableFromBackup
, (dynamodb:CreateBackup)
Com essas permissões, um atacante seria capaz de criar uma nova tabela a partir de um backup (ou até mesmo criar um backup para depois restaurá-lo em uma tabela diferente). Então, com as permissões necessárias, ele seria capaz de verificar informações dos backups que poderiam não estar mais na tabela de produção.
Potencial Impacto: Privesc indireto ao localizar informações sensíveis no backup da tabela
dynamodb:PutItem
dynamodb:PutItem
Esta permissão permite aos usuários adicionar um novo item à tabela ou substituir um item existente por um novo item. Se um item com a mesma chave primária já existir, o item inteiro será substituído pelo novo item. Se a chave primária não existir, um novo item com a chave primária especificada será criado.
Impacto Potencial: Exploração de outras vulnerabilidades/bypasses ao ser capaz de adicionar/modificar dados em uma tabela DynamoDB
dynamodb:UpdateItem
dynamodb:UpdateItem
Esta permissão permite aos usuários modificar os atributos existentes de um item ou adicionar novos atributos a um item. Ela não substitui o item inteiro; apenas atualiza os atributos especificados. Se a chave primária não existir na tabela, a operação criará um novo item com a chave primária especificada e definirá os atributos especificados na expressão de atualização.
Impacto Potencial: Exploração de outras vulnerabilidades/bypasses ao poder adicionar/modificar dados em uma tabela DynamoDB
dynamodb:DeleteTable
dynamodb:DeleteTable
Um atacante com essa permissão pode excluir uma tabela DynamoDB, causando perda de dados.
Impacto potencial: Perda de dados e interrupção dos serviços que dependem da tabela excluída.
dynamodb:DeleteBackup
dynamodb:DeleteBackup
Um atacante com essa permissão pode excluir um backup do DynamoDB, potencialmente causando perda de dados em caso de um cenário de recuperação de desastres.
Impacto potencial: Perda de dados e incapacidade de recuperar a partir de um backup durante um cenário de recuperação de desastres.
dynamodb:StreamSpecification
, dynamodb:UpdateTable
, dynamodb:DescribeStream
, dynamodb:GetShardIterator
, dynamodb:GetRecords
dynamodb:StreamSpecification
, dynamodb:UpdateTable
, dynamodb:DescribeStream
, dynamodb:GetShardIterator
, dynamodb:GetRecords
TODO: Testar se isso realmente funciona
Um atacante com essas permissões pode habilitar um stream em uma tabela DynamoDB, atualizar a tabela para começar a transmitir mudanças e, em seguida, acessar o stream para monitorar mudanças na tabela em tempo real. Isso permite que o atacante monitore e exfiltre mudanças de dados, potencialmente levando a vazamento de dados.
Habilitar um stream em uma tabela DynamoDB:
Descreva o stream para obter o ARN e outros detalhes:
Obtenha o iterador de shard usando o ARN do stream:
Use o shard iterator para acessar e exfiltrar dados do stream:
Impacto potencial: Monitoramento em tempo real e vazamento de dados das mudanças na tabela DynamoDB.
Last updated