AWS - ECS Post Exploitation

htARTE (HackTricks AWS Red Team Expert)でゼロからヒーローまでのAWSハッキングを学ぶ

HackTricksをサポートする他の方法:

ECS

詳細については以下をチェックしてください:

pageAWS - ECS Enum

Host IAM Roles

ECSでは、コンテナ内で実行されているタスクにIAMロールを割り当てることができます。タスクがEC2インスタンス内で実行されている場合、EC2インスタンスには別のIAMロールが添付されています。 つまり、ECSインスタンスを侵害することができれば、ECRとEC2インスタンスに関連付けられたIAMロールを取得する可能性があります。これらの資格情報を取得する方法についての詳細は以下をチェックしてください:

IMDSv2を強制しているEC2インスタンスの場合、ドキュメントによるとPUTリクエストのレスポンスにはホップリミットが1になるため、EC2インスタンス内のコンテナからEC2メタデータにアクセスすることは不可能です。

ノードへのPrivescで他のコンテナのcreds & secretsを盗む

さらに、EC2はECsタスクを実行するためにdockerを使用しているため、ノードにエスケープするかdockerソケットにアクセスすることができれば、実行されている他のコンテナチェックし、それらの中に入り込んで、添付されているIAMロールを盗むことができます。

現在のホストでコンテナを実行する

さらに、EC2インスタンスロールは通常、クラスタ内のノードとして使用されているEC2インスタンスのコンテナインスタンス状態を更新するのに十分な権限を持っています。攻撃者はインスタンスの状態をDRAININGに変更することができ、その後ECSはそのインスタンスからすべてのタスクを削除しREPLICAとして実行されているタスクは別のインスタンスで実行されます。これにより、攻撃者は自分のインスタンス内でそれらを実行し、IAMロールを盗むことができ、コンテナ内の機密情報を盗む可能性があります。

aws ecs update-container-instances-state \
--cluster <cluster> --status DRAINING --container-instances <container-instance-id>

同じテクニックは、クラスターからEC2インスタンスを登録解除することによっても実行できます。これは潜在的に目立つ可能性がありますが、タスクが他のインスタンスで実行されるように強制します:

aws ecs deregister-container-instance \
--cluster <cluster> --container-instance <container-instance-id> --force

最終的なタスクの再実行を強制する手法は、ECSにタスクまたはコンテナが停止したことを示すことです。これを行うための3つの潜在的なAPIがあります:

# Needs: ecs:SubmitTaskStateChange
aws ecs submit-task-state-change --cluster <value> \
--status STOPPED --reason "anything" --containers [...]

# Needs: ecs:SubmitContainerStateChange
aws ecs submit-container-state-change ...

# Needs: ecs:SubmitAttachmentStateChanges
aws ecs submit-attachment-state-changes ...

ECRコンテナから機密情報を盗む

EC2インスタンスには、おそらく ecr:GetAuthorizationToken の権限があり、イメージをダウンロードすることができます(それらの中に機密情報があるかもしれません)。

AWSハッキングをゼロからヒーローまで学ぶには htARTE (HackTricks AWS Red Team Expert)をチェック!

HackTricksをサポートする他の方法:

最終更新