AWS - DynamoDB Enum
DynamoDB
기본 정보
Amazon DynamoDB는 크기에 관계없이 고성능 애플리케이션을 구동하기 위해 맞춤 설정된, 완전히 관리되고 서버리스인 키-값 NoSQL 데이터베이스로 AWS에서 제공됩니다. 이 서비스는 내재된 보안 조치, 중단 없는 백업, 여러 지역 간 자동 복제, 통합형 인메모리 캐싱 및 편리한 데이터 내보내기 유틸리티를 포함한 강력한 기능을 보장합니다.
DynamoDB의 맥락에서, 전통적인 데이터베이스를 설정하는 대신 테이블이 생성됩니다. 각 테이블은 테이블의 기본 키의 필수 구성 요소로 파티션 키의 지정을 요구합니다. 이 파티션 키는 본질적으로 해시 값으로, 항목을 검색하고 데이터를 다양한 호스트에 분산하는 데 중요한 역할을 합니다. 이 분산은 데이터베이스의 확장성과 가용성을 유지하는 데 중요합니다. 또한 데이터 구성을 더 세밀하게 정의하기 위해 정렬 키를 통합하는 옵션이 있습니다.
암호화
기본적으로 DynamoDB는 Amazon DynamoDB에 속하는 KMS 키를 사용하며, 적어도 귀하의 계정에 속하는 AWS 관리형 키가 아닙니다.
백업 및 S3로 내보내기
테이블 백업을 예약하거나 요청에 따라 생성할 수 있습니다. 또한 테이블에 대한 시점 복구 (PITR)를 활성화할 수도 있습니다. 시점 복구는 35일 동안 DynamoDB 데이터의 지속적인 백업을 제공하여 우연한 쓰기 또는 삭제 작업에 대비할 수 있도록 도와줍니다.
또한 테이블의 데이터를 S3로 내보낼 수 있지만, 테이블은 PITR를 활성화해야 합니다.
GUI
DynamoDB Local, dynalite, localstack 등 로컬 Dynamo 서비스에 대한 GUI가 있어 유용할 수 있습니다: https://github.com/aaronshaf/dynamodb-admin
열거
인증되지 않은 액세스
AWS - DynamoDB Unauthenticated Access권한 상승
AWS - DynamoDB Privesc사후 공격
AWS - DynamoDB Post Exploitation지속성
AWS - DynamoDB PersistenceDynamoDB Injection
SQL Injection
SQL 구문을 사용하여 DynamoDB 데이터에 액세스하는 방법이 있으므로, 전형적인 SQL 인젝션도 가능합니다.
NoSQL Injection
DynamoDB에서는 다양한 조건을 사용하여 데이터를 검색할 수 있으며, 일반적인 NoSQL Injection과 같이 데이터를 검색하는 데 더 많은 조건을 연결할 수 있다면 숨겨진 데이터를 얻거나 전체 테이블을 덤프할 수 있습니다. DynamoDB에서 지원하는 조건은 여기에서 찾을 수 있습니다: https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html
데이터에 query
또는 **scan
**을 통해 액세스하는 경우 다른 조건이 지원됨을 유의하십시오.
실제로 Query 작업은 작동하려면 기본 키에서 **조건 "EQ (equals)"**을 지정해야 하므로 NoSQL 인젝션에 덜 취약하며 (또한 작업을 매우 제한함).
수행되는 비교를 변경하거나 새로운 비교를 추가할 수 있다면 더 많은 데이터를 검색할 수 있습니다.
Raw Json injection
DynamoDB은 데이터베이스 내에서 데이터를 검색하기 위해 Json 객체를 허용합니다. 검색에 보내는 json 객체에 쓸 수 있다면, 데이터베이스 덤프를 만들어 모든 내용을 볼 수 있습니다.
예를 들어, 다음과 같이 요청에 주입하는 경우:
공격자는 다음과 같이 삽입할 수 있습니다:
1000"}],"ComparisonOperator": "GT","AttributeValueList": [{"N": "0
ID 1000을 검색하고 Id 문자열이 0보다 큰 모든 데이터를 찾는 "EQ" 조건을 수정할 수 있습니다.
:property Injection
일부 SDK는 수행할 필터링을 나타내는 문자열을 사용할 수 있습니다:
DynamoDB에서 항목을 스캔하는 동안 필터 표현식에서 속성 값을 대체하기 위해 검색할 때, 토큰은 :
문자로 시작해야 합니다. 이러한 토큰은 실행 시간에 실제 속성 값으로 대체됩니다.
따라서 이전과 같은 로그인은 다음과 같이 우회될 수 있습니다:
Last updated