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 se predstavlja kao potpuno upravljana, serverless, key-value NoSQL baza podataka, prilagođena za pokretanje aplikacija visokih performansi bez obzira na njihovu veličinu. Usluga obezbeđuje robusne karakteristike uključujući inherentne mere bezbednosti, neprekidne rezervne kopije, automatsku replikaciju širom više regiona, integrisano keširanje u memoriji i praktične alate za izvoz podataka.
U kontekstu DynamoDB, umesto uspostavljanja tradicionalne baze podataka, kreiraju se tabele. Svaka tabela zahteva specifikaciju ključne particije kao integralnog dela primarnog ključa tabele. Ovaj ključ particije, suštinski hash vrednost, igra ključnu ulogu u preuzimanju stavki i distribuciji podataka širom različitih hostova. Ova distribucija je ključna za održavanje i skalabilnosti i dostupnosti baze podataka. Pored toga, postoji opcija za uključivanje ključnog sortiranja kako bi se dodatno poboljšala organizacija podataka.
Podrazumevano, DynamoDB koristi KMS ključ koji **pripada Amazon DynamoDB,** čak ni AWS upravljani ključ koji barem pripada vašem nalogu.
Moguće je zakazati generisanje rezervnih kopija tabela ili ih kreirati na zahtev. Štaviše, takođe je moguće omogućiti oporavak u tački vremena (PITR) za tabelu. Oporavak u tački vremena obezbeđuje kontinuirane rezervne kopije vaših DynamoDB podataka za 35 dana kako bi vam pomogao da se zaštitite od slučajnih operacija pisanja ili brisanja.
Takođe je moguće izvesti podatke tabele u S3, ali tabela mora imati omogućen PITR.
Postoji GUI za lokalne Dynamo usluge kao što su DynamoDB Local, dynalite, localstack, itd, koji bi mogli biti korisni: https://github.com/aaronshaf/dynamodb-admin
Postoje načini za pristupanje podacima iz DynamoDB koristeći SQL sintaksu, stoga su tipične SQL injekcije takođe moguće.
U DynamoDB različite uslove je moguće koristiti za preuzimanje podataka, kao u uobičajenoj NoSQL injekciji, ako je moguće povezati više uslova za preuzimanje podataka, mogli biste dobiti skrivene podatke (ili izvući celu tabelu). Ovde možete pronaći uslove koje podržava DynamoDB: https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html
Napomena da se različiti uslovi podržavaju ako se podaci pristupaju putem query
ili putem scan
.
U stvari, Query akcije moraju da specificiraju uslov "EQ" (jednako) u primarnom ključu da bi funkcionisale, čineći ih mnogo manje podložnim NoSQL injekcijama (i takođe čineći operaciju veoma ograničenom).
Ako možete promeniti poređenje koje se vrši ili dodati nova, mogli biste preuzeti više podataka.
Ova ranjivost se zasniva na dynamodb Scan Filter koji je sada ukinut!
DynamoDB prihvata Json objekte za pretragu podataka unutar DB-a. Ako otkrijete da možete pisati u json objekt koji se šalje za pretragu, mogli biste napraviti dump DB-a, svih sadržaja.
Na primer, injektovanje u zahtev kao:
napadač bi mogao da ubrizga nešto poput:
1000"}],"ComparisonOperator": "GT","AttributeValueList": [{"N": "0
ispravite "EQ" uslov tražeći ID 1000, a zatim tražeći sve podatke sa ID stringom većim od 0, što je sve.
Još jedan ranjiv primer korišćenja prijave mogao bi biti:
Ovo bi bilo ranjivo na:
Neki SDK-ovi omogućavaju korišćenje stringa koji označava filtriranje koje treba izvršiti kao:
Morate znati da prilikom pretrage u DynamoDB za zamenu vrednosti atributa u filter izrazima dok skenirate stavke, tokeni treba da počnu sa :
karakterom. Takvi tokeni će biti zamenjeni stvarnom vrednosti atributa u vreme izvršavanja.
Stoga, prijava poput prethodne može biti zaobiđena nečim poput:
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)