AWS - EC2 Privesc
EC2
Aby uzyskać więcej informacji na temat EC2, sprawdź:
pageAWS - EC2, EBS, ELB, SSM, VPC & VPN Enumiam:PassRole
, ec2:RunInstances
iam:PassRole
, ec2:RunInstances
Atakujący mógłby utworzyć instancję, do której dołączona jest rola IAM, a następnie uzyskać dostęp do instancji, aby ukraść poświadczenia roli IAM z punktu końcowego metadanych.
Dostęp za pomocą SSH
Uruchom nową instancję, używając utworzonego klucza SSH (--key-name
) i następnie zaloguj się do niej za pomocą SSH (jeśli chcesz utworzyć nowy, możesz potrzebować uprawnienia ec2:CreateKeyPair
).
Dostęp za pomocą odwróconego powłoki w danych użytkownika
Możesz uruchomić nową instancję, używając danych użytkownika (--user-data
), które wyślą Ci odwróconą powłokę. W ten sposób nie musisz określać grupy zabezpieczeń.
Bądź ostrożny z GuardDuty, jeśli używasz poza instancją poświadczeń roli IAM:
pageAWS - GuardDuty EnumPotencjalne skutki: Bezpośrednie podniesienie uprawnień do dowolnej roli EC2 przypisanej do istniejących profili instancji.
Podniesienie uprawnień do ECS
Z tym zestawem uprawnień możesz również utworzyć instancję EC2 i zarejestrować ją w klastrze ECS. W ten sposób usługi ECS będą uruchamiane wewnątrz instancji EC2, do której masz dostęp, a następnie możesz przeniknąć do tych usług (kontenerów Docker) i ukraść przypisane do nich role ECS.
Aby dowiedzieć się, jak wymusić uruchomienie usług ECS na nowej instancji EC2, sprawdź:
pageAWS - ECS PrivescJeśli nie możesz utworzyć nowej instancji, ale masz uprawnienie ecs:RegisterContainerInstance
, możesz zarejestrować instancję w klastrze i przeprowadzić skomentowany atak.
Potencjalne skutki: Bezpośrednie podniesienie uprawnień do ról ECS przypisanych do zadań.
iam:PassRole
, iam:AddRoleToInstanceProfile
iam:PassRole
, iam:AddRoleToInstanceProfile
Podobnie jak w poprzednim scenariuszu, atakujący posiadający te uprawnienia mógłby zmienić rolę IAM skompromitowanej instancji, aby ukraść nowe poświadczenia.
Ponieważ profil instancji może mieć tylko jedną rolę, jeśli profil instancji już ma rolę (częsty przypadek), będziesz również potrzebować iam:RemoveRoleFromInstanceProfile
.
Jeśli profil instancji ma rolę i atakujący nie może jej usunąć, istnieje inny sposób obejścia. Może on znaleźć profil instancji bez roli lub utworzyć nowy (iam:CreateInstanceProfile
), dodać do tego profilu instancji rolę (jak wcześniej omówiono) i powiązać profil instancji skompromitowanej z skompromitowaną instancją:
Jeśli instancja nie ma żadnego profilu instancji (
ec2:AssociateIamInstanceProfile
) *
Potencjalne skutki: Bezpośrednie podniesienie uprawnień do innego EC2 roli (musisz przejąć kontrolę nad instancją AWS EC2 i posiadać dodatkowe uprawnienia lub określony status profilu instancji).
iam:PassRole
(( ec2:AssociateIamInstanceProfile
& ec2:DisassociateIamInstanceProfile
) || ec2:ReplaceIamInstanceProfileAssociation
)
iam:PassRole
(( ec2:AssociateIamInstanceProfile
& ec2:DisassociateIamInstanceProfile
) || ec2:ReplaceIamInstanceProfileAssociation
)Z tymi uprawnieniami możliwe jest zmienienie profilu instancji przypisanego do instancji. Jeśli atakujący już ma dostęp do instancji, będzie mógł ukraść poświadczenia dla innych ról profilu instancji, zmieniając przypisany do niej profil.
Jeśli instancja ma profil instancji, możesz go usunąć (
ec2:DisassociateIamInstanceProfile
) i przypisać go *
lub zamień profil instancji skompromitowanej instancji (
ec2:ReplaceIamInstanceProfileAssociation
). *
Potencjalne skutki: Bezpośrednie podniesienie uprawnień do innego EC2 roli (musisz przejąć kontrolę nad instancją AWS EC2 i posiadać dodatkowe uprawnienia lub określony status profilu instancji).
ec2:RequestSpotInstances
,iam:PassRole
ec2:RequestSpotInstances
,iam:PassRole
Atakujący posiadający uprawnienia ec2:RequestSpotInstances
i iam:PassRole
może żądać utworzenia instancji Spot z dołączoną rolą EC2 i rev shell w danych użytkownika.
Po uruchomieniu instancji może ukraść rolę IAM.
ec2:ModifyInstanceAttribute
ec2:ModifyInstanceAttribute
Atakujący posiadający uprawnienia ec2:ModifyInstanceAttribute
może modyfikować atrybuty instancji. Wśród nich może zmieniać dane użytkownika, co oznacza, że może spowodować, że instancja wykona dowolne dane. Może to być wykorzystane do uzyskania zdalnego dostępu do instancji EC2.
Należy zauważyć, że atrybuty mogą być modyfikowane tylko wtedy, gdy instancja jest zatrzymana, dlatego wymagane są uprawnienia ec2:StopInstances
i ec2:StartInstances
.
Potencjalne skutki: Bezpośrednie podniesienie uprawnień do dowolnej roli IAM EC2 przypisanej do utworzonej instancji.
ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
,ec2:ModifyLaunchTemplate
ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
,ec2:ModifyLaunchTemplate
Atakujący posiadający uprawnienia ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
i ec2:ModifyLaunchTemplate
może utworzyć nową wersję szablonu uruchamiania z rev shellem w danych użytkownika oraz dowolną rolą IAM EC2 na nim, zmienić domyślną wersję, a dowolna grupa automatycznego skalowania korzystająca z tego szablonu uruchamiania, która jest skonfigurowana do użycia najnowszej lub domyślnej wersji, ponownie uruchomi instancje korzystając z tego szablonu i wykonają rev shell.
Potencjalne skutki: Bezpośrednie podniesienie uprawnień do innego EC2 roli.
autoscaling:CreateLaunchConfiguration
, autoscaling:CreateAutoScalingGroup
, iam:PassRole
autoscaling:CreateLaunchConfiguration
, autoscaling:CreateAutoScalingGroup
, iam:PassRole
Atakujący posiadający uprawnienia autoscaling:CreateLaunchConfiguration
,autoscaling:CreateAutoScalingGroup
,iam:PassRole
może utworzyć konfigurację uruchamiania z rolą IAM i odwróconym powłoką w danych użytkownika, a następnie utworzyć grupę autoskalowania z tej konfiguracji i poczekać, aż odwrócona powłoka ukradnie rolę IAM.
Potencjalne skutki: Bezpośrednie podniesienie uprawnień do innego EC2 roli.
!autoscaling
!autoscaling
Zestaw uprawnień ec2:CreateLaunchTemplate
i autoscaling:CreateAutoScalingGroup
nie wystarcza do podniesienia uprawnień do roli IAM, ponieważ w celu dołączenia roli określonej w Konfiguracji uruchamiania lub w Szablonie uruchamiania potrzebujesz uprawnień iam:PassRole
i ec2:RunInstances
(co jest znanym podniesieniem uprawnień).
ec2-instance-connect:SendSSHPublicKey
ec2-instance-connect:SendSSHPublicKey
Atakujący posiadający uprawnienie ec2-instance-connect:SendSSHPublicKey
może dodać klucz SSH do użytkownika i użyć go do uzyskania dostępu (jeśli ma dostęp SSH do instancji) lub do podniesienia uprawnień.
Potencjalne skutki: Bezpośrednie podniesienie uprawnień do ról IAM EC2 przypisanych do działających instancji.
ec2-instance-connect:SendSerialConsoleSSHPublicKey
ec2-instance-connect:SendSerialConsoleSSHPublicKey
Atakujący posiadający uprawnienie ec2-instance-connect:SendSerialConsoleSSHPublicKey
może dodać klucz SSH do połączenia szeregowego. Jeśli port szeregowy nie jest włączony, atakujący potrzebuje uprawnienia ec2:EnableSerialConsoleAccess
aby go włączyć.
Aby połączyć się z portem szeregowym, musisz również znać nazwę użytkownika i hasło do użytkownika wewnątrz maszyny.
Ta metoda nie jest zbyt przydatna do eskalacji uprawnień, ponieważ potrzebujesz znać nazwę użytkownika i hasło, aby ją wykorzystać.
Potencjalne skutki: (Bardzo trudne do udowodnienia) Bezpośrednia eskalacja uprawnień do ról IAM EC2 przypisanych do uruchomionych instancji.
Referencje
Last updated