mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-27 13:13:06 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/
This commit is contained in:
@@ -34,7 +34,7 @@ Byvoorbeeld, 'n aanvaller met daardie **toestemmings oor 'n cloudformation emmer
|
||||
]
|
||||
}
|
||||
```
|
||||
En die kaping is moontlik omdat daar 'n **klein tydvenster is vanaf die oomblik dat die sjabloon opgelaai word** na die emmer tot die oomblik dat die **sjabloon ontplooi word**. 'n Aanvaller kan eenvoudig 'n **lambda-funksie** in sy rekening skep wat **geaktiveer word wanneer 'n emmer kennisgewing gestuur word**, en **kap** die **inhoud** van daardie **emmer**.
|
||||
En die kaapting is moontlik omdat daar 'n **klein tydvenster is vanaf die oomblik dat die sjabloon opgelaai word** na die emmer tot die oomblik dat die **sjabloon ontplooi word**. 'n Aanvaller kan eenvoudig 'n **lambda-funksie** in sy rekening skep wat **geaktiveer word wanneer 'n emmer kennisgewing gestuur word**, en **kaap** die **inhoud** van daardie **emmer**.
|
||||
|
||||
.png>)
|
||||
|
||||
@@ -52,10 +52,9 @@ Hier is 'n paar voorbeelde:
|
||||
|
||||
### `s3:PutObject`, `s3:GetObject` (opsioneel) oor terraform toestand lêer
|
||||
|
||||
Dit is baie algemeen dat die [terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) toestand lêers in blob stoor van wolkverskaffers gestoor word, bv. AWS S3. Die lêer-suffiks vir 'n toestand lêer is `.tfstate`, en die emmername gee dikwels ook weg dat hulle terraform toestand lêers bevat. Gewoonlik het elke AWS-rekening een sulke emmer om die toestand lêers te stoor wat die toestand van die rekening toon.\
|
||||
Ook gewoonlik, in werklike wêreld rekeninge het amper altyd alle ontwikkelaars `s3:*` en soms selfs besigheidsgebruikers `s3:Put*`.
|
||||
Dit is baie algemeen dat die [terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) toestand lêers in blob stoor van wolkverskaffers gestoor word, bv. AWS S3. Die lêer-suffiks vir 'n toestand lêer is `.tfstate`, en die emmername gee dikwels ook weg dat hulle terraform toestand lêers bevat. Gewoonlik het elke AWS-rekening een sulke emmer om die toestand lêers te stoor wat die toestand van die rekening toon. Ook gewoonlik, in werklike wêreld rekeninge het amper altyd alle ontwikkelaars `s3:*` en soms selfs besigheidsgebruikers `s3:Put*`.
|
||||
|
||||
So, as jy die toestemmings wat oor hierdie lêers gelys is, het, is daar 'n aanvalsvector wat jou toelaat om RCE in die pyplyn te verkry met die voorregte van `terraform` - meestal `AdministratorAccess`, wat jou die admin van die wolkrekening maak. Ook kan jy daardie vektor gebruik om 'n ontkenning van diens aanval te doen deur `terraform` te laat verwyder legitieme hulpbronne.
|
||||
So, as jy die toestemmings gelys oor hierdie lêers het, is daar 'n aanvalsvector wat jou toelaat om RCE in die pyplyn te verkry met die voorregte van `terraform` - meestal `AdministratorAccess`, wat jou die admin van die wolkrekening maak. Ook, jy kan daardie vektor gebruik om 'n ontkenning van diens aanval te doen deur `terraform` te laat verwyder legitieme hulpbronne.
|
||||
|
||||
Volg die beskrywing in die *Misbruik van Terraform Toestand Lêers* afdeling van die *Terraform Sekuriteit* bladsy vir direk bruikbare eksploitkode:
|
||||
|
||||
@@ -65,7 +64,7 @@ Volg die beskrywing in die *Misbruik van Terraform Toestand Lêers* afdeling van
|
||||
|
||||
### `s3:PutBucketPolicy`
|
||||
|
||||
'n Aanvaller, wat **uit dieselfde rekening moet wees**, anders sal die fout `Die gespesifiseerde metode is nie toegelaat nie` geaktiveer word, met hierdie toestemming sal in staat wees om vir homself meer toestemmings oor die emmer(s) toe te ken wat hom toelaat om te lees, te skryf, te verander, te verwyder en emmers bloot te stel.
|
||||
'n Aanvaller, wat **uit die selfde rekening** moet wees, anders sal die fout `Die gespesifiseerde metode is nie toegelaat nie` geaktiveer word, met hierdie toestemming sal in staat wees om vir homself meer toestemmings oor die emmer(s) toe te ken wat hom toelaat om te lees, te skryf, te verander, te verwyder en emmers bloot te stel.
|
||||
```bash
|
||||
# Update Bucket policy
|
||||
aws s3api put-bucket-policy --policy file:///root/policy.json --bucket <bucket-name>
|
||||
|
||||
@@ -69,7 +69,7 @@ Die toestemming **`Microsoft.Automation/automationAccounts/jobs/output/read`** l
|
||||
az rest --method GET \
|
||||
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automation-account-name>/jobs/<job-name>/output?api-version=2023-11-01"
|
||||
```
|
||||
As daar geen Runbooks geskep is nie, of jy wil 'n nuwe een skep, sal jy die **toestemmings `Microsoft.Resources/subscriptions/resourcegroups/read` en `Microsoft.Automation/automationAccounts/runbooks/write`** nodig hê om dit te doen met:
|
||||
As daar nie Runbooks geskep is nie, of jy wil 'n nuwe een skep, sal jy die **toestemmings `Microsoft.Resources/subscriptions/resourcegroups/read` en `Microsoft.Automation/automationAccounts/runbooks/write`** nodig hê om dit te doen met:
|
||||
```bash
|
||||
az automation runbook create --automation-account-name <account-name> --resource-group <res-group> --name <runbook-name> --type PowerShell
|
||||
```
|
||||
@@ -93,7 +93,7 @@ az rest --method PATCH \
|
||||
|
||||
Met die toestemming **`Microsoft.Automation/automationAccounts/schedules/write`** is dit moontlik om 'n nuwe Skedule in die Automatiseringsrekening te skep wat elke 15 minute uitgevoer word (nie baie stil nie) met behulp van die volgende opdrag.
|
||||
|
||||
Let daarop dat die **minimum interval vir 'n skedule 15 minute** is, en die **minimum begin tyd is 5 minute** in die toekoms.
|
||||
Let daarop dat die **minimum interval vir 'n skedule 15 minute is**, en die **minimum begin tyd 5 minute** in die toekoms is.
|
||||
```bash
|
||||
## For linux
|
||||
az automation schedule create \
|
||||
@@ -134,7 +134,7 @@ az rest --method PUT \
|
||||
}'
|
||||
```
|
||||
> [!TIP]
|
||||
> In die vorige voorbeeld was die jobchedule id gelaat as **`b510808a-8fdc-4509-a115-12cfc3a2ad0d` as voorbeeld** maar jy sal 'n arbitrêre waarde moet gebruik om hierdie toewysing te skep.
|
||||
> In die vorige voorbeeld is die jobchedule id gelaat as **`b510808a-8fdc-4509-a115-12cfc3a2ad0d` as voorbeeld** maar jy sal 'n arbitrêre waarde moet gebruik om hierdie toewysing te skep.
|
||||
|
||||
### `Microsoft.Automation/automationAccounts/webhooks/write`
|
||||
|
||||
@@ -190,16 +190,16 @@ az automation source-control create \
|
||||
--token-type PersonalAccessToken \
|
||||
--access-token github_pat_11AEDCVZ<rest-of-the-token>
|
||||
```
|
||||
Dit sal outomaties die runbooks van die Github-bewaarplek na die Automatiseringsrekening invoer en met 'n paar ander toestemmings om dit te begin uitvoer, sal dit **moontlik wees om voorregte te verhoog**.
|
||||
Dit sal outomaties die runbooks van die Github-repo na die Automation Account invoer en met 'n paar ander toestemmings om dit te begin uitvoer, sal dit **moontlik wees om voorregte te verhoog**.
|
||||
|
||||
Boonop, onthou dat vir bronbeheer om in Automatiseringsrekeninge te werk, dit 'n bestuurde identiteit met die rol **`Contributor`** moet hê, en as dit 'n gebruikersbestuurde identiteit is, moet die kliënt-id van die MI in die veranderlike **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`** gespesifiseer word.
|
||||
Boonop, onthou dat vir bronbeheer om in Automation Accounts te werk, dit 'n bestuurde identiteit met die rol **`Contributor`** moet hê, en as dit 'n gebruiker bestuurde identiteit is, moet die kliënt-id van die MI in die veranderlike **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`** gespesifiseer word.
|
||||
|
||||
> [!TIP]
|
||||
> Let daarop dat dit nie moontlik is om die repo-URL van 'n bronbeheer te verander sodra dit geskep is nie.
|
||||
|
||||
### `Microsoft.Automation/automationAccounts/variables/write`
|
||||
|
||||
Met die toestemming **`Microsoft.Automation/automationAccounts/variables/write`** is dit moontlik om veranderlikes in die Automatiseringsrekening te skryf met behulp van die volgende opdrag.
|
||||
Met die toestemming **`Microsoft.Automation/automationAccounts/variables/write`** is dit moontlik om veranderlikes in die Automation Account te skryf met behulp van die volgende opdrag.
|
||||
```bash
|
||||
az rest --method PUT \
|
||||
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automation-account-name>/variables/<variable-name>?api-version=2019-06-01" \
|
||||
@@ -224,7 +224,7 @@ As 'n outomatiseringsrekening 'n pasgemaakte runtime-omgewing gebruik, kan dit m
|
||||
- Stap 1 — Skep Lêers
|
||||
|
||||
**Benodigde Lêers:** Twee PowerShell-skripte is nodig:
|
||||
1. `reverse_shell_config.ps1`: 'n Gewenste Staat Konfigurasie (DSC) lêer wat die payload aflaai en uitvoer. Dit is beskikbaar van [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1).
|
||||
1. `reverse_shell_config.ps1`: 'n Gewenste Staat Konfigurasie (DSC) lêer wat die payload aflaai en uitvoer. Dit is beskikbaar vanaf [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1).
|
||||
2. `push_reverse_shell_config.ps1`: 'n Skrip om die konfigurasie na die VM te publiseer, beskikbaar by [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/push_reverse_shell_config.ps1).
|
||||
|
||||
**Aanpassing:** Veranderlikes en parameters in hierdie lêers moet aangepas word vir die gebruiker se spesifieke omgewing, insluitend hulpbronname, lêerpaaie, en bediener/payload identifiseerders.
|
||||
@@ -237,7 +237,7 @@ Compress-Archive -Path .\reverse_shell_config.ps1 -DestinationPath .\reverse_she
|
||||
```
|
||||
- Stap 3 — Stel Stoor Konteks in & Laai op
|
||||
|
||||
Die gecomprimeerde konfigurasie lêer word na 'n vooraf gedefinieerde Azure Stoor houer, azure-pentest, opgelaai met behulp van Azure se Set-AzStorageBlobContent cmdlet.
|
||||
Die gecomprimeerde konfigurasie-lêer word na 'n vooraf gedefinieerde Azure Stoor houer, azure-pentest, opgelaai met behulp van Azure se Set-AzStorageBlobContent cmdlet.
|
||||
```bash
|
||||
Set-AzStorageBlobContent -File "reverse_shell_config.ps1.zip" -Container "azure-pentest" -Blob "reverse_shell_config.ps1.zip" -Context $ctx
|
||||
```
|
||||
@@ -251,7 +251,7 @@ Die skrip is gewysig om die teiken Windows VM en poort vir die omgekeerde skulp
|
||||
|
||||
- Stap 5 — Publiseer Konfigurasie Lêer
|
||||
|
||||
Die konfigurasie lêer word uitgevoer, wat daartoe lei dat die omgekeerde-skulpskrip na die gespesifiseerde ligging op die Windows VM ontplooi word.
|
||||
Die konfigurasie lêer word uitgevoer, wat lei tot die ontplooiing van die omgekeerde-skulpskrip na die gespesifiseerde ligging op die Windows VM.
|
||||
|
||||
- Stap 6 — Gasheer Payload en Stel Luisteraar Op
|
||||
|
||||
|
||||
Reference in New Issue
Block a user