AWS - EC2 Privesc
EC2
Vir meer inligting oor EC2, kyk:
AWS - EC2, EBS, ELB, SSM, VPC & VPN Enumiam:PassRole
, ec2:RunInstances
iam:PassRole
, ec2:RunInstances
'n Aanvaller kan 'n instansie skep wat 'n IAM-role aanheg en dan toegang tot die instansie verkry om die IAM-role-legitimasie van die metadata-eindpunt te steel.
Toegang via SSH
Voer 'n nuwe instansie uit deur 'n geskep ssh-sleutel (--key-name
) te gebruik en skakel dan in met ssh (as jy 'n nuwe een wil skep, mag jy die toestemming ec2:CreateKeyPair
nodig hê).
Toegang via omgekeerde skul in gebruikersdata
Jy kan 'n nuwe instansie uitvoer met behulp van 'n gebruikersdata (--user-data
) wat 'n omgekeerde skul na jou sal stuur. Jy hoef nie op hierdie manier 'n veiligheidsgroep te spesifiseer nie.
Wees versigtig met GuradDuty as jy die geloofsbriewe van die IAM rol buite die instansie gebruik:
AWS - GuardDuty EnumPotensiële Impak: Direkte voorregverhoging na enige EC2-rol wat aan bestaande instansieprofiels geheg is.
Voorregverhoging na ECS
Met hierdie stel toestemmings kan jy ook 'n EC2-instansie skep en dit binne 'n ECS-kluster registreer. Op hierdie manier sal ECS-dienste binne die EC2-instansie waar jy toegang het, uitgevoer word en dan kan jy daardie dienste (docker-houers) penetreer en hul gehegte ECS-rolle steel.
Om te leer hoe om ECS-dienste te dwing om uitgevoer te word in hierdie nuwe EC2-instantie, kyk:
AWS - ECS PrivescAs jy nie 'n nuwe instantie kan skep nie, maar die toestemming ecs:RegisterContainerInstance
het, kan jy dalk die instantie registreer binne die groep en die gekommentaar aanval uitvoer.
Potensiële Impak: Direkte voorregverhoging na ECS-rolle wat aan take gekoppel is.
iam:PassRole
, iam:AddRoleToInstanceProfile
iam:PassRole
, iam:AddRoleToInstanceProfile
Soortgelyk aan die vorige scenario, kan 'n aanvaller met hierdie toestemmings die IAM-rol van 'n gekompromitteerde instantie verander, sodat hy nuwe geloofsbriewe kan steel.
Aangesien 'n instantieprofiel slegs 1 rol kan hê, as die instantieprofiel reeds 'n rol het (gewone geval), sal jy ook iam:RemoveRoleFromInstanceProfile
benodig.
As die instansprofiel 'n rol het en die aanvaller kan dit nie verwyder nie, is daar 'n ander omweg. Hy kan 'n instansprofiel sonder 'n rol vind of 'n nuwe een skep (iam:CreateInstanceProfile
), die rol byvoeg by daardie instansprofiel (soos voorheen bespreek), en die gekompromitteerde instansprofiel koppel aan 'n gekompromitteerde instans:
As die instans geen instansprofiel het nie (
ec2:AssociateIamInstanceProfile
) *
Potensiële Impak: Direkte voorregte-escalasie na 'n ander EC2 rol (jy moet 'n AWS EC2-instantie gekompromitteer het en 'n paar ekstra toestemming of 'n spesifieke instansieprofielstatus hê).
iam:PassRole
(( ec2:AssociateIamInstanceProfile
& ec2:DisassociateIamInstanceProfile
) || ec2:ReplaceIamInstanceProfileAssociation
)
iam:PassRole
(( ec2:AssociateIamInstanceProfile
& ec2:DisassociateIamInstanceProfile
) || ec2:ReplaceIamInstanceProfileAssociation
)Met hierdie toestemmings is dit moontlik om die instansieprofiel wat aan 'n instansie gekoppel is, te verander. As die aanval reeds toegang tot 'n instansie het, sal hy in staat wees om geloofsbriewe vir meer instansieprofielrolle te steel deur die een wat daarmee gekoppel is, te verander.
As dit 'n instansieprofiel het, kan jy die instansieprofiel verwyder (
ec2:DisassociateIamInstanceProfile
) en dit koppel *
of vervang die instansieprofiel van die gekompromitteerde instansie (
ec2:ReplaceIamInstanceProfileAssociation
). *
Potensiële Impak: Direkte voorregte-escalasie na 'n ander EC2 rol (jy moet 'n AWS EC2-instansie gekompromitteer het en 'n paar ekstra toestemming of 'n spesifieke instansieprofielstatus hê).
ec2:RequestSpotInstances
,iam:PassRole
ec2:RequestSpotInstances
,iam:PassRole
'n Aanvaller met die toestemmings ec2:RequestSpotInstances
eniam:PassRole
kan 'n Spot-instansie aanvra met 'n EC2-rol aangeheg en 'n rev shell in die gebruikersdata.
Sodra die instansie uitgevoer word, kan hy die IAM-rol steel.
ec2:ModifyInstanceAttribute
ec2:ModifyInstanceAttribute
'n Aanvaller met die ec2:ModifyInstanceAttribute
kan die instansie se eienskappe wysig. Onder hulle kan hy die gebruikersdata verander, wat beteken dat hy die instansie arbitrêre data kan laat uitvoer. Dit kan gebruik word om 'n rev shell na die EC2-instansie te kry.
Let daarop dat die eienskappe slegs gewysig kan word terwyl die instansie gestop is, dus die toestemmings ec2:StopInstances
en ec2:StartInstances
.
Potensiële Impak: Direkte bevoorregte toegang tot enige EC2 IAM Rol wat aan 'n geskep instansie geheg is.
ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
,ec2:ModifyLaunchTemplate
ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
,ec2:ModifyLaunchTemplate
'n Aanvaller met die toestemmings ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
en ec2:ModifyLaunchTemplate
kan 'n nuwe Lanceer Sjabloon weergawe skep met 'n omgekeerde skul in die gebruikersdata en enige EC2 IAM Rol daarop, die verstek weergawe verander, en enige Autoscaler groep wat daardie Lanceer Sjabloon gebruik wat gekonfigureer is om die nuutste of die verstek weergawe te gebruik, sal die instansies wat daardie sjabloon gebruik herlaai en die omgekeerde skul uitvoer.
Potensiële Impak: Direkte voorregte-escalasie na 'n ander EC2 rol.
autoscaling:CreateLaunchConfiguration
, autoscaling:CreateAutoScalingGroup
, iam:PassRole
autoscaling:CreateLaunchConfiguration
, autoscaling:CreateAutoScalingGroup
, iam:PassRole
'n Aanvaller met die toestemmings autoscaling:CreateLaunchConfiguration
,autoscaling:CreateAutoScalingGroup
,iam:PassRole
kan 'n Lanceringskonfigurasie met 'n IAM Rol en 'n omgekeerde skulp binne die gebruikersdata skep, en dan 'n outomatiese skaal-groep van daardie konfigurasie skep en wag vir die omgekeerde skulp om die IAM Rol te steel.
Potensiële Impak: Direkte voorregverhoging na 'n ander EC2 rol.
!autoscaling
!autoscaling
Die stel toestemmings ec2:CreateLaunchTemplate
en autoscaling:CreateAutoScalingGroup
is nie genoeg om voorregte te verhoog na 'n IAM rol nie, omdat jy toestemmings iam:PassRole
en ec2:RunInstances
benodig om die rol wat in die Lanceerkonfigurasie of in die Lanceersjabloon gespesifiseer is, aan te heg (wat 'n bekende voorregverhoging is).
ec2-instance-connect:SendSSHPublicKey
ec2-instance-connect:SendSSHPublicKey
'n Aanvaller met die toestemming ec2-instance-connect:SendSSHPublicKey
kan 'n ssh-sleutel by 'n gebruiker voeg en dit gebruik om toegang tot dit te verkry (as hy ssh-toegang tot die instansie het) of om voorregte te verhoog.
Potensiële Impak: Direkte bevoorregte toegang tot die EC2 IAM-rolle wat aan lopende instansies gekoppel is.
ec2-instance-connect:SendSerialConsoleSSHPublicKey
ec2-instance-connect:SendSerialConsoleSSHPublicKey
'n Aanvaller met die toestemming ec2-instance-connect:SendSerialConsoleSSHPublicKey
kan 'n ssh-sleutel by 'n seriële verbinding voeg. As die seriële nie geaktiveer is nie, benodig die aanvaller die toestemming ec2:EnableSerialConsoleAccess
om dit te aktiveer.
Om met die seriële poort te verbind, moet jy ook die gebruikersnaam en wagwoord van 'n gebruiker binne die masjien weet.
Hierdie metode is nie baie nuttig vir privilege-escalation nie, aangesien jy 'n gebruikersnaam en wagwoord moet weet om dit uit te buit.
Potensiële Impak: (Hoogs onbewysbaar) Direkte privilege-escalation na die EC2 IAM-rolle wat aan lopende instansies gekoppel is.
Verwysings
Last updated