mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['', 'src/pentesting-cloud/aws-security/aws-privilege-escalat
This commit is contained in:
+32
-32
@@ -4,23 +4,23 @@
|
||||
|
||||
## KMS
|
||||
|
||||
Για περισσότερες πληροφορίες, δείτε:
|
||||
Για περισσότερες πληροφορίες δείτε:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-services/aws-kms-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### Encrypt/Decrypt information
|
||||
### Encrypt/Decrypt πληροφορίες
|
||||
|
||||
`fileb://` and `file://` are URI schemes used in AWS CLI commands to specify the path to local files:
|
||||
`fileb://` και `file://` είναι σχήματα URI που χρησιμοποιούνται στις εντολές AWS CLI για να καθορίσουν τη διαδρομή προς τοπικά αρχεία:
|
||||
|
||||
- `fileb://:` Διαβάζει το αρχείο σε δυαδική λειτουργία, συνήθως χρησιμοποιείται για μη-κειμενικά αρχεία.
|
||||
- `file://:` Διαβάζει το αρχείο σε κειμενική λειτουργία, συνήθως χρησιμοποιείται για plain text files, scripts ή JSON που δεν έχει ειδικές απαιτήσεις κωδικοποίησης.
|
||||
- `fileb://:` Διαβάζει το αρχείο σε δυαδική λειτουργία, συνήθως χρησιμοποιείται για μη-κείμενα αρχεία.
|
||||
- `file://:` Διαβάζει το αρχείο σε κειμενική λειτουργία, τυπικά χρησιμοποιείται για αρχεία απλού κειμένου, scripts, ή JSON που δεν έχει ειδικές απαιτήσεις κωδικοποίησης.
|
||||
|
||||
> [!TIP]
|
||||
> Σημειώστε ότι αν θέλετε να αποκρυπτογραφήσετε δεδομένα μέσα σε ένα αρχείο, το αρχείο πρέπει να περιέχει δυαδικά δεδομένα, όχι base64 encoded δεδομένα. (fileb://)
|
||||
> Σημειώστε ότι αν θέλετε να decrypt κάποια δεδομένα μέσα σε ένα αρχείο, το αρχείο πρέπει να περιέχει τα δυαδικά δεδομένα, όχι base64 κωδικοποιημένα δεδομένα. (fileb://)
|
||||
|
||||
- Χρήση **symmetric** key
|
||||
- Χρησιμοποιώντας ένα **symmetric** key
|
||||
```bash
|
||||
# Encrypt data
|
||||
aws kms encrypt \
|
||||
@@ -60,14 +60,14 @@ aws kms decrypt \
|
||||
```
|
||||
### KMS Ransomware
|
||||
|
||||
Ένας επιτιθέμενος με προνόμιακή πρόσβαση στο KMS μπορεί να τροποποιήσει την KMS policy των keys και **να χορηγήσει πρόσβαση στον λογαριασμό του σε αυτά**, αφαιρώντας την πρόσβαση που είχε χορηγηθεί στον νόμιμο λογαριασμό.
|
||||
Ένας επιτιθέμενος με προνομιακή πρόσβαση στο KMS μπορεί να τροποποιήσει την KMS policy των keys και **να χορηγήσει στον λογαριασμό του πρόσβαση σε αυτά**, αφαιρώντας την πρόσβαση που είχε δοθεί στον legit account.
|
||||
|
||||
Τότε, οι χρήστες του νόμιμου λογαριασμού δεν θα μπορούν να προσπελάσουν καμία πληροφορία από υπηρεσίες που έχουν κρυπτογραφηθεί με αυτά τα keys, δημιουργώντας ένα απλό αλλά αποτελεσματικό ransomware εναντίον του λογαριασμού.
|
||||
Τότε, οι χρήστες του legit account δεν θα μπορούν να έχουν πρόσβαση σε καμία πληροφορία από οποιαδήποτε υπηρεσία έχει κρυπτογραφηθεί με αυτά τα keys, δημιουργώντας ένα απλό αλλά αποτελεσματικό ransomware στον λογαριασμό.
|
||||
|
||||
> [!WARNING]
|
||||
> Σημειώστε ότι **AWS managed keys aren't affected** από αυτή την επίθεση — επηρεάζονται μόνο οι **Customer managed keys**.
|
||||
> Σημειώστε ότι **AWS managed keys δεν επηρεάζονται** από αυτήν την επίθεση, μόνο **Customer managed keys**.
|
||||
|
||||
> Επίσης σημειώστε την ανάγκη χρήσης της παραμέτρου **`--bypass-policy-lockout-safety-check`** (η έλλειψη αυτής της επιλογής στην web console κάνει αυτή την επίθεση δυνατή μόνο μέσω του CLI).
|
||||
> Επίσης σημειώστε την ανάγκη χρήσης της παραμέτρου **`--bypass-policy-lockout-safety-check`** (η έλλειψη αυτής της επιλογής στην web κονσόλα καθιστά αυτή την επίθεση δυνατή μόνο από το CLI).
|
||||
```bash
|
||||
# Force policy change
|
||||
aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
|
||||
@@ -92,28 +92,28 @@ aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
|
||||
}
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Σημειώστε ότι αν αλλάξετε αυτήν την πολιτική και δώσετε πρόσβαση μόνο σε έναν εξωτερικό λογαριασμό, και στη συνέχεια από αυτόν τον εξωτερικό λογαριασμό προσπαθήσετε να ορίσετε μια νέα πολιτική για **να επιστρέψετε την πρόσβαση στον αρχικό λογαριασμό, δεν θα μπορέσετε γιατί το Put Polocy action cannot be performed from a cross account**.
|
||||
> Σημειώστε ότι αν αλλάξετε αυτήν την πολιτική και δώσετε πρόσβαση μόνο σε ένα external account, και στη συνέχεια από αυτό το external account προσπαθήσετε να ορίσετε μια νέα πολιτική για να **give the access back to original account, you won't be able cause the Put Polocy action cannot be performed from a cross account**.
|
||||
|
||||
<figure><img src="../../../images/image (77).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Γενικό KMS Ransomware
|
||||
|
||||
Υπάρχει ένας άλλος τρόπος για να εκτελέσετε ένα παγκόσμιο KMS Ransomware, ο οποίος περιλαμβάνει τα παρακάτω βήματα:
|
||||
Υπάρχει ένας άλλος τρόπος για να εκτελέσετε ένα παγκόσμιο KMS Ransomware, ο οποίος θα περιλάμβανε τα ακόλουθα βήματα:
|
||||
|
||||
- Δημιουργήστε ένα νέο **κλειδί με υλικό κλειδιού** που έχει εισαχθεί από τον επιτιθέμενο
|
||||
- **Επανακρυπτογραφήστε τα παλαιότερα δεδομένα** του θύματος που έχουν κρυπτογραφηθεί με την προηγούμενη έκδοση, με τη νέα.
|
||||
- **Διαγράψτε το KMS κλειδί**
|
||||
- Τώρα μόνο ο επιτιθέμενος, που έχει το αρχικό υλικό κλειδιού, θα μπορεί να αποκρυπτογραφήσει τα κρυπτογραφημένα δεδομένα.
|
||||
- Δημιουργήστε ένα νέο **key with a key material** εισαγόμενο από τον attacker
|
||||
- **Re-encrypt older data** του victim που είχε κρυπτογραφηθεί με την προηγούμενη έκδοση, με τη νέα
|
||||
- **Delete the KMS key**
|
||||
- Τώρα μόνο ο attacker, που έχει το original key material, θα μπορούσε να αποκρυπτογραφήσει τα κρυπτογραφημένα δεδομένα
|
||||
|
||||
### Διαγραφή Κλειδιών μέσω kms:DeleteImportedKeyMaterial
|
||||
### Διαγραφή κλειδιών μέσω kms:DeleteImportedKeyMaterial
|
||||
|
||||
Με την άδεια `kms:DeleteImportedKeyMaterial`, ένας δράστης μπορεί να διαγράψει το εισαγμένο υλικό κλειδιού από CMKs με `Origin=EXTERNAL` (CMKs που έχουν εισάγει το υλικό κλειδιού τους), καθιστώντας τα ανίκανα να αποκρυπτογραφήσουν δεδομένα. Αυτή η ενέργεια είναι καταστροφική και μη αναστρέψιμη εκτός εάν επανεισαχθεί συμβατό υλικό, επιτρέποντας σε έναν επιτιθέμενο να προκαλέσει αποτελεσματικά απώλεια δεδομένων τύπου ransomware, καθιστώντας τις κρυπτογραφημένες πληροφορίες μόνιμα μη προσβάσιμες.
|
||||
Με την άδεια `kms:DeleteImportedKeyMaterial`, ένας actor μπορεί να διαγράψει το imported key material από CMKs με `Origin=EXTERNAL` (CMKs που έχουν εισαγάγει το key material τους), καθιστώντας τα ανίκανα να αποκρυπτογραφήσουν δεδομένα. Αυτή η ενέργεια είναι καταστροφική και μη αναστρέψιμη εκτός αν επανεισαχθεί συμβατό key material, επιτρέποντας σε έναν attacker να προκαλέσει ουσιαστικά απώλεια δεδομένων τύπου ransomware κάνοντας τις κρυπτογραφημένες πληροφορίες μόνιμα μη προσβάσιμες.
|
||||
```bash
|
||||
aws kms delete-imported-key-material --key-id <Key_ID>
|
||||
```
|
||||
### Καταστροφή κλειδιών
|
||||
|
||||
Η καταστροφή κλειδιών μπορεί να προκαλέσει DoS.
|
||||
Καταστρέφοντας κλειδιά, είναι δυνατό να προκληθεί DoS.
|
||||
```bash
|
||||
# Schedule the destoy of a key (min wait time is 7 days)
|
||||
aws kms schedule-key-deletion \
|
||||
@@ -121,10 +121,10 @@ aws kms schedule-key-deletion \
|
||||
--pending-window-in-days 7
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Σημειώστε ότι το AWS πλέον **αποτρέπει την εκτέλεση των προηγούμενων ενεργειών από cross account:**
|
||||
|
||||
### Αλλαγή ή διαγραφή Alias
|
||||
Αυτή η επίθεση διαγράφει ή ανακατευθύνει τα AWS KMS aliases, σπάζοντας την επίλυση κλειδιού και προκαλώντας άμεσες αποτυχίες σε οποιεσδήποτε υπηρεσίες που βασίζονται σε αυτά τα aliases, με αποτέλεσμα denial-of-service. Με δικαιώματα όπως `kms:DeleteAlias` ή `kms:UpdateAlias` ένας attacker μπορεί να αφαιρέσει ή να επαναδείξει aliases και να διαταράξει κρυπτογραφικές λειτουργίες (π.χ., encrypt, describe). Οποιαδήποτε υπηρεσία που αναφέρεται στο alias αντί για το key ID μπορεί να αποτύχει μέχρι το alias να αποκατασταθεί ή να αντιστοιχηθεί σωστά.
|
||||
> Σημειώστε ότι η AWS πλέον **αποτρέπει την εκτέλεση των προηγούμενων ενεργειών από cross account:**
|
||||
>
|
||||
> ### Change or delete Alias
|
||||
> Αυτή η επίθεση διαγράφει ή ανακατευθύνει τα AWS KMS aliases, διακόπτοντας την επίλυση του κλειδιού και προκαλώντας άμεσες αποτυχίες σε οποιεσδήποτε υπηρεσίες που βασίζονται σε αυτά τα aliases, οδηγώντας σε denial-of-service. Με δικαιώματα όπως `kms:DeleteAlias` ή `kms:UpdateAlias` ένας attacker μπορεί να αφαιρέσει ή να επαναστοχεύσει τα aliases και να διαταράξει κρυπτογραφικές λειτουργίες (π.χ., encrypt, describe). Οποιαδήποτε υπηρεσία που αναφέρεται στο alias αντί για το key ID μπορεί να αποτύχει μέχρι να αποκατασταθεί το alias ή να γίνει σωστή επαναχαρτογράφηση.
|
||||
```bash
|
||||
# Delete Alias
|
||||
aws kms delete-alias --alias-name alias/<key_alias>
|
||||
@@ -134,8 +134,8 @@ aws kms update-alias \
|
||||
--alias-name alias/<key_alias> \
|
||||
--target-key-id <new_target_key>
|
||||
```
|
||||
### Cancel Key Deletion
|
||||
Με δικαιώματα όπως `kms:CancelKeyDeletion` και `kms:EnableKey`, ένας δράστης μπορεί να ακυρώσει μια προγραμματισμένη διαγραφή ενός AWS KMS customer master key και αργότερα να το ενεργοποιήσει ξανά. Με αυτόν τον τρόπο ανακτάται το κλειδί (αρχικά σε κατάσταση Disabled) και αποκαθίσταται η ικανότητά του να decrypt δεδομένα που προηγουμένως ήταν προστατευμένα, επιτρέποντας exfiltration.
|
||||
### Ακύρωση Διαγραφής Κλειδιού
|
||||
Με δικαιώματα όπως `kms:CancelKeyDeletion` και `kms:EnableKey`, ένα άτομο μπορεί να ακυρώσει μια προγραμματισμένη διαγραφή ενός AWS KMS customer master key και αργότερα να το ενεργοποιήσει ξανά. Με αυτόν τον τρόπο ανακτάται το κλειδί (αρχικά στην κατάσταση Disabled) και αποκαθίσταται η ικανότητά του να αποκρυπτογραφεί δεδομένα που προηγουμένως ήταν προστατευμένα, επιτρέποντας exfiltration.
|
||||
```bash
|
||||
# Firts cancel de deletion
|
||||
aws kms cancel-key-deletion \
|
||||
@@ -146,21 +146,21 @@ aws kms enable-key \
|
||||
--key-id <Key_ID>
|
||||
```
|
||||
### Disable Key
|
||||
Με την άδεια `kms:DisableKey`, ένας δράστης μπορεί να απενεργοποιήσει ένα AWS KMS customer master key, εμποδίζοντάς το να χρησιμοποιηθεί για encryption ή decryption. Αυτό διακόπτει την πρόσβαση για οποιεσδήποτε υπηρεσίες που εξαρτώνται από εκείνο το CMK και μπορεί να προκαλέσει άμεσες διαταραχές ή ένα denial-of-service έως ότου το κλειδί επανενεργοποιηθεί.
|
||||
Με την άδεια `kms:DisableKey`, ένας χρήστης μπορεί να απενεργοποιήσει ένα AWS KMS customer master key, εμποδίζοντάς το να χρησιμοποιηθεί για κρυπτογράφηση ή αποκρυπτογράφηση. Αυτό διακόπτει την πρόσβαση για οποιεσδήποτε υπηρεσίες που εξαρτώνται από αυτό το CMK και μπορεί να προκαλέσει άμεσες διαταραχές ή άρνηση υπηρεσίας έως ότου το κλειδί ενεργοποιηθεί ξανά.
|
||||
```bash
|
||||
aws kms disable-key \
|
||||
--key-id <key_id>
|
||||
```
|
||||
### Derive Shared Secret
|
||||
Με την άδεια `kms:DeriveSharedSecret`, ένας χρήστης μπορεί να χρησιμοποιήσει ένα ιδιωτικό κλειδί που φυλάσσεται στο KMS μαζί με ένα δημόσιο κλειδί που παρέχεται από τον χρήστη για να υπολογίσει ένα κοινό μυστικό ECDH.
|
||||
### Παράγω Κοινό Μυστικό
|
||||
Με την άδεια `kms:DeriveSharedSecret`, ένας ενεργός χρήστης μπορεί να χρησιμοποιήσει ένα ιδιωτικό κλειδί που διατηρείται στο KMS μαζί με ένα δημόσιο κλειδί παρεχόμενο από τον χρήστη για να υπολογίσει ένα κοινό μυστικό ECDH.
|
||||
```bash
|
||||
aws kms derive-shared-secret \
|
||||
--key-id <key_id> \
|
||||
--public-key fileb:///<route_to_public_key> \
|
||||
--key-agreement-algorithm <algorithm>
|
||||
```
|
||||
### Πλαστοπροσωπία μέσω kms:Sign
|
||||
Με την άδεια `kms:Sign`, μια οντότητα μπορεί να χρησιμοποιήσει ένα CMK αποθηκευμένο στο KMS για να υπογράψει κρυπτογραφικά δεδομένα χωρίς να αποκαλύψει το private key, παράγοντας έγκυρες υπογραφές που μπορούν να επιτρέψουν πλαστοπροσωπία ή να εξουσιοδοτήσουν κακόβουλες ενέργειες.
|
||||
### Impersonation μέσω kms:Sign
|
||||
Με την άδεια `kms:Sign`, ένας actor μπορεί να χρησιμοποιήσει ένα CMK που είναι αποθηκευμένο στο KMS για να υπογράψει κρυπτογραφικά δεδομένα χωρίς να εκθέσει το private key, παράγοντας έγκυρες υπογραφές που μπορούν να επιτρέψουν impersonation ή να εξουσιοδοτήσουν κακόβουλες ενέργειες.
|
||||
```bash
|
||||
aws kms sign \
|
||||
--key-id <key-id> \
|
||||
@@ -169,7 +169,7 @@ aws kms sign \
|
||||
--message-type RAW
|
||||
```
|
||||
### DoS with Custom Key Stores
|
||||
Με δικαιώματα όπως `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore`, ή `kms:UpdateCustomKeyStore`, ένας δράστης μπορεί να τροποποιήσει, αποσυνδέσει ή διαγράψει ένα AWS KMS Custom Key Store (CKS), καθιστώντας τα κύρια κλειδιά του μη λειτουργικά. Αυτό διακόπτει τις λειτουργίες κρυπτογράφησης, αποκρυπτογράφησης και υπογραφής για οποιεσδήποτε υπηρεσίες που βασίζονται σε αυτά τα κλειδιά και μπορεί να προκαλέσει άμεση denial-of-service. Συνεπώς, ο περιορισμός και η παρακολούθηση αυτών των δικαιωμάτων είναι κρίσιμης σημασίας.
|
||||
Με δικαιώματα όπως `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore` ή `kms:UpdateCustomKeyStore`, ένας παράγοντας μπορεί να τροποποιήσει, αποσυνδέσει ή διαγράψει ένα AWS KMS Custom Key Store (CKS), καθιστώντας τα κύρια κλειδιά του μη λειτουργικά. Αυτό διακόπτει τις λειτουργίες κρυπτογράφησης, αποκρυπτογράφησης και υπογραφής για οποιεσδήποτε υπηρεσίες που εξαρτώνται από αυτά τα κλειδιά και μπορεί να προκαλέσει άμεσο denial-of-service. Γι' αυτό είναι κρίσιμο να περιορίζονται και να παρακολουθούνται αυτά τα δικαιώματα.
|
||||
```bash
|
||||
aws kms delete-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID>
|
||||
|
||||
|
||||
+62
-43
@@ -4,7 +4,7 @@
|
||||
|
||||
## IAM
|
||||
|
||||
Για περισσότερες πληροφορίες σχετικά με το IAM δείτε:
|
||||
Για περισσότερες πληροφορίες για το IAM δείτε:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-services/aws-iam-enum.md
|
||||
@@ -12,64 +12,83 @@
|
||||
|
||||
### **`iam:CreatePolicyVersion`**
|
||||
|
||||
Παρέχει τη δυνατότητα δημιουργίας νέας έκδοσης policy του IAM, παρακάμπτοντας την ανάγκη για την άδεια `iam:SetDefaultPolicyVersion` με τη χρήση της σημαίας `--set-as-default`. Αυτό επιτρέπει τον ορισμό προσαρμοσμένων δικαιωμάτων.
|
||||
Παρέχει τη δυνατότητα δημιουργίας νέας έκδοσης policy του IAM, παρακάμπτοντας την ανάγκη για την άδεια `iam:SetDefaultPolicyVersion` χρησιμοποιώντας την παράμετρο `--set-as-default`. Αυτό επιτρέπει τον ορισμό προσαρμοσμένων δικαιωμάτων.
|
||||
|
||||
**Exploit Command:**
|
||||
```bash
|
||||
aws iam create-policy-version --policy-arn <target_policy_arn> \
|
||||
--policy-document file:///path/to/administrator/policy.json --set-as-default
|
||||
```
|
||||
**Επιπτώσεις:** Αυξάνει άμεσα τα προνόμια επιτρέποντας οποιαδήποτε ενέργεια σε οποιονδήποτε πόρο.
|
||||
**Επίπτωση:** Κλιμακώνει άμεσα τα προνόμια επιτρέποντας οποιαδήποτε ενέργεια σε οποιονδήποτε πόρο.
|
||||
|
||||
### **`iam:SetDefaultPolicyVersion`**
|
||||
|
||||
Επιτρέπει την αλλαγή της προεπιλεγμένης έκδοσης μιας πολιτικής IAM σε άλλη υπάρχουσα έκδοση, ενδεχομένως αυξάνοντας τα προνόμια εάν η νέα έκδοση έχει περισσότερα δικαιώματα.
|
||||
Επιτρέπει την αλλαγή της προεπιλεγμένης έκδοσης μιας IAM policy σε άλλη υπάρχουσα έκδοση, ενδεχομένως να κλιμακώνει τα προνόμια εάν η νέα έκδοση παρέχει περισσότερα δικαιώματα.
|
||||
|
||||
**Bash Command:**
|
||||
**Εντολή Bash:**
|
||||
```bash
|
||||
aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2
|
||||
```
|
||||
**Impact:** Έμμεση privilege escalation μέσω χορήγησης περισσότερων δικαιωμάτων.
|
||||
**Επίπτωση:** Έμμεση privilege escalation μέσω της παροχής περισσότερων δικαιωμάτων.
|
||||
|
||||
### **`iam:CreateAccessKey`**
|
||||
### **`iam:CreateAccessKey`, (`iam:DeleteAccessKey`)**
|
||||
|
||||
Επιτρέπει τη δημιουργία access key ID και secret access key για άλλον χρήστη, οδηγώντας σε πιθανή privilege escalation.
|
||||
Επιτρέπει τη δημιουργία access key ID και secret access key για άλλο χρήστη, που μπορεί να οδηγήσει σε πιθανή privilege escalation.
|
||||
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam create-access-key --user-name <target_user>
|
||||
```
|
||||
**Επίπτωση:** Άμεση κλιμάκωση προνομίων μέσω ανάληψης των εκτεταμένων δικαιωμάτων άλλου χρήστη.
|
||||
**Impact:** Άμεση κλιμάκωση προνομίων αναλαμβάνοντας τα εκτεταμένα δικαιώματα άλλου χρήστη.
|
||||
|
||||
Σημειώστε ότι ένας χρήστης μπορεί να έχει δημιουργήσει μόνο 2 access keys, οπότε αν ένας χρήστης έχει ήδη 2 access keys θα χρειαστείτε την άδεια `iam:DeleteAccessKey` για να διαγράψετε ένα από αυτά ώστε να μπορείτε να δημιουργήσετε ένα νέο:
|
||||
```bash
|
||||
aws iam delete-access-key --uaccess-key-id <key_id>
|
||||
```
|
||||
### **`iam:CreateVirtualMFADevice` + `iam:EnableMFADevice`**
|
||||
|
||||
Εάν μπορείτε να δημιουργήσετε μια νέα virtual MFA device και να την ενεργοποιήσετε σε έναν άλλο χρήστη, μπορείτε ουσιαστικά να εγγράψετε το δικό σας MFA για αυτόν τον χρήστη και στη συνέχεια να ζητήσετε μια MFA-backed session για τα credentials του.
|
||||
|
||||
**Exploit:**
|
||||
```bash
|
||||
# Create a virtual MFA device (this returns the serial and the base32 seed)
|
||||
aws iam create-virtual-mfa-device --virtual-mfa-device-name <mfa_name>
|
||||
|
||||
# Generate 2 consecutive TOTP codes from the seed, then enable it for the user
|
||||
aws iam enable-mfa-device --user-name <target_user> --serial-number <serial> \
|
||||
--authentication-code1 <code1> --authentication-code2 <code2>
|
||||
```
|
||||
**Επίπτωση:** Άμεση κλιμάκωση προνομίων με την κατάληψη της εγγραφής MFA ενός χρήστη (και στη συνέχεια χρήση των δικαιωμάτων του).
|
||||
|
||||
### **`iam:CreateLoginProfile` | `iam:UpdateLoginProfile`**
|
||||
|
||||
Επιτρέπει τη δημιουργία ή ενημέρωση ενός login profile, συμπεριλαμβανομένης της ρύθμισης κωδικών για είσοδο στην κονσόλα AWS, οδηγώντας σε άμεση κλιμάκωση προνομίων.
|
||||
Επιτρέπει τη δημιουργία ή ενημέρωση ενός login profile, συμπεριλαμβανομένης της ρύθμισης κωδικών για το AWS console login, οδηγώντας σε άμεση κλιμάκωση προνομίων.
|
||||
|
||||
**Exploit for Creation:**
|
||||
```bash
|
||||
aws iam create-login-profile --user-name target_user --no-password-reset-required \
|
||||
--password '<password>'
|
||||
```
|
||||
**Exploit για Ενημέρωση:**
|
||||
**Exploit για ενημέρωση:**
|
||||
```bash
|
||||
aws iam update-login-profile --user-name target_user --no-password-reset-required \
|
||||
--password '<password>'
|
||||
```
|
||||
**Επίπτωση:** Άμεση κλιμάκωση προνομίων μέσω σύνδεσης ως "οποιοσδήποτε" χρήστης.
|
||||
**Επίπτωση:** Direct privilege escalation by logging in as "οποιοσδήποτε" χρήστης.
|
||||
|
||||
### **`iam:UpdateAccessKey`**
|
||||
|
||||
Επιτρέπει την ενεργοποίηση ενός απενεργοποιημένου access key, ενδεχομένως οδηγώντας σε μη εξουσιοδοτημένη πρόσβαση εάν ο επιτιθέμενος κατέχει το απενεργοποιημένο κλειδί.
|
||||
Επιτρέπει την ενεργοποίηση ενός απενεργοποιημένου access key, ενδεχομένως οδηγώντας σε μη εξουσιοδοτημένη πρόσβαση αν ο επιτιθέμενος κατέχει το απενεργοποιημένο access key.
|
||||
|
||||
**Exploit:**
|
||||
**Εκμετάλλευση:**
|
||||
```bash
|
||||
aws iam update-access-key --access-key-id <ACCESS_KEY_ID> --status Active --user-name <username>
|
||||
```
|
||||
**Επίπτωση:** Άμεση privilege escalation μέσω επανενεργοποίησης access keys.
|
||||
**Επίπτωση:** Άμεση privilege escalation με την επανενεργοποίηση των access keys.
|
||||
|
||||
### **`iam:CreateServiceSpecificCredential` | `iam:ResetServiceSpecificCredential`**
|
||||
|
||||
Επιτρέπει τη δημιουργία ή επαναφορά διαπιστευτηρίων για συγκεκριμένες υπηρεσίες AWS (π.χ. CodeCommit, Amazon Keyspaces), κληρονομώντας τα δικαιώματα του συσχετισμένου χρήστη.
|
||||
Επιτρέπει τη δημιουργία ή επαναφορά διαπιστευτηρίων για συγκεκριμένες υπηρεσίες AWS (π.χ. CodeCommit, Amazon Keyspaces), κληρονομώντας τα δικαιώματα του σχετικού χρήστη.
|
||||
|
||||
**Exploit for Creation:**
|
||||
```bash
|
||||
@@ -83,27 +102,27 @@ aws iam reset-service-specific-credential --service-specific-credential-id <cred
|
||||
|
||||
### **`iam:AttachUserPolicy` || `iam:AttachGroupPolicy`**
|
||||
|
||||
Επιτρέπει την επισύναψη πολιτικών σε χρήστες ή ομάδες, κλιμακώνοντας άμεσα τα προνόμια μέσω της κληρονομιάς των δικαιωμάτων της επισυναπτόμενης πολιτικής.
|
||||
Επιτρέπει την επισύναψη πολιτικών σε χρήστες ή ομάδες, κλιμακώνοντας άμεσα τα προνόμια κληρονομώντας τα δικαιώματα της επισυναπτόμενης πολιτικής.
|
||||
|
||||
**Exploit for User:**
|
||||
**Exploit για χρήστη:**
|
||||
```bash
|
||||
aws iam attach-user-policy --user-name <username> --policy-arn "<policy_arn>"
|
||||
```
|
||||
**Exploit για Group:**
|
||||
**Exploit για Ομάδα:**
|
||||
```bash
|
||||
aws iam attach-group-policy --group-name <group_name> --policy-arn "<policy_arn>"
|
||||
```
|
||||
**Impact:** Άμεση κλιμάκωση προνομίων σε οτιδήποτε επιτρέπει η policy.
|
||||
**Επίπτωση:** Direct privilege escalation σε οτιδήποτε επιτρέπει η policy.
|
||||
|
||||
### **`iam:AttachRolePolicy`,** ( `sts:AssumeRole`|`iam:createrole`) | **`iam:PutUserPolicy` | `iam:PutGroupPolicy` | `iam:PutRolePolicy`**
|
||||
|
||||
Επιτρέπει την επισύναψη ή την εισαγωγή policies σε roles, users ή groups, επιτρέποντας άμεση κλιμάκωση προνομίων μέσω παραχώρησης επιπλέον δικαιωμάτων.
|
||||
Επιτρέπει την επισύναψη ή την εισαγωγή policies σε roles, users ή groups, επιτρέποντας direct privilege escalation με τη χορήγηση επιπλέον δικαιωμάτων.
|
||||
|
||||
**Exploit για Role:**
|
||||
**Exploit for Role:**
|
||||
```bash
|
||||
aws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"
|
||||
```
|
||||
**Εκμετάλλευση για ενσωματωμένες πολιτικές:**
|
||||
**Εκμετάλλευση για Ενσωματωμένες Πολιτικές:**
|
||||
```bash
|
||||
aws iam put-user-policy --user-name <username> --policy-name "<policy_name>" \
|
||||
--policy-document "file:///path/to/policy.json"
|
||||
@@ -127,28 +146,28 @@ aws iam put-role-policy --role-name <role_name> --policy-name "<policy_name>" \
|
||||
]
|
||||
}
|
||||
```
|
||||
**Επίπτωση:** Άμεση κλιμάκωση προνομίων προσθέτοντας δικαιώματα μέσω πολιτικών.
|
||||
**Επίπτωση:** Άμεση privilege escalation με την προσθήκη δικαιωμάτων μέσω πολιτικών.
|
||||
|
||||
### **`iam:AddUserToGroup`**
|
||||
|
||||
Επιτρέπει σε κάποιον να προσθέσει τον εαυτό του σε μια ομάδα IAM, κλιμακώνοντας τα προνόμια με την κληρονομία των δικαιωμάτων της ομάδας.
|
||||
Επιτρέπει σε κάποιον να προσθέσει τον εαυτό του σε μια IAM ομάδα, escalating privileges με την κληρονομία των δικαιωμάτων της ομάδας.
|
||||
|
||||
**Εκμετάλλευση:**
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam add-user-to-group --group-name <group_name> --user-name <username>
|
||||
```
|
||||
**Επιπτώσεις:** Άμεση αναβάθμιση προνομίων στο επίπεδο των δικαιωμάτων της ομάδας.
|
||||
**Επίπτωση:** Άμεση κλιμάκωση προνομίων στο επίπεδο των δικαιωμάτων της ομάδας.
|
||||
|
||||
### **`iam:UpdateAssumeRolePolicy`**
|
||||
|
||||
Επιτρέπει την τροποποίηση του assume role policy document ενός role, επιτρέποντας την ανάληψη του role και των συσχετιζόμενων δικαιωμάτων.
|
||||
Επιτρέπει την τροποποίηση του assume role policy document ενός role, επιτρέποντας την ανάληψη του role και των συσχετισμένων δικαιωμάτων του.
|
||||
|
||||
**Εκμετάλλευση:**
|
||||
```bash
|
||||
aws iam update-assume-role-policy --role-name <role_name> \
|
||||
--policy-document file:///path/to/assume/role/policy.json
|
||||
```
|
||||
Όταν η πολιτική έχει την εξής μορφή, δίνοντας στον χρήστη την άδεια να αναλάβει τον ρόλο:
|
||||
Όπου η πολιτική έχει την εξής μορφή, η οποία δίνει στον χρήστη την άδεια να αναλάβει τον ρόλο:
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
@@ -163,38 +182,38 @@ aws iam update-assume-role-policy --role-name <role_name> \
|
||||
]
|
||||
}
|
||||
```
|
||||
**Επίδραση:** Άμεση κλιμάκωση προνομίων με την ανάληψη των δικαιωμάτων οποιουδήποτε ρόλου.
|
||||
**Επίπτωση:** Άμεση κλιμάκωση προνομίων με την ανάληψη των δικαιωμάτων οποιουδήποτε ρόλου.
|
||||
|
||||
### **`iam:UploadSSHPublicKey` || `iam:DeactivateMFADevice`**
|
||||
|
||||
Επιτρέπει τη μεταφόρτωση δημόσιου κλειδιού SSH για αυθεντικοποίηση στο CodeCommit και την απενεργοποίηση συσκευών MFA, οδηγώντας σε πιθανή έμμεση κλιμάκωση προνομίων.
|
||||
Επιτρέπει τη μεταφόρτωση ενός δημόσιου κλειδιού SSH για πιστοποίηση στο CodeCommit και την απενεργοποίηση συσκευών MFA, οδηγώντας σε πιθανή έμμεση κλιμάκωση προνομίων.
|
||||
|
||||
**Εκμετάλλευση για μεταφόρτωση κλειδιού SSH:**
|
||||
**Exploit για SSH Key Upload:**
|
||||
```bash
|
||||
aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_body>
|
||||
```
|
||||
**Exploit για την απενεργοποίηση του MFA:**
|
||||
**Exploit για απενεργοποίηση του MFA:**
|
||||
```bash
|
||||
aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_number>
|
||||
```
|
||||
**Επίπτωση:** Έμμεση privilege escalation με την ενεργοποίηση πρόσβασης στο CodeCommit ή την απενεργοποίηση της προστασίας MFA.
|
||||
**Impact:** Έμμεση κλιμάκωση προνομίων μέσω παροχής πρόσβασης στο CodeCommit ή απενεργοποίησης της προστασίας MFA.
|
||||
|
||||
### **`iam:ResyncMFADevice`**
|
||||
|
||||
Επιτρέπει τον επανασυγχρονισμό μιας συσκευής MFA, ο οποίος ενδέχεται να οδηγήσει σε έμμεση privilege escalation μέσω χειρισμού της προστασίας MFA.
|
||||
Επιτρέπει τον επανασυγχρονισμό μιας συσκευής MFA, ενδεχομένως οδηγώντας σε έμμεση κλιμάκωση προνομίων μέσω χειρισμού της προστασίας MFA.
|
||||
|
||||
**Εντολή Bash:**
|
||||
**Bash Command:**
|
||||
```bash
|
||||
aws iam resync-mfa-device --user-name <username> --serial-number <serial_number> \
|
||||
--authentication-code1 <code1> --authentication-code2 <code2>
|
||||
```
|
||||
**Επίδραση:** Έμμεση κλιμάκωση προνομίων προσθέτοντας ή τροποποιώντας συσκευές MFA.
|
||||
**Επίπτωση:** Έμμεση κλιμάκωση προνομίων προσθέτοντας ή τροποποιώντας συσκευές MFA.
|
||||
|
||||
### `iam:UpdateSAMLProvider`, `iam:ListSAMLProviders`, (`iam:GetSAMLProvider`)
|
||||
|
||||
Με αυτά τα δικαιώματα μπορείτε να **αλλάξετε τα XML μεταδεδομένα της SAML σύνδεσης**. Στη συνέχεια, μπορείτε να καταχραστείτε την **SAML federation** για να **login** με οποιοδήποτε **role που την εμπιστεύεται**.
|
||||
Με αυτά τα δικαιώματα μπορείτε να **αλλάξετε τα XML metadata της SAML σύνδεσης**. Έπειτα, θα μπορούσατε να καταχραστείτε την **SAML federation** για να **login** με οποιοδήποτε **role που την εμπιστεύεται**.
|
||||
|
||||
Σημειώστε ότι κάνοντας αυτό **οι νόμιμοι χρήστες δεν θα μπορούν να κάνουν login**. Ωστόσο, μπορείτε να πάρετε το XML, να το τοποθετήσετε το δικό σας, να κάνετε login και να επαναφέρετε την προηγούμενη ρύθμιση.
|
||||
Σημειώστε ότι κάνοντας αυτό **οι legit users δεν θα μπορούν να login**. Ωστόσο, μπορείτε να αποκτήσετε το XML, οπότε μπορείτε να το αντικαταστήσετε με το δικό σας, να login και να επαναφέρετε την προηγούμενη ρύθμιση.
|
||||
```bash
|
||||
# List SAMLs
|
||||
aws iam list-saml-providers
|
||||
@@ -211,11 +230,11 @@ aws iam update-saml-provider --saml-metadata-document <value> --saml-provider-ar
|
||||
aws iam update-saml-provider --saml-metadata-document <previous-xml> --saml-provider-arn <arn>
|
||||
```
|
||||
> [!NOTE]
|
||||
> TODO: Ένα Tool ικανό να παράγει τα SAML metadata και να κάνει login με έναν συγκεκριμένο role
|
||||
> TODO: Ένα εργαλείο ικανό να δημιουργήσει τα SAML metadata και να κάνει login με έναν συγκεκριμένο ρόλο
|
||||
|
||||
### `iam:UpdateOpenIDConnectProviderThumbprint`, `iam:ListOpenIDConnectProviders`, (`iam:`**`GetOpenIDConnectProvider`**)
|
||||
|
||||
(Αβέβαιο για αυτό) Αν ένας attacker έχει αυτές τις **permissions**, θα μπορούσε να προσθέσει ένα νέο **Thumbprint** και να καταφέρει να κάνει login σε όλους τους roles που εμπιστεύονται τον provider.
|
||||
(Δεν είμαι σίγουρος γι' αυτό) Εάν ένας επιτιθέμενος έχει αυτά τα **permissions**, θα μπορούσε να προσθέσει ένα νέο **Thumbprint** και να καταφέρει να login σε όλους τους ρόλους που εμπιστεύονται τον provider.
|
||||
```bash
|
||||
# List providers
|
||||
aws iam list-open-id-connect-providers
|
||||
@@ -226,7 +245,7 @@ aws iam update-open-id-connect-provider-thumbprint --open-id-connect-provider-ar
|
||||
```
|
||||
### `iam:PutUserPermissionsBoundary`
|
||||
|
||||
Αυτό το permissions επιτρέπει σε έναν attacker να ενημερώσει το permissions boundary ενός χρήστη, ενδεχομένως αυξάνοντας τα privileges του επιτρέποντάς του να εκτελεί ενέργειες που κανονικά περιορίζονται από τα υπάρχοντα permissions του.
|
||||
Αυτή η άδεια επιτρέπει σε έναν attacker να ενημερώσει το permissions boundary ενός χρήστη, πιθανόν κλιμακώνοντας τα privileges του, επιτρέποντάς του να εκτελεί ενέργειες που κανονικά περιορίζονται από τις υπάρχουσες άδειές του.
|
||||
```bash
|
||||
aws iam put-user-permissions-boundary \
|
||||
--user-name <nombre_usuario> \
|
||||
@@ -249,7 +268,7 @@ Un ejemplo de una política que no aplica ninguna restricción es:
|
||||
```
|
||||
### `iam:PutRolePermissionsBoundary`
|
||||
|
||||
Ένας χρήστης με iam:PutRolePermissionsBoundary μπορεί να ορίσει ένα περίγραμμα δικαιωμάτων σε έναν υπάρχοντα ρόλο. Ο κίνδυνος προκύπτει όταν κάποιος με αυτήν την άδεια αλλάζει το περίγραμμα ενός ρόλου: μπορεί να περιορίσει ακατάλληλα τις λειτουργίες (προκαλώντας διακοπή υπηρεσίας) ή, εάν επισυνάψει ένα επιτρεπτικό περίγραμμα, ουσιαστικά να επεκτείνει ό,τι μπορεί να κάνει ο ρόλος και να κλιμακώσει τα προνόμια.
|
||||
Ένας χρήστης με `iam:PutRolePermissionsBoundary` μπορεί να ορίσει ένα όριο δικαιωμάτων σε έναν υπάρχοντα ρόλο. Ο κίνδυνος προκύπτει όταν κάποιος με αυτό το δικαίωμα αλλάζει το όριο ενός ρόλου: μπορεί να περιορίσει ακατάλληλα λειτουργίες (προκαλώντας διακοπή υπηρεσιών) ή, αν επισυνάψει ένα πολύ επιτρεπτικό όριο, να επεκτείνει ουσιαστικά τις δυνατότητες του ρόλου και να αναβαθμίσει προνόμια.
|
||||
```bash
|
||||
aws iam put-role-permissions-boundary \
|
||||
--role-name <Role_Name> \
|
||||
|
||||
Reference in New Issue
Block a user