AWS - DynamoDB Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Amazon DynamoDB è presentato da AWS come un database NoSQL chiave-valore completamente gestito e serverless, progettato per alimentare applicazioni ad alte prestazioni indipendentemente dalle loro dimensioni. Il servizio garantisce funzionalità robuste, inclusi misure di sicurezza intrinseche, backup ininterrotti, replica automatizzata in più regioni, caching in memoria integrato e utilità di esportazione dei dati convenienti.
Nel contesto di DynamoDB, invece di stabilire un database tradizionale, vengono create tabelle. Ogni tabella richiede la specifica di una chiave di partizione come componente integrante della chiave primaria della tabella. Questa chiave di partizione, essenzialmente un valore hash, gioca un ruolo critico sia nel recupero degli elementi che nella distribuzione dei dati tra vari host. Questa distribuzione è fondamentale per mantenere sia la scalabilità che la disponibilità del database. Inoltre, c'è un'opzione per incorporare una chiave di ordinamento per affinare ulteriormente l'organizzazione dei dati.
Per impostazione predefinita, DynamoDB utilizza una chiave KMS che appartiene ad Amazon DynamoDB, non nemmeno alla chiave gestita da AWS che almeno appartiene al tuo account.
È possibile pianificare la generazione di backup delle tabelle o crearli su richiesta. Inoltre, è anche possibile abilitare il recupero a un punto nel tempo (PITR) per una tabella. Il recupero a un punto nel tempo fornisce backup continui dei tuoi dati DynamoDB per 35 giorni per aiutarti a proteggerti da operazioni di scrittura o cancellazione accidentali.
È anche possibile esportare i dati di una tabella in S3, ma la tabella deve avere PITR abilitato.
C'è una GUI per i servizi Dynamo locali come DynamoDB Local, dynalite, localstack, ecc, che potrebbe essere utile: https://github.com/aaronshaf/dynamodb-admin
Ci sono modi per accedere ai dati di DynamoDB con sintassi SQL, quindi, tipiche iniezioni SQL sono anche possibili.
In DynamoDB possono essere utilizzate diverse condizioni per recuperare dati, come in una comune iniezione NoSQL se è possibile collegare più condizioni per recuperare dati potresti ottenere dati nascosti (o scaricare l'intera tabella). Puoi trovare qui le condizioni supportate da DynamoDB: https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html
Nota che diverse condizioni sono supportate se i dati vengono accessi tramite query
o tramite scan
.
In realtà, le azioni Query devono specificare la condizione "EQ" (uguale) nella chiave primaria per funzionare, rendendola molto meno soggetta a iniezioni NoSQL (e rendendo anche l'operazione molto limitata).
Se puoi cambiare il confronto effettuato o aggiungerne di nuovi, potresti recuperare più dati.
Questa vulnerabilità si basa su Scan Filter di dynamodb che ora è deprecato!
DynamoDB accetta oggetti Json per cercare dati all'interno del DB. Se scopri che puoi scrivere nell'oggetto json inviato per la ricerca, potresti eseguire il dump del DB, tutto il contenuto.
Ad esempio, iniettando in una richiesta come:
un attaccante potrebbe iniettare qualcosa come:
1000"}],"ComparisonOperator": "GT","AttributeValueList": [{"N": "0
correggere la condizione "EQ" cercando l'ID 1000 e poi cercando tutti i dati con una stringa Id maggiore di 0, che è tutto.
Un altro esempio vulnerabile che utilizza un login potrebbe essere:
Questo sarebbe vulnerabile a:
Alcuni SDK consentono di utilizzare una stringa che indica il filtraggio da eseguire, come:
Devi sapere che cercare in DynamoDB per sostituire un valore di attributo nelle espressioni di filtro mentre si scansionano gli elementi, i token devono iniziare con il carattere :
. Tali token saranno sostituiti con il reale valore dell'attributo a runtime.
Pertanto, un login come quello precedente può essere bypassato con qualcosa del tipo:
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica l'hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)