AWS - DynamoDB Enum
DynamoDB
Temel Bilgiler
Amazon DynamoDB, AWS tarafından sunulan, boyutlarına bakılmaksızın yüksek performanslı uygulamaları desteklemek için özelleştirilmiş, tamamen yönetilen, sunucusuz, anahtar-değer NoSQL veritabanı olarak sunulur. Hizmet, kesintisiz yedeklemeler, otomatik olarak birden çok bölgeye yayılan replikasyon, bellek içi önbellekleme ve kullanışlı veri dışa aktarma araçları gibi güçlü özellikleri sağlar.
DynamoDB bağlamında, geleneksel bir veritabanı yerine tablo oluşturulur. Her tablo, tablonun birincil anahtarının ayrılmaz bir bileşeni olarak bir bölüm anahtarının belirtilmesini gerektirir. Bu bölüm anahtarı, temelde bir hash değeri olan, hem öğelerin alınması hem de verinin çeşitli ana bilgisayarlara dağıtılması açısından kritik bir rol oynar. Bu dağıtım, veritabanının ölçeklenebilirliğini ve kullanılabilirliğini sağlamak için önemlidir. Ayrıca, veri düzenini daha da geliştirmek için bir sıralama anahtarı dahil etme seçeneği vardır.
Şifreleme
Varsayılan olarak, DynamoDB, en azından hesabınıza ait olan AWS yönetilen anahtara ait olmayan, Amazon DynamoDB'ye ait bir KMS anahtarını kullanır.
Yedeklemeler ve S3'e Aktarma
Tablo yedeklemelerinin zamanlanması veya talep üzerine oluşturulması mümkündür. Ayrıca, bir tablo için Zamana Göre Kurtarma (PITR) özelliğini etkinleştirmek de mümkündür. Zamana göre kurtarma, yanlışlıkla yazma veya silme işlemlerine karşı korunmanıza yardımcı olmak için DynamoDB verilerinizin 35 gün boyunca sürekli olarak yedeklenmesini sağlar.
Ayrıca, bir tablonun verilerini S3'e aktarmak da mümkündür, ancak tablonun PITR özelliğine sahip olması gerekmektedir.
GUI
DynamoDB Local, dynalite, localstack gibi yerel Dynamo hizmetleri için bir GUI mevcuttur ve bu https://github.com/aaronshaf/dynamodb-admin adresinden erişilebilir.
Enumerasyon
DynamoDB Enümerasyonu
Kimlik Doğrulama Gerektirmeyen Erişim
AWS - DynamoDB Unauthenticated Accessİzin Yükseltme
AWS - DynamoDB PrivescSaldırı Sonrası
AWS - DynamoDB Post ExploitationKalıcılık
AWS - DynamoDB PersistenceDynamoDB Enjeksiyonu
SQL Enjeksiyonu
DynamoDB verilerine SQL sözdizimi ile erişmenin yolları vardır, bu nedenle tipik SQL enjeksiyonları da mümkündür.
NoSQL Enjeksiyonu
DynamoDB'de farklı koşullar kullanılarak veri alınabilir, bu nedenle yaygın bir NoSQL Enjeksiyonunda olduğu gibi daha fazla koşul ekleyerek veri alabilirsiniz (veya tüm tabloyu dökümleyebilirsiniz). DynamoDB tarafından desteklenen koşulları burada bulabilirsiniz: https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html
Not olarak, veri sorgu
veya tarama
yoluyla erişiliyorsa, farklı koşullar desteklenir.
Aslında, Sorgu işlemleri, işlemin çok sınırlı olmasını sağlamak için anahtar olarak "EQ" (eşit) koşulunu belirtmek zorundadır, bu da NoSQL enjeksiyonlarına karşı daha az duyarlı hale getirir.
Eğer karşılaştırma yapılanı değiştirebilir veya yeni karşılaştırmalar ekleyebilirseniz, daha fazla veri alabilirsiniz.
Ham Json enjeksiyonu
DynamoDB, DB içindeki verileri aramak için Json nesnelerini kabul eder. Eğer gönderilen json nesnesine yazabileceğinizi bulursanız, DB'nin tüm içeriğini sızdırabilirsiniz.
Örneğin, aşağıdaki gibi bir isteğe enjeksiyon yaparak:
Bir saldırgan şöyle bir şey enjekte edebilir:
1000"}],"ComparisonOperator": "GT","AttributeValueList": [{"N": "0
"EQ" koşulunu düzeltin ve 1000 ID'sini arayın ve ardından 0'dan büyük bir Id dizesi olan tüm verileri arayın, yani hepsi.
:property Enjeksiyonu
Bazı SDK'lar, yapılacak filtrelemeyi belirten bir dize kullanmaya izin verir:
DynamoDB'de öğeleri tarama sırasında bir özniteliğin değerini filtre ifadelerinde değiştirmek için arama yaparken, belirteçlerin :
karakteri ile başlaması gerektiğini bilmelisiniz. Bu tür belirteçler, çalışma zamanında gerçek öznitelik değeriyle değiştirilecektir.
Bu nedenle, önceki gibi bir giriş, aşağıdaki gibi atlatılabilir:
Last updated