AWS - EC2 Privesc
EC2
EC2 に関する詳細情報 はこちらをチェックしてください:
pageAWS - EC2, EBS, ELB, SSM, VPC & VPN Enumiam:PassRole
, ec2:RunInstances
iam:PassRole
, ec2:RunInstances
攻撃者は IAM ロールを添付したインスタンスを作成し、そのインスタンスにアクセス して IAM ロールの資格情報をメタデータエンドポイントから盗むことができます。
SSH 経由でのアクセス
作成した ssh キー (--key-name
) を使用して新しいインスタンスを実行し、それに ssh でアクセスします(新しいキーを作成する場合は、ec2:CreateKeyPair
権限が必要かもしれません)。
ユーザーデータを使用したリバースシェルへのアクセス
ユーザーデータ (--user-data
) を使用して新しいインスタンスを実行し、リバースシェルを送信できます。この方法ではセキュリティグループを指定する必要はありません。
GuardDutyを使用している場合は、インスタンスの外部でIAMロールの資格情報を使用する際に注意してください。
pageAWS - GuardDuty Enum潜在的な影響: 既存のインスタンスプロファイルにアタッチされた任意のEC2ロールへの直接的な昇格。
ECSへの昇格
この権限セットを使用すると、EC2インスタンスを作成し、ECSクラスター内に登録することもできます。これにより、ECS サービスがEC2インスタンス内で実行され、そこにアクセスできるため、これらのサービス(Dockerコンテナ)に浸透し、アタッチされたECSロールを盗むことができます。
新しいEC2インスタンスでECSサービスを実行する方法を学ぶには、次を確認してください:
pageAWS - ECS Privesc新しいインスタンスを作成できない場合でも、ecs:RegisterContainerInstance
権限を持っている場合は、インスタンスをクラスター内に登録し、コメント付き攻撃を実行することができるかもしれません。
潜在的な影響: タスクにアタッチされたECSロールへの直接的な権限昇格。
iam:PassRole
, iam:AddRoleToInstanceProfile
iam:PassRole
, iam:AddRoleToInstanceProfile
前のシナリオと同様に、これらの権限を持つ攻撃者は、侵害されたインスタンスのIAMロールを変更して新しい資格情報を盗むことができます。
インスタンスプロファイルには1つのロールしか持てないため、インスタンスプロファイルに既にロールがある場合(一般的なケース)、**iam:RemoveRoleFromInstanceProfile
**も必要です。
インスタンスプロファイルにロールがある場合、攻撃者がそれを削除できない場合、別の回避策があります。攻撃者は、ロールのないインスタンスプロファイルを見つけるか、新しいものを作成(iam:CreateInstanceProfile
)、そのインスタンスプロファイルにロールを追加(前述のように)、そして侵害されたインスタンスに侵害されたインスタンスプロファイルを関連付けることができます:
インスタンスにインスタンスプロファイルがない場合(
ec2:AssociateIamInstanceProfile
) *
潜在的影響: 別のEC2ロールへの直接権限昇格(AWS EC2インスタンスを侵害し、追加の権限または特定のインスタンスプロファイルステータスを持っている必要があります)。
iam:PassRole
(( ec2:AssociateIamInstanceProfile
& ec2:DisassociateIamInstanceProfile
) || ec2:ReplaceIamInstanceProfileAssociation
)
iam:PassRole
(( ec2:AssociateIamInstanceProfile
& ec2:DisassociateIamInstanceProfile
) || ec2:ReplaceIamInstanceProfileAssociation
)これらの権限を持っていると、インスタンスに関連付けられているインスタンスプロファイルを変更することが可能です。攻撃者がすでにインスタンスにアクセスしている場合、それに関連付けられているインスタンスプロファイルを変更することで、より多くのインスタンスプロファイルロールの資格情報を盗むことができます。
インスタンスプロファイルが存在する場合、インスタンスプロファイルを削除できます(
ec2:DisassociateIamInstanceProfile
)、そしてそれを関連付けできます *
または 置き換える インスタンスプロファイルを 置き換える(ec2:ReplaceIamInstanceProfileAssociation
)。 *
潜在的な影響: 異なるEC2ロールへの直接権限昇格(AWS EC2インスタンスを侵害し、追加の権限または特定のインスタンスプロファイルステータスを持っている必要があります)。
ec2:RequestSpotInstances
,iam:PassRole
ec2:RequestSpotInstances
,iam:PassRole
ec2:RequestSpotInstances
、iam:PassRole
の権限を持つ攻撃者は、EC2ロールがアタッチされた Spot Instanceをリクエストし、ユーザーデータにrev shellを設定できます。
インスタンスが実行されると、彼はIAMロールを盗むことができます。
ec2:ModifyInstanceAttribute
ec2:ModifyInstanceAttribute
ec2:ModifyInstanceAttribute
を持つ攻撃者は、インスタンスの属性を変更できます。その中で、ユーザーデータを変更できるため、インスタンスに任意のデータを実行させることができます。これにより、EC2インスタンスにrevシェルを取得することができます。
属性はインスタンスが停止している間のみ変更できることに注意してください。そのため、ec2:StopInstances
とec2:StartInstances
の権限が必要です。
潜在的影響: 作成されたインスタンスにアタッチされた任意のEC2 IAMロールへの直接的な権限昇格。
ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
,ec2:ModifyLaunchTemplate
ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
,ec2:ModifyLaunchTemplate
ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
およびec2:ModifyLaunchTemplate
の権限を持つ攻撃者は、ユーザーデータ内にrev shellを持つ新しいLaunch Templateバージョンを作成し、その上に任意のEC2 IAMロールを作成し、デフォルトバージョンを変更し、そのLaunch Templateを使用している任意のAuto Scaling グループは、最新またはデフォルトバージョンを使用してインスタンスを再実行し、rev shellを実行します。
潜在的な影響: 別のEC2ロールへの直接的な昇格。
autoscaling:CreateLaunchConfiguration
, autoscaling:CreateAutoScalingGroup
, iam:PassRole
autoscaling:CreateLaunchConfiguration
, autoscaling:CreateAutoScalingGroup
, iam:PassRole
autoscaling:CreateLaunchConfiguration
, autoscaling:CreateAutoScalingGroup
, iam:PassRole
の権限を持つ攻撃者は、IAMロールとrev shellをユーザーデータ内に持つLaunch Configurationを作成し、その構成からautoscalingグループを作成して、rev shellを待ち、IAMロールを盗むことができます。
潜在的影響: 別のEC2ロールへの直接的な権限昇格。
!autoscaling
!autoscaling
ec2:CreateLaunchTemplate
および autoscaling:CreateAutoScalingGroup
の権限セットは、IAMロールへの権限昇格には十分ではありません。なぜなら、Launch ConfigurationまたはLaunch Templateで指定されたロールをアタッチするには、iam:PassRole
およびec2:RunInstances
の権限が必要です(これは既知の権限昇格です)。
ec2-instance-connect:SendSSHPublicKey
ec2-instance-connect:SendSSHPublicKey
ec2-instance-connect:SendSSHPublicKey
権限を持つ攻撃者は、sshキーをユーザーに追加し、それを使用してアクセスしたり(インスタンスへのsshアクセス権がある場合)、権限を昇格させたりすることができます。
潜在的影響: 実行中のインスタンスにアタッチされたEC2 IAMロールへの直接的な権限昇格。
ec2-instance-connect:SendSerialConsoleSSHPublicKey
ec2-instance-connect:SendSerialConsoleSSHPublicKey
ec2-instance-connect:SendSerialConsoleSSHPublicKey
権限を持つ攻撃者は、シリアル接続にsshキーを追加することができます。シリアルが有効でない場合、攻撃者はそれを有効にするために ec2:EnableSerialConsoleAccess
権限が必要です。
シリアルポートに接続するには、また、マシン内のユーザーのユーザー名とパスワードを知る必要があります。
この方法は、それを悪用するためにユーザー名とパスワードを知っている必要があるため、privescにはあまり役立ちません。
潜在的な影響: (高度に証明できない) 実行中のインスタンスにアタッチされたEC2 IAMロールへの直接的なprivesc。
参考文献
最終更新