AWS - EC2 Privesc
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Za više informacija o EC2 proverite:
AWS - EC2, EBS, ELB, SSM, VPC & VPN Enumiam:PassRole
, ec2:RunInstances
Napadač bi mogao da kreira instancu povezujući IAM ulogu i zatim pristupi instanci da ukrade IAM ulogu kredencijale sa metapodatkovnog krajnjeg tačke.
Pristup preko SSH
Pokrenite novu instancu koristeći kreirani ssh ključ (--key-name
) i zatim se povežite na nju putem ssh (ako želite da kreirate novi možda će vam biti potrebna dozvola ec2:CreateKeyPair
).
Pristup putem rev shell-a u korisničkim podacima
Možete pokrenuti novu instancu koristeći korisničke podatke (--user-data
) koji će vam poslati rev shell. Na ovaj način ne morate da specificirate sigurnosnu grupu.
Budite oprezni sa GuradDuty ako koristite kredencijale IAM uloge van instance:
AWS - GuardDuty EnumPotencijalni uticaj: Direktno privesc na bilo koju EC2 ulogu povezanu sa postojećim profilima instance.
Sa ovim skupom dozvola mogli biste takođe napraviti EC2 instancu i registrovati je unutar ECS klastera. Na ovaj način, ECS usluge će biti pokrenute unutar EC2 instance gde imate pristup, a zatim možete prodrijeti u te usluge (docker kontejneri) i ukrasti njihove ECS uloge povezane.
Da biste naučili kako da naterate ECS usluge da se pokrenu na ovoj novoj EC2 instanci, proverite:
AWS - ECS PrivescAko ne možete da kreirate novu instancu ali imate dozvolu ecs:RegisterContainerInstance
, možda ćete moći da registrujete instancu unutar klastera i izvršite komentarisani napad.
Potencijalni uticaj: Direktno privesc na ECS uloge povezane sa zadacima.
iam:PassRole
, iam:AddRoleToInstanceProfile
Slično prethodnom scenariju, napadač sa ovim dozvolama mogao bi da promeni IAM ulogu kompromitovane instance kako bi mogao da ukrade nove akreditive.
Budući da profil instance može imati samo 1 ulogu, ako profil instance već ima ulogu (uobičajen slučaj), takođe će vam biti potrebna iam:RemoveRoleFromInstanceProfile
.
Ako profil instance ima ulogu i napadač ne može da je ukloni, postoji još jedno rešenje. On može pronaći profil instance bez uloge ili napraviti novi (iam:CreateInstanceProfile
), dodati ulogu tom profilu instance (kao što je ranije objašnjeno), i povezati profil instance sa kompromitovanom instance:
Ako instance nema nijedan profil instance (ec2:AssociateIamInstanceProfile
) *
Potencijalni uticaj: Direktno privesc na drugu EC2 ulogu (morate da ste kompromitovali AWS EC2 instancu i imate dodatne dozvole ili specifičan status instance profila).
iam:PassRole
(( ec2:AssociateIamInstanceProfile
& ec2:DisassociateIamInstanceProfile
) || ec2:ReplaceIamInstanceProfileAssociation
)Sa ovim dozvolama moguće je promeniti profil instance povezan sa instancom, tako da ako je napadač već imao pristup instanci, moći će da ukrade akreditive za više uloga profila instance menjajući onaj koji je povezan sa njom.
Ako ima profil instance, možete ukloniti profil instance (ec2:DisassociateIamInstanceProfile
) i povezati ga *
ili zameni profil instance kompromitovane instance (ec2:ReplaceIamInstanceProfileAssociation
). *
Potencijalni uticaj: Direktno privesc na drugu EC2 ulogu (morate da ste kompromitovali AWS EC2 instancu i imate dodatne dozvole ili specifičan status instance profila).
ec2:RequestSpotInstances
,iam:PassRole
Napadač sa dozvolama ec2:RequestSpotInstances
i iam:PassRole
može zatražiti Spot Instancu sa EC2 Ulogom i rev shell u korisničkim podacima.
Kada se instanca pokrene, može ukrasti IAM ulogu.
ec2:ModifyInstanceAttribute
Napadač sa ec2:ModifyInstanceAttribute
može da menja atribute instanci. Među njima, može da promeni korisničke podatke, što podrazumeva da može da natera instancu da izvrši proizvoljne podatke. To se može iskoristiti za dobijanje rev shell-a na EC2 instanci.
Napomena: Atributi se mogu menjati samo dok je instanca zaustavljena, tako da su potrebne dozvole ec2:StopInstances
i ec2:StartInstances
.
Potencijalni Uticaj: Direktno privesc na bilo koju EC2 IAM Ulogu prikačenu na kreiranu instancu.
ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
,ec2:ModifyLaunchTemplate
Napadač sa dozvolama ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
i ec2:ModifyLaunchTemplate
može da kreira novu verziju Launch Templata sa rev shell u korisničkim podacima i bilo kojom EC2 IAM Ulogom na njemu, promeniti podrazumevanu verziju, i bilo koja Autoscaler grupa koja koristi taj Launch Template koji je konfiguran da koristi najnoviju ili podrazumevanu verziju će ponovo pokrenuti instance koristeći taj template i izvršiće rev shell.
Potencijalni uticaj: Direktno privesc na drugu EC2 ulogu.
autoscaling:CreateLaunchConfiguration
, autoscaling:CreateAutoScalingGroup
, iam:PassRole
Napadač sa dozvolama autoscaling:CreateLaunchConfiguration
,autoscaling:CreateAutoScalingGroup
,iam:PassRole
može napraviti Launch Configuration sa IAM Ulogom i rev shell unutar korisničkih podataka, zatim napraviti autoscaling grupu iz te konfiguracije i čekati da rev shell ukrade IAM Ulogu.
Potencijalni Uticaj: Direktno privesc na drugu EC2 ulogu.
!autoscaling
Skup dozvola ec2:CreateLaunchTemplate
i autoscaling:CreateAutoScalingGroup
nije dovoljan za eskalaciju privilegija na IAM ulogu jer da biste priključili ulogu navedenu u Launch Configuration ili u Launch Template potrebne su vam dozvole iam:PassRole
i ec2:RunInstances
(što je poznata privesc).
ec2-instance-connect:SendSSHPublicKey
Napadač sa dozvolom ec2-instance-connect:SendSSHPublicKey
može dodati ssh ključ korisniku i koristiti ga za pristup (ako ima ssh pristup instanci) ili za eskalaciju privilegija.
Potencijalni Uticaj: Direktno privesc do EC2 IAM uloga povezanih sa aktivnim instancama.
ec2-instance-connect:SendSerialConsoleSSHPublicKey
Napadač sa dozvolom ec2-instance-connect:SendSerialConsoleSSHPublicKey
može dodati ssh ključ na serijsku vezu. Ako serijska veza nije omogućena, napadač treba dozvolu ec2:EnableSerialConsoleAccess
da je omogući.
Da biste se povezali na serijski port, takođe morate znati korisničko ime i lozinku korisnika unutar mašine.
Ovaj način nije previše koristan za privesc jer je potrebno znati korisničko ime i lozinku da bi se iskoristio.
Potencijalni uticaj: (Veoma neproverljiv) Direktan privesc na EC2 IAM uloge povezane sa aktivnim instancama.
describe-launch-templates
,describe-launch-template-versions
Pošto launch šabloni imaju verzionisanje, napadač sa ec2:describe-launch-templates
i ec2:describe-launch-template-versions
dozvolama mogao bi da iskoristi ovo da otkrije osetljive informacije, kao što su akreditivi prisutni u korisničkim podacima. Da bi to postigao, sledeći skript prolazi kroz sve verzije dostupnih launch šablona:
U gornjim komandama, iako specificiramo određene obrasce (aws_|password|token|api
), možete koristiti drugačiji regex za pretragu drugih tipova osetljivih informacija.
Pretpostavljajući da pronađemo aws_access_key_id
i aws_secret_access_key
, možemo koristiti te akreditive za autentifikaciju na AWS.
Potencijalni uticaj: Direktno eskaliranje privilegija na IAM korisnika(e).
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)