Bu izinlere sahip bir saldırgan, birincil anahtar kullanarak tablolardan öğeleri alabilecektir (sadece tablonun tüm verilerini isteyemezsiniz). Bu, birincil anahtarları bilmeniz gerektiği anlamına gelir (tablo meta verilerini alarak bunu elde edebilirsiniz (describe-table).
Potansiyel Etki: Tabloda hassas bilgileri bulmak suretiyle dolaylı bir ayrıcalık yükseltme
dynamodb:GetItem
Önceki izinlere benzer şekilde, bu izin potansiyel bir saldırganın, alınacak girişin birincil anahtarını vererek sadece 1 tablodan değerleri okumasına olanak tanır:
aws dynamodb get-item --table-name ProductCatalog --key file:///tmp/a.json// With a.json{"Id": {"N":"205"}}
Bu izinle birlikte transact-get-items yöntemini de kullanmak mümkündür:
aws dynamodb transact-get-items \--transact-items file:///tmp/a.json// With a.json[{"Get": {"Key": {"Id": {"N":"205"}},"TableName":"ProductCatalog"}}]
Potansiyel Etki: Hassas bilgilerin tabloda bulunarak dolaylı bir şekilde ayrıcalık yükseltilmesi
dynamodb:Query
Önceki izinlere benzer şekilde, bu izin potansiyel bir saldırganın, geri almak için girişin birincil anahtarını vererek yalnızca 1 tablodan değerleri okumasına olanak tanır. Karşılaştırmaların bir alt kümesine izin verir, ancak birincil anahtarla yapılan tek izin verilen karşılaştırma "EQ" olduğundan, bir istekte tüm veritabanını almak için bir karşılaştırma kullanamazsınız.
Bu izinlerle, bir saldırgan bir yedekten yeni bir tablo oluşturabilir (veya hatta bir yedek oluşturup daha sonra farklı bir tabloda geri yükleyebilir). Ardından, gerekli izinlerle, üretim tablosunda artık bulunmayan yedeklerden bilgi kontrol edebilir.
Bu izin, kullanıcıların tabloya yeni bir öğe eklemesine veya mevcut bir öğeyi yeni bir öğeyle değiştirmesine izin verir. Aynı birincil anahtara sahip bir öğe zaten varsa, tüm öğe yeni öğeyle değiştirilecektir. Birincil anahtar mevcut değilse, belirtilen birincil anahtara sahip yeni bir öğe oluşturulur.
## Create new item with XSS payloadawsdynamodbput-item--table<table_name>--itemfile://add.json### With add.json:{"Id":{"S":"1000"},"Name":{"S":"Marc"},"Description":{"S":"<script>alert(1)</script>"}}
Potansiyel Etki: Bir DynamoDB tablosunda veri ekleyerek veya değiştirerek daha fazla zafiyet/bypassın sömürülmesi
dynamodb:UpdateItem
Bu izin, kullanıcıların bir öğenin mevcut özniteliklerini değiştirmesine veya bir öğeye yeni öznitelikler eklemesine olanak tanır. Tüm öğeyi değiştirmez, yalnızca belirtilen öznitelikleri günceller. Eğer birincil anahtar tabloda mevcut değilse, işlem belirtilen birincil anahtara sahip yeni bir öğe oluşturacak ve güncelleme ifadesinde belirtilen öznitelikleri ayarlayacaktır.
## Update item with XSS payloadawsdynamodbupdate-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>"}}
Bu izinlere sahip bir saldırgan, bir DynamoDB tablosunda bir akışı etkinleştirebilir, tabloyu güncellemek için akışı başlatabilir ve ardından tablodaki değişiklikleri izlemek için akışa erişebilir. Bu, saldırganın veri değişikliklerini izlemesine ve potansiyel olarak veri sızıntısına yol açabilecek veri değişikliklerini dışarıya aktarmasına olanak tanır.
ARN ve diğer ayrıntıları elde etmek için akışı açıklayın:
To obtain the ARN and other details of a stream, you can use the following steps:
1. List all the available streams in the DynamoDB service by using the `list-streams` command.
2. Identify the target stream from the list and note down its name.
3. Use the `describe-stream` command along with the stream name to get detailed information about the stream.
4. Look for the `StreamArn` field in the output, which represents the ARN (Amazon Resource Name) of the stream.
5. Note down any other relevant details provided in the output, such as the stream status, creation time, and encryption settings.
By following these steps, you can obtain the ARN and other important details of a stream in AWS DynamoDB.
Bir akışın ARN'sini ve diğer ayrıntılarını elde etmek için aşağıdaki adımları kullanabilirsiniz:
1. `list-streams` komutunu kullanarak DynamoDB hizmetindeki mevcut akışları listele.
2. Listeden hedef akışı belirleyin ve adını not alın.
3. Akışın ayrıntılı bilgilerini almak için akış adıyla birlikte `describe-stream` komutunu kullanın.
4. Çıktıda `StreamArn` alanını arayın, bu alan akışın ARN'sini (Amazon Kaynak Adı) temsil eder.
5. Çıktıda sağlanan diğer ilgili ayrıntıları, akış durumu, oluşturma zamanı ve şifreleme ayarları gibi not alın.
Bu adımları takip ederek, AWS DynamoDB'deki bir akışın ARN'sini ve diğer önemli ayrıntılarını elde edebilirsiniz.