AWS - DynamoDB Post Exploitation
DynamoDB
Per maggiori informazioni controlla:
AWS - DynamoDB Enumdynamodb:BatchGetItem
dynamodb:BatchGetItem
Un attaccante con questi permessi sarà in grado di ottenere elementi dalle tabelle tramite la chiave primaria (non puoi semplicemente chiedere tutti i dati della tabella). Questo significa che devi conoscere le chiavi primarie (puoi ottenerle ottenendo i metadati della tabella (describe-table
).
Impatto Potenziale: Privilegi indiretti trovando informazioni sensibili nella tabella
dynamodb:GetItem
dynamodb:GetItem
Simile alle autorizzazioni precedenti questa permette a un potenziale attaccante di leggere valori da una sola tabella dato il primary key dell'elemento da recuperare:
Con questo permesso è anche possibile utilizzare il metodo transact-get-items
come:
Impatto Potenziale: Privilegi indiretti ottenuti localizzando informazioni sensibili nella tabella
dynamodb:Query
dynamodb:Query
Simile ai permessi precedenti questo permette a un potenziale attaccante di leggere valori da una sola tabella dato il primary key dell'entry da recuperare. Permette di usare un sottoinsieme di confronti, ma l'unico confronto permesso con il primary key (che deve apparire) è "EQ", quindi non è possibile usare un confronto per ottenere l'intero DB in una richiesta.
Impatto Potenziale: Privilegi elevati indiretti trovando informazioni sensibili nella tabella
dynamodb:Scan
dynamodb:Scan
Puoi usare questo permesso per scaricare facilmente l'intera tabella.
Impatto Potenziale: Privilegi indiretti ottenuti localizzando informazioni sensibili nella tabella
dynamodb:PartiQLSelect
dynamodb:PartiQLSelect
Puoi usare questo permesso per scaricare facilmente l'intera tabella.
Questa autorizzazione consente anche di eseguire batch-execute-statement
come:
ma è necessario specificare la chiave primaria con un valore, quindi non è così utile.
Impatto Potenziale: Privilegi elevati indiretti individuando informazioni sensibili nella tabella
dynamodb:ExportTableToPointInTime|(dynamodb:UpdateContinuousBackups)
dynamodb:ExportTableToPointInTime|(dynamodb:UpdateContinuousBackups)
Questa autorizzazione permetterà a un attaccante di esportare l'intera tabella in un bucket S3 di sua scelta:
Nota che affinché questo funzioni, la tabella deve avere il point-in-time-recovery abilitato, puoi verificare se la tabella lo ha con:
Se non è abilitato, sarà necessario abilitarlo e per questo è necessaria l'autorizzazione dynamodb:ExportTableToPointInTime
:
Potenziale Impatto: Privilegi elevati indiretti individuando informazioni sensibili nella tabella
dynamodb:CreateTable
, dynamodb:RestoreTableFromBackup
, (dynamodb:CreateBackup)
dynamodb:CreateTable
, dynamodb:RestoreTableFromBackup
, (dynamodb:CreateBackup)
Con questi permessi, un attaccante sarebbe in grado di creare una nuova tabella da un backup (o anche creare un backup per poi ripristinarlo in una tabella diversa). Poi, con i permessi necessari, sarebbe in grado di controllare informazioni dai backup che potrebbero non essere più nella tabella di produzione.
Potenziale Impatto: Privilegi elevati indiretti individuando informazioni sensibili nel backup della tabella
dynamodb:PutItem
dynamodb:PutItem
Questa autorizzazione consente agli utenti di aggiungere un nuovo elemento alla tabella o sostituire un elemento esistente con un nuovo elemento. Se un elemento con la stessa chiave primaria esiste già, l'intero elemento verrà sostituito con il nuovo elemento. Se la chiave primaria non esiste, verrà creato un nuovo elemento con la chiave primaria specificata.
Impatto Potenziale: Sfruttamento di ulteriori vulnerabilità/bypass grazie alla possibilità di aggiungere/modificare dati in una tabella DynamoDB
dynamodb:UpdateItem
dynamodb:UpdateItem
Questo permesso consente agli utenti di modificare gli attributi esistenti di un elemento o aggiungere nuovi attributi a un elemento. Non sostituisce l'intero elemento; aggiorna solo gli attributi specificati. Se la chiave primaria non esiste nella tabella, l'operazione creerà un nuovo elemento con la chiave primaria specificata e imposterà gli attributi specificati nell'espressione di aggiornamento.
Impatto Potenziale: Sfruttamento di ulteriori vulnerabilità/bypass potendo aggiungere/modificare dati in una tabella DynamoDB
dynamodb:DeleteTable
dynamodb:DeleteTable
Un attaccante con questo permesso può eliminare una tabella DynamoDB, causando perdita di dati.
Impatto potenziale: Perdita di dati e interruzione dei servizi che dipendono dalla tabella eliminata.
dynamodb:DeleteBackup
dynamodb:DeleteBackup
Un attaccante con questo permesso può eliminare un backup di DynamoDB, causando potenzialmente una perdita di dati in caso di scenario di disaster recovery.
Impatto potenziale: Perdita di dati e incapacità di recuperare da un backup durante uno scenario di disaster recovery.
dynamodb:StreamSpecification
, dynamodb:UpdateTable
, dynamodb:DescribeStream
, dynamodb:GetShardIterator
, dynamodb:GetRecords
dynamodb:StreamSpecification
, dynamodb:UpdateTable
, dynamodb:DescribeStream
, dynamodb:GetShardIterator
, dynamodb:GetRecords
TODO: Testare se funziona effettivamente
Un attaccante con questi permessi può abilitare uno stream su una tabella DynamoDB, aggiornare la tabella per iniziare a trasmettere le modifiche e poi accedere allo stream per monitorare le modifiche alla tabella in tempo reale. Questo permette all'attaccante di monitorare ed esfiltrare le modifiche ai dati, potenzialmente portando a una fuga di dati.
Abilitare uno stream su una tabella DynamoDB:
Descrivi lo stream per ottenere l'ARN e altri dettagli:
Ottieni l'iteratore dello shard utilizzando lo stream ARN:
Utilizzare l'iteratore di shard per accedere ed esfiltrare i dati dal flusso:
Impatto potenziale: Monitoraggio in tempo reale e perdita di dati delle modifiche della tabella DynamoDB.
Last updated