AWS - DynamoDB Enum

Jifunze kuhusu udukuzi wa AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

DynamoDB

Taarifa Msingi

Amazon DynamoDB inapendekezwa na AWS kama database ya NoSQL ya aina ya kuhifadhi, bila seva, yenye thamani ya msingi, iliyoundwa kwa ajili ya kuendesha programu zenye utendaji wa juu bila kujali ukubwa wao. Huduma hii inahakikisha vipengele imara ikiwa ni pamoja na hatua za usalama asili, nakala rudufu isiyosimama, nakala rudufu iliyowekwa kiotomatiki katika mikoa mingi, uwekaji wa cache ya kumbukumbu, na zana za kuuza data kwa urahisi.

Katika muktadha wa DynamoDB, badala ya kuanzisha database ya jadi, meza huanzishwa. Kila meza inahitaji maelezo ya funguo la sehemu kama sehemu muhimu ya funguo kuu la meza. Funguo hili la sehemu, kimsingi thamani ya hash, inacheza jukumu muhimu katika kupata vitu na usambazaji wa data kote kwenye wenyewe. Usambazaji huu ni muhimu kwa ajili ya kudumisha uwezo na upatikanaji wa database. Aidha, kuna chaguo la kuingiza funguo la aina ili kuboresha zaidi utaratibu wa data.

Ufichaji

Kwa chaguo-msingi, DynamoDB hutumia ufunguo wa KMS ambao **unamilikiwa na Amazon DynamoDB,**hata sio ufunguo uliosimamiwa na AWS ambao angalau unamilikiwa na akaunti yako.

Nakala Rudufu & Kuuza kwa S3

Inawezekana kupanga kizazi cha nakala rudufu za meza au kuziumba kwa ombi. Zaidi ya hayo, pia inawezekana kuwezesha Kurejesha Wakati wa Muda (PITR) kwa meza. Kurejesha wakati wa muda hutoa nakala rudufu endelevu ya data yako ya DynamoDB kwa siku 35 ili kukusaidia kulinda dhidi ya operesheni za kuandika au kufuta kwa bahati mbaya.

Pia inawezekana kuuza data ya meza kwenda S3, lakini meza inahitaji kuwa na PITR imewezeshwa.

GUI

Kuna GUI kwa huduma za Dynamo za ndani kama DynamoDB Local, dynalite, localstack, n.k, ambazo zinaweza kuwa na manufaa: https://github.com/aaronshaf/dynamodb-admin

Uchambuzi

# 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

Upatikanaji usiothibitishwa

pageAWS - DynamoDB Unauthenticated Access

Privesc

pageAWS - DynamoDB Privesc

Baada ya Uvamizi

pageAWS - DynamoDB Post Exploitation

Uthabiti

pageAWS - DynamoDB Persistence

Uvamizi wa DynamoDB

Uvujaji wa SQL

Kuna njia za kupata data ya DynamoDB na muundo wa SQL, hivyo, uvujaji wa SQL wa kawaida pia ni wa kawaida.

Uvujaji wa NoSQL

Katika DynamoDB masharti tofauti yanaweza kutumika kufikia data, kama katika Uvujaji wa kawaida wa NoSQL ikiwa ni inawezekana kuunganisha masharti zaidi kufikia data unaweza kupata data iliyofichwa (au kudump meza nzima). Unaweza kupata hapa masharti yanayoungwa mkono na DynamoDB: https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html

Tambua kwamba masharti tofauti yanauungwa mkono ikiwa data inafikiwa kupitia query au kupitia scan.

Kwa kweli, hatua za Utafutaji inahitaji kutaja masharti "EQ" (sawa) katika msingi wa funguo ili kufanya kazi, ikifanya iwe chini ya uwezekano wa Uvujaji wa NoSQL (na pia kufanya operesheni iwe ya kikomo sana).

Ikiwa unaweza kubadilisha kulinganisha lililofanywa au kuongeza mpya, unaweza kupata data zaidi.

# 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

Kuingiza Json moja kwa moja

DynamoDB inakubali vitu vya Json kutafuta data ndani ya DB. Ikiwa utagundua unaweza kuandika kwenye kipengee cha json kilichotumwa kutafuta, unaweza kufanya DB itoe, yaliyomo yote.

Kwa mfano, kuingiza katika ombi kama:

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

Mshambuliaji anaweza kuingiza kitu kama hiki:

1000"}],"ComparisonOperator": "GT","AttributeValueList": [{"N": "0

sahihisha hali ya "EQ" kutafuta kitambulisho 1000 na kisha kutafuta data zote na kitambulisho cha nambari kubwa kuliko 0, ambayo ni zote.

:property Injection

Baadhi ya SDK huruhusu kutumia string inayoonyesha uchujaji utakaofanywa kama:

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

Unahitaji kujua kwamba kutafuta katika DynamoDB kwa kubadilisha thamani ya sifa katika maelezo ya kuchuja wakati wa kutafuta vitu, vidole vinapaswa kuanza na herufi :. Vidole kama hivyo vitabadilishwa na thamani halisi ya sifa wakati wa uendeshaji.

Kwa hivyo, kuingia kama ile ya awali inaweza kuepukwa na kitu kama hiki:

:username = :username or :username
# This will generate the query:
# :username = :username or :username = :username and Password = :password
# which is always true
Jifunze kuhusu udukuzi wa AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Last updated