이 권한을 가진 공격자는 기본 키를 사용하여 테이블에서 항목을 가져올 수 있게 됩니다 (테이블의 모든 데이터를 요청할 수는 없습니다). 이는 기본 키를 알아야 한다는 것을 의미합니다 (테이블 메타데이터를 가져와서 기본 키를 얻을 수 있습니다(describe-table를 사용하여)).
이전 권한과 유사하게, 이 권한은 잠재적인 공격자가 검색할 항목의 기본 키를 제공하면 테이블에서 값을 읽을 수 있게 합니다:
aws dynamodb get-item --table-name ProductCatalog --key file:///tmp/a.json// With a.json{"Id": {"N":"205"}}
이 권한을 사용하면 transact-get-items 메서드를 사용할 수도 있습니다:
aws dynamodb transact-get-items \--transact-items file:///tmp/a.json// With a.json[{"Get": {"Key": {"Id": {"N":"205"}},"TableName":"ProductCatalog"}}]
잠재적 영향: 테이블에서 민감한 정보를 찾아 간접적인 권한 상승
dynamodb:Query
이전 권한과 유사하게 이 권한은 잠재적인 공격자가 항목을 검색하기 위해 기본 키를 제공하여 테이블에서 값들을 읽을 수 있게 합니다. 비교의 하위 집합을 사용할 수 있지만, 기본 키와 함께 허용된 유일한 비교는 "EQ"이며, 따라서 요청에서 전체 DB를 가져오기 위해 비교를 사용할 수 없습니다.
이러한 권한을 가지고 있으면 공격자는 백업에서 새 테이블을 생성할 수 있습니다(또는 백업을 생성한 다음 다른 테이블에 복원할 수도 있습니다). 그런 다음 필요한 권한으로 백업에서 정보를 확인할 수 있어서 운영 테이블에 더 이상 없을 수도 있는 정보를 확인할 수 있습니다.
이 권한을 가진 사용자는 새 항목을 테이블에 추가하거나 기존 항목을 새 항목으로 대체할 수 있습니다. 동일한 기본 키를 가진 항목이 이미 존재하는 경우, 전체 항목이 새 항목으로 대체됩니다. 기본 키가 존재하지 않는 경우 지정된 기본 키를 가진 새 항목이 생성됩니다.
## 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>"}}
잠재적인 영향: 다이나모DB 테이블에서 데이터를 추가/수정하여 추가적인 취약점/우회 공격을 수행할 수 있음
dynamodb:UpdateItem
이 권한은 사용자가 아이템의 기존 속성을 수정하거나 새로운 속성을 추가할 수 있게 합니다. 이는 전체 항목을 대체하지 않습니다; 지정된 속성만 업데이트합니다. 테이블에 기본 키가 없는 경우, 작업은 지정된 기본 키를 가진 새 항목을 생성하고 업데이트 식에 지정된 속성을 설정합니다.
## 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>"}}
이 권한을 가진 공격자는 DynamoDB 테이블에 스트림을 활성화하고, 테이블을 업데이트하여 변경 사항을 스트리밍하고, 그 후에 스트림에 액세스하여 테이블의 변경 사항을 실시간으로 모니터링할 수 있습니다. 이를 통해 공격자는 데이터 변경 사항을 모니터링하고 유출할 수 있으며, 이는 잠재적으로 데이터 유출로 이어질 수 있습니다.