AWS - DynamoDB Enum

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

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

# Tables
aws dynamodb list-tables
aws dynamodb describe-table --table-name <t_name> #Get metadata info
## The primary key and sort key will appear inside the KeySchema field

#Check if point in time recovery is enabled
aws dynamodb describe-continuous-backups \
--table-name tablename

# Backups
aws dynamodb list-backups
aws dynamodb describe-backup --backup-arn <arn>
aws dynamodb describe-continuous-backups --table-name <t_name>

# Global tables
aws dynamodb list-global-tables
aws dynamodb describe-global-table --global-table-name <name>

# Exports
aws dynamodb list-exports
aws dynamodb describe-export --export-arn <arn>

# Misc
aws dynamodb describe-endpoints #Dynamodb endpoints

Neautentifikovan pristup

Privesc

Post Eksploatacija

Upornost

DynamoDB 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.

# Comparators to dump the database
"NE": "a123" #Get everything that doesn't equal "a123"
"NOT_CONTAINS": "a123" #What you think
"GT": " " #All strings are greater than a space

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:

'{"Id": {"ComparisonOperator": "EQ","AttributeValueList": [{"N": "' + user_input + '"}]}}'

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:

new ScanSpec().withProjectionExpression("UserName").withFilterExpression(user_input+" = :username and Password = :password").withValueMap(valueMap)

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:

:username = :username or :username
# This will generate the query:
# :username = :username or :username = :username and Password = :password
# which is always true
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini da podržite HackTricks:

Last updated