AWS - DynamoDB Enum
DynamoDB
Osnovne informacije
Amazon DynamoDB je predstavljen od strane AWS-a kao potpuno upravljana, serverless, key-value NoSQL baza podataka, prilagođena za napajanje visokoperformantnih aplikacija bez obzira na njihovu veličinu. Usluga obezbeđuje robustne funkcionalnosti uključujući inherentne sigurnosne mere, neprekidne rezervne kopije, automatsku replikaciju širom više regiona, integrisano keširanje u memoriji i praktične alate za izvoz podataka.
U kontekstu DynamoDB-a, umesto uspostavljanja tradicionalne baze podataka, kreiraju se tabele. Svaka tabela zahteva specifikaciju particionog ključa kao integralne komponente primarnog ključa tabele. Ovaj particioni ključ, u osnovi vrednost heša, igra ključnu ulogu kako u povlačenju stavki tako i u distribuciji podataka širom različitih domaćina. Ova distribucija je ključna za održavanje skalabilnosti i dostupnosti baze podataka. Dodatno, postoji opcija za uključivanje ključa za sortiranje radi daljeg usavršavanja organizacije podataka.
Enkripcija
Podrazumevano, DynamoDB koristi KMS ključ koji **pripada Amazon DynamoDB-u,**a ne čak ni AWS upravljani ključ koji bar pripada vašem nalogu.
Rezervne kopije & Izvoz u S3
Moguće je zakazati generisanje rezervnih kopija tabela ili ih kreirati po zahtevu. Takođe, moguće je omogućiti Point-in-time recovery (PITR) za tabelu. Point-in-time recovery obezbeđuje neprekidne rezervne kopije vaših podataka iz DynamoDB-a tokom 35 dana kako bi vam pomogao da se zaštitite od slučajnih operacija upisa ili brisanja.
Takođe je moguće izvesti podatke tabele u S3, ali tabela mora imati omogućen PITR.
Grafički interfejs
Postoji grafički interfejs za lokalne Dynamo usluge poput DynamoDB Local, dynalite, localstack, itd, koji može biti koristan: https://github.com/aaronshaf/dynamodb-admin
Enumeracija
Neautentifikovan pristup
AWS - DynamoDB Unauthenticated AccessPrivesc
AWS - DynamoDB PrivescPost Eksploatacija
AWS - DynamoDB Post ExploitationUpornost
AWS - DynamoDB PersistenceDynamoDB Injekcija
SQL Injekcija
Postoje načini za pristup podacima DynamoDB-a sa SQL sintaksom, stoga su tipične SQL injekcije takođe moguće.
NoSQL Injekcija
U DynamoDB-u se mogu koristiti različiti uslovi za povlačenje podataka, kao uobičajena NoSQL injekcija, ako je moguće povezati više uslova za povlačenje podataka, mogli biste dobiti skrivene podatke (ili dumpovati celu tabelu). Ovde možete pronaći uslove podržane od strane DynamoDB-a: https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html
Imajte na umu da su podržani različiti uslovi ako se podaci pristupaju putem query
ili putem scan
.
Zapravo, Query akcije moraju specificirati uslov "EQ" (jednako) u primarnom ključu da bi radile, čineći je mnogo manje podložnom za NoSQL injekcije (i takođe čineći operaciju veoma ograničenom).
Ako možete promeniti upoređenje koje se vrši ili dodati nove, mogli biste povući više podataka.
Sirova Json injekcija
DynamoDB prihvata Json objekte za pretragu podataka unutar baze podataka. Ako otkrijete da možete pisati u json objektu poslatom za pretragu, možete izvršiti dump baze podataka, odnosno sve sadržaje.
Na primer, injektiranjem u zahtev poput:
napadač bi mogao ubaciti nešto poput:
1000"}],"ComparisonOperator": "GT","AttributeValueList": [{"N": "0
popraviti "EQ" uslov tražeći ID 1000, a zatim tražiti sve podatke sa Id stringom većim od 0, što je sve.
:property Injection
Neki SDK-ovi omogućavaju korišćenje stringa koji označava filtriranje koje treba izvršiti poput:
Morate znati da prilikom pretrage u DynamoDB-u za zamenu vrednosti atributa u filter izrazima prilikom skeniranja stavki, tokeni treba da počinju sa karakterom :
. Takvi tokeni će biti zamenjeni stvarnom vrednošću atributa u vreme izvršavanja.
Stoga, login kao prethodni može biti zaobiđen nečim poput:
Last updated