AWS - DynamoDB Post Exploitation
DynamoDB
Para más información revisa:
AWS - DynamoDB Enumdynamodb:BatchGetItem
dynamodb:BatchGetItem
Un atacante con estos permisos podrá obtener elementos de las tablas por la clave primaria (no puedes simplemente pedir todos los datos de la tabla). Esto significa que necesitas conocer las claves primarias (puedes obtener esto obteniendo los metadatos de la tabla (describe-table
).
Impacto Potencial: Privilegios indirectos al localizar información sensible en la tabla
dynamodb:GetItem
dynamodb:GetItem
Similar a los permisos anteriores este permite a un atacante potencial leer valores de solo 1 tabla dada la clave primaria de la entrada a recuperar:
Con este permiso también es posible usar el método transact-get-items
como:
Impacto Potencial: Privesc indirecto al localizar información sensible en la tabla
dynamodb:Query
dynamodb:Query
Similar a los permisos anteriores este permite a un atacante potencial leer valores de solo 1 tabla dada la clave primaria de la entrada a recuperar. Permite usar un subconjunto de comparaciones, pero la única comparación permitida con la clave primaria (que debe aparecer) es "EQ", por lo que no se puede usar una comparación para obtener toda la base de datos en una solicitud.
Impacto Potencial: Escalada de privilegios indirecta al localizar información sensible en la tabla
dynamodb:Scan
dynamodb:Scan
Puedes usar este permiso para volcar toda la tabla fácilmente.
Impacto Potencial: Privesc indirecto al localizar información sensible en la tabla
dynamodb:PartiQLSelect
dynamodb:PartiQLSelect
Puedes usar este permiso para volcar toda la tabla fácilmente.
Esta permiso también permite realizar batch-execute-statement
como:
pero necesitas especificar la clave primaria con un valor, por lo que no es tan útil.
Impacto Potencial: Privesc indirecto al localizar información sensible en la tabla
dynamodb:ExportTableToPointInTime|(dynamodb:UpdateContinuousBackups)
dynamodb:ExportTableToPointInTime|(dynamodb:UpdateContinuousBackups)
Este permiso permitirá a un atacante exportar toda la tabla a un bucket S3 de su elección:
Nota que para que esto funcione, la tabla necesita tener la recuperación en un punto en el tiempo habilitada, puedes verificar si la tabla lo tiene con:
Si no está habilitado, necesitarás habilitarlo y para eso necesitas el permiso dynamodb:ExportTableToPointInTime
:
Impacto Potencial: Privesc indirecto al localizar información sensible en la tabla
dynamodb:CreateTable
, dynamodb:RestoreTableFromBackup
, (dynamodb:CreateBackup)
dynamodb:CreateTable
, dynamodb:RestoreTableFromBackup
, (dynamodb:CreateBackup)
Con estos permisos, un atacante podría crear una nueva tabla a partir de una copia de seguridad (o incluso crear una copia de seguridad para luego restaurarla en una tabla diferente). Luego, con los permisos necesarios, podría revisar información de las copias de seguridad que podría no estar más en la tabla de producción.
Impacto Potencial: Privesc indirecto al localizar información sensible en la copia de seguridad de la tabla
dynamodb:PutItem
dynamodb:PutItem
Este permiso permite a los usuarios agregar un nuevo ítem a la tabla o reemplazar un ítem existente con un nuevo ítem. Si un ítem con la misma clave primaria ya existe, el ítem completo será reemplazado con el nuevo ítem. Si la clave primaria no existe, se creará un nuevo ítem con la clave primaria especificada.
Impacto Potencial: Explotación de vulnerabilidades adicionales/elusiones al poder agregar/modificar datos en una tabla DynamoDB
dynamodb:UpdateItem
dynamodb:UpdateItem
Este permiso permite a los usuarios modificar los atributos existentes de un ítem o agregar nuevos atributos a un ítem. No reemplaza el ítem completo; solo actualiza los atributos especificados. Si la clave primaria no existe en la tabla, la operación creará un nuevo ítem con la clave primaria especificada y establecerá los atributos especificados en la expresión de actualización.
Impacto Potencial: Explotación de más vulnerabilidades/bypasses al poder agregar/modificar datos en una tabla DynamoDB
dynamodb:DeleteTable
dynamodb:DeleteTable
Un atacante con este permiso puede eliminar una tabla DynamoDB, causando pérdida de datos.
Impacto potencial: Pérdida de datos y interrupción de servicios que dependen de la tabla eliminada.
dynamodb:DeleteBackup
dynamodb:DeleteBackup
Un atacante con este permiso puede eliminar una copia de seguridad de DynamoDB, lo que podría causar pérdida de datos en caso de un escenario de recuperación ante desastres.
Impacto potencial: Pérdida de datos e incapacidad de recuperarse de una copia de seguridad durante un escenario de recuperación ante desastres.
dynamodb:StreamSpecification
, dynamodb:UpdateTable
, dynamodb:DescribeStream
, dynamodb:GetShardIterator
, dynamodb:GetRecords
dynamodb:StreamSpecification
, dynamodb:UpdateTable
, dynamodb:DescribeStream
, dynamodb:GetShardIterator
, dynamodb:GetRecords
TODO: Probar si esto realmente funciona
Un atacante con estos permisos puede habilitar un stream en una tabla de DynamoDB, actualizar la tabla para comenzar a transmitir cambios y luego acceder al stream para monitorear los cambios en la tabla en tiempo real. Esto permite al atacante monitorear y exfiltrar cambios de datos, lo que potencialmente lleva a una fuga de datos.
Habilitar un stream en una tabla de DynamoDB:
Describir el stream para obtener el ARN y otros detalles:
Obtener el iterador de fragmentos usando el ARN del stream:
Usa el iterador de fragmentos para acceder y exfiltrar datos del stream:
Impacto potencial: Monitoreo en tiempo real y fuga de datos de los cambios en la tabla DynamoDB.
Last updated