AWS - IAM ポストエクスプロイテーション
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を提出してハッキングトリックを共有してください。
IAM
IAM アクセスに関する詳細情報:
AWS - IAM, Identity Center & SSO Enum
混乱した代理人問題
もしあなたが 外部アカウント (A) にあなたのアカウントの ロール へのアクセスを許可すると、あなたは その外部アカウントに正確にアクセスできる人が誰かについての可視性がゼロ になるでしょう。これは問題です。なぜなら、別の外部アカウント (B) が外部アカウント (A) にアクセスできる場合、Bもあなたのアカウントにアクセスできる可能性があるからです。
したがって、外部アカウントがあなたのアカウントのロールにアクセスすることを許可する際には、ExternalId
を指定することが可能です。これは、外部アカウント (A) が あなたの組織のロールを引き受けるために指定する必要がある "秘密" の文字列です。外部アカウント B はこの文字列を知らないため、A にアクセスできても、あなたのロールにアクセスすることはできません。
.png)
ただし、この ExternalId
の "秘密" は 秘密ではありません。IAM のロール引き受けポリシーを 読むことができる人は誰でもそれを見ることができます。しかし、外部アカウント A がそれを知っていて、外部アカウント B がそれを知らない限り、B が A を悪用してあなたのロールにアクセスすることを防ぎます。
例:
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {
"AWS": "Example Corp's AWS Account ID"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "12345"
}
}
}
}
warning
攻撃者が混乱した代理人を悪用するには、現在のアカウントのプリンシパルが他のアカウントのロールを偽装できるかどうかを何らかの方法で見つける必要があります。
予期しない信頼
プリンシパルとしてのワイルドカード
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": { "AWS": "*" }
}
このポリシーはすべてのAWSがロールを引き受けることを許可します。
サービスを主体として
{
"Action": "lambda:InvokeFunction",
"Effect": "Allow",
"Principal": { "Service": "apigateway.amazonaws.com" },
"Resource": "arn:aws:lambda:000000000000:function:foo"
}
このポリシーは任意のアカウントが自分のapigatewayを設定してこのLambdaを呼び出すことを許可します。
S3をプリンシパルとして
"Condition": {
"ArnLike": { "aws:SourceArn": "arn:aws:s3:::source-bucket" },
"StringEquals": {
"aws:SourceAccount": "123456789012"
}
}
S3バケットがプリンシパルとして指定されている場合、S3バケットにはアカウントIDがないため、バケットを削除し、攻撃者が自分のアカウントで作成した場合、彼らはこれを悪用することができます。
サポートされていません
{
"Effect": "Allow",
"Principal": { "Service": "cloudtrail.amazonaws.com" },
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::myBucketName/AWSLogs/MY_ACCOUNT_ID/*"
}
Confused Deputyの問題を回避する一般的な方法は、AWS:SourceArn
を使用して起源ARNを確認する条件を使用することです。しかし、一部のサービスはそれをサポートしていない可能性があります(いくつかの情報源によるとCloudTrailのように)。
参考文献
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を提出してハッキングトリックを共有してください。