AWS - Step Functions Privesc
Last updated
Last updated
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)
Za više informacija o ovoj AWS usluzi, proverite:
AWS - Step Functions EnumOve tehnike eskalacije privilegija će zahtevati korišćenje nekih AWS step function resursa kako bi se izvršile željene akcije eskalacije privilegija.
Da biste proverili sve moguće akcije, možete otići na svoj AWS nalog, odabrati akciju koju želite da koristite i videti parametre koje koristi, kao u:
Ili možete otići na API AWS dokumentaciju i proveriti dokumentaciju za svaku akciju:
states:TestState
& iam:PassRole
Napadač sa states:TestState
& iam:PassRole
dozvolama može testirati bilo koju državu i proslediti bilo koju IAM ulogu bez kreiranja ili ažuriranja postojeće mašine stanja, omogućavajući neovlašćen pristup drugim AWS uslugama sa dozvolama uloga. U kombinaciji, ove dozvole mogu dovesti do opsežnih neovlašćenih akcija, od manipulacije radnim tokovima do izmene podataka, do curenja podataka, manipulacije resursima i eskalacije privilegija.
Sledeći primeri pokazuju kako testirati stanje koje kreira pristupni ključ za admin
korisnika koristeći ove dozvole i permisivnu ulogu AWS okruženja. Ova permisivna uloga bi trebala imati bilo koju politiku sa visokim privilegijama povezanu sa njom (na primer arn:aws:iam::aws:policy/AdministratorAccess
) koja omogućava stanju da izvrši akciju iam:CreateAccessKey
:
stateDefinition.json:
Komanda izvršena za izvođenje privesc:
Potencijalni uticaj: Neovlašćena izvršenja i manipulacija radnim tokovima i pristup osetljivim resursima, što može dovesti do značajnih bezbednosnih propusta.
states:CreateStateMachine
& iam:PassRole
& (states:StartExecution
| states:StartSyncExecution
)Napadač sa states:CreateStateMachine
& iam:PassRole
bi mogao da kreira mašinu stanja i dodeli joj bilo koju IAM ulogu, omogućavajući neovlašćen pristup drugim AWS uslugama sa dozvolama te uloge. U poređenju sa prethodnom tehnikom privesc (states:TestState
& iam:PassRole
), ova se ne izvršava sama, takođe će vam biti potrebne dozvole states:StartExecution
ili states:StartSyncExecution
(states:StartSyncExecution
nije dostupna za standardne radne tokove, samo za izražene mašine stanja) kako biste započeli izvršenje nad mašinom stanja.
Sledeći primeri pokazuju kako da se kreira mašina stanja koja kreira pristupni ključ za korisnika admin
i eksfiltrira ovaj pristupni ključ u S3 bucket pod kontrolom napadača, koristeći ove dozvole i permisivnu ulogu AWS okruženja. Ova permisivna uloga bi trebala imati bilo koju politiku sa visokim privilegijama povezanu sa njom (na primer arn:aws:iam::aws:policy/AdministratorAccess
) koja omogućava mašini stanja da izvrši akcije iam:CreateAccessKey
i s3:putObject
.
stateMachineDefinition.json:
Komanda izvršena za kreiranje mašine stanja:
Komanda izvršena za pokretanje izvršenja prethodno kreirane mašine stanja:
Napadačem kontrolisani S3 bucket treba da ima dozvole da prihvati s3:PutObject akciju iz naloga žrtve.
Potencijalni uticaj: Neovlašćeno izvršavanje i manipulacija radnim tokovima i pristup osetljivim resursima, što može dovesti do značajnih bezbednosnih propusta.
states:UpdateStateMachine
& (ne uvek neophodno) iam:PassRole
Napadač sa states:UpdateStateMachine
dozvolom bi mogao da izmeni definiciju mašine stanja, dodajući dodatne stealth stanja koja bi mogla dovesti do eskalacije privilegija. Na ovaj način, kada legitimni korisnik pokrene izvršenje mašine stanja, ovo novo zloćudno stealth stanje će biti izvršeno i eskalacija privilegija će biti uspešna.
U zavisnosti od toga koliko je IAM uloga povezana sa mašinom stanja permisivna, napadač bi se suočio sa 2 situacije:
Permisivna IAM uloga: Ako je IAM uloga povezana sa mašinom stanja već permisivna (na primer, ima priloženu arn:aws:iam::aws:policy/AdministratorAccess
politiku), tada iam:PassRole
dozvola ne bi bila neophodna za eskalaciju privilegija, pošto ne bi bilo potrebno takođe ažurirati IAM ulogu, sa definicijom mašine stanja je dovoljno.
Nepremisivna IAM uloga: U suprotnosti sa prethodnim slučajem, ovde bi napadač takođe zahtevao iam:PassRole
dozvolu pošto bi bilo neophodno povezati permisivnu IAM ulogu sa mašinom stanja pored modifikacije definicije mašine stanja.
Sledeći primeri pokazuju kako ažurirati legitimnu mašinu stanja koja samo poziva HelloWorld Lambda funkciju, kako bi se dodalo dodatno stanje koje dodaje korisnika unprivilegedUser
u administrator
IAM grupu. Na ovaj način, kada legitimni korisnik pokrene izvršenje ažurirane mašine stanja, ovo novo zlonamerno skriveno stanje će biti izvršeno i eskalacija privilegija će biti uspešna.
Ako mašina stanja nema povezanu permisivnu IAM ulogu, takođe će biti potrebna dozvola iam:PassRole
da bi se ažurirala IAM uloga kako bi se povezala permisivna IAM uloga (na primer, ona sa arn:aws:iam::aws:policy/AdministratorAccess
politikom priloženom).
Komanda izvršena za ažuriranje legitimne mašine stanja:
Potencijalni uticaj: Neovlašćeno izvršavanje i manipulacija radnim tokovima i pristup osetljivim resursima, što može dovesti do značajnih bezbednosnih propusta.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)