Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs σταHackTricks και HackTricks Cloud αποθετήρια στο GitHub.
IAM
Μπορείτε να βρείτε μια περιγραφή του IAM σε:
Απαρίθμηση
Βασικές άδειες που απαιτούνται:
iam:ListPolicies, iam:GetPolicy και iam:GetPolicyVersion
iam:ListRoles
iam:ListUsers
iam:ListGroups
iam:ListGroupsForUser
iam:ListAttachedUserPolicies
iam:ListAttachedRolePolicies
iam:ListAttachedGroupPolicies
iam:ListUserPolicies και iam:GetUserPolicy
iam:ListGroupPolicies και iam:GetGroupPolicy
iam:ListRolePolicies και iam:GetRolePolicy
# All IAMs## Retrieves information about all IAM users, groups, roles, and policies## in your Amazon Web Services account, including their relationships to## one another. Use this operation to obtain a snapshot of the configura-## tion of IAM permissions (users, groups, roles, and policies) in your## account.awsiamget-account-authorization-details# List usersawsiamlist-usersawsiamlist-ssh-public-keys#User keys for CodeCommitawsiamget-ssh-public-key--user-name<username>--ssh-public-key-id<id>--encodingSSH#Get public key with metadataawsiamlist-service-specific-credentials#Get special permissions of the IAM user over specific servicesawsiamget-user--user-name<username>#Get metadata of user, included permissions boundariesawsiamlist-access-keys#List created access keys## inline policiesawsiamlist-user-policies--user-name<username>#Get inline policies of the userawsiamget-user-policy--user-name<username>--policy-name<policyname>#Get inline policy details## attached policiesawsiamlist-attached-user-policies--user-name<username>#Get policies of user, it doesn't get inline policies# List groupsawsiamlist-groups#Get groupsawsiamlist-groups-for-user--user-name<username>#Get groups of a userawsiamget-group--group-name<name>#Get group name info## inline policiesawsiamlist-group-policies--group-name<username>#Get inline policies of the groupawsiamget-group-policy--group-name<username>--policy-name<policyname>#Get an inline policy info## attached policiesawsiamlist-attached-group-policies--group-name<name>#Get policies of group, it doesn't get inline policies# List rolesawsiamlist-roles#Get rolesawsiamget-role--role-name<role-name>#Get role## inline policiesawsiamlist-role-policies--role-name<name>#Get inline policies of a roleawsiamget-role-policy--role-name<name>--policy-name<name>#Get inline policy details## attached policiesawsiamlist-attached-role-policies--role-name<role-name>#Get policies of role, it doesn't get inline policies# List policiesawsiamlist-policies [--only-attached] [--scope Local]aws iam list-policies-granting-service-access --arn <identity> --service-namespaces <svc> # Get list of policies that give access to the user to the service
## Get policy contentawsiamget-policy--policy-arn<policy_arn>awsiamlist-policy-versions--policy-arn<arn>awsiamget-policy-version--policy-arn<arn:aws:iam::975426262029:policy/list_apigateways>--version-id<VERSION_X># Enumerate providersawsiamlist-saml-providersawsiamget-saml-provider--saml-provider-arn<ARN>awsiamlist-open-id-connect-providersawsiamget-open-id-connect-provider--open-id-connect-provider-arn<ARN># Password Policyawsiamget-account-password-policy# MFAawsiamlist-mfa-devicesawsiamlist-virtual-mfa-devices
Βίαιη Δύναμη Δικαιωμάτων
Εάν σας ενδιαφέρουν τα δικαιώματά σας αλλά δεν έχετε πρόσβαση για να ερευνήσετε το IAM, μπορείτε πάντα να τα αναγκάσετε με βία.
bf-aws-permissions
Το εργαλείο bf-aws-permissions είναι απλώς ένα bash script που θα εκτελέσει όλες τις ενέργειες list*, describe*, get* που μπορεί να βρει χρησιμοποιώντας τα μηνύματα βοήθειας του aws cli και θα επιστρέψει τις επιτυχείς εκτελέσεις.
Το εργαλείο bf-aws-perms-simulate μπορεί να βρει την τρέχουσα άδεια σας (ή αυτήν άλλων αρχών) αν έχετε την άδεια iam:SimulatePrincipalPolicy
# Ask for permissionspython3aws_permissions_checker.py--profile<AWS_PROFILE> [--arn <USER_ARN>]
Perms2ManagedPolicies
Εάν βρήκατε κάποιες άδειες που έχει ο χρήστης σας, και πιστεύετε ότι τους χορηγούνται από ένα διαχειριζόμενο ρόλο AWS (και όχι από έναν προσαρμοσμένο). Μπορείτε να χρησιμοποιήσετε το εργαλείο aws-Perms2ManagedRoles για να ελέγξετε όλους τους διαχειριζόμενους ρόλους AWS που χορηγούν τις άδειες που ανακαλύψατε ότι έχετε.
# Run example with my profilepython3aws-Perms2ManagedPolicies.py--profilemyadmin--permissions-fileexample-permissions.txt
Είναι δυνατόν να "γνωρίζετε" εάν οι άδειες που έχετε παραχωρηθεί από ένα διαχειριζόμενο ρόλο AWS εάν δείτε ότι έχετε άδειες πάνω σε υπηρεσίες που δεν χρησιμοποιούνται, για παράδειγμα.
Cloudtrail2IAM
CloudTrail2IAM είναι ένα εργαλείο Python που αναλύει τα logs AWS CloudTrail για να εξάγει και να συνοψίζει τις ενέργειες που έχουν γίνει από όλους ή απλά από ένα συγκεκριμένο χρήστη ή ρόλο. Το εργαλείο θα αναλύσει κάθε log cloudtrail από τον καθορισμένο κάδο.
Εάν βρείτε αρχεία .tfstate (Terraform state files) ή αρχεία CloudFormation (αυτά είναι συνήθως αρχεία yaml που βρίσκονται μέσα σε ένα bucket με το πρόθεμα cf-templates), μπορείτε επίσης να τα διαβάσετε για να βρείτε τη διαμόρφωση aws και να βρείτε ποιες άδειες έχουν ανατεθεί σε ποιον.
enumerate-iam
Για να χρησιμοποιήσετε το εργαλείο https://github.com/andresriancho/enumerate-iam πρέπει πρώτα να κατεβάσετε όλα τα σημεία API AWS, από αυτά το script generate_bruteforce_tests.py θα πάρει όλα τα "list_", "describe_", και "get_" endpoints. Και τέλος, θα προσπαθήσει να έχει πρόσβαση σε αυτά με τα δεδομένα διαπιστευτήρια και θα υποδείξει αν λειτούργησε.
(Κατά την εμπειρία μου το εργαλείο κολλάει σε κάποιο σημείο, ελέγξτε αυτήν τη διόρθωση για να προσπαθήσετε να το διορθώσετε).
Κατά την εμπειρία μου αυτό το εργαλείο είναι σαν το προηγούμενο αλλά λειτουργεί χειρότερα και ελέγχει λιγότερες άδειες
Μπορείτε επίσης να χρησιμοποιήσετε το εργαλείο weirdAAL. Αυτό το εργαλείο θα ελέγξει πολλές κοινές λειτουργίες σε διάφορες κοινές υπηρεσίες (θα ελέγξει κάποιες άδειες απαρίθμησης και επίσης κάποιες άδειες προνομιούχας αύξησης δικαιωμάτων). Αλλά θα ελέγξει μόνο τις κωδικοποιημένες ελέγξεις (η μοναδική δυνατότητα ελέγχου περισσότερων πραγμάτων είναι να κωδικοποιήσετε περισσότερα τεστ).
# Installgitclonehttps://github.com/carnal0wnage/weirdAAL.gitcdweirdAALpython3-mvenvweirdAALsourceweirdAAL/bin/activatepip3install-rrequirements.txt# Create a .env file with aws credentials such as[default]aws_access_key_id=<insertkeyid>aws_secret_access_key=<insertsecretkey># Setup DBpython3create_dbs.py# Invoke itpython3weirdAAL.py-mec2_describe_instances-tec2test# Just some ec2 testspython3weirdAAL.py-mrecon_all-tMyTarget# Check all permissions# You will see output such as:# [+] elbv2 Actions allowed are [+]# ['DescribeLoadBalancers', 'DescribeAccountLimits', 'DescribeTargetGroups']
# https://github.com/turbot/steampipe-mod-aws-insightssteampipecheckall--export=json# https://github.com/turbot/steampipe-mod-aws-perimeter# In this case you cannot output to JSON, so heck it in the dashboardsteampipedashboard
<ΤοΕργαλείοΣας>
Κανένα από τα προηγούμενα εργαλεία δεν είναι ικανό να ελέγξει κοντά σε όλα τα δικαιώματα, οπότε αν γνωρίζετε ένα καλύτερο εργαλείο, στείλτε ένα PR!
Μη Εξουσιοδοτημένη Πρόσβαση
Ανόδος Προνομίων
Στην ακόλουθη σελίδα μπορείτε να ελέγξετε πώς να καταχραστείτε τα δικαιώματα IAM για ανόδο προνομίων:
Μετά την Εκμετάλλευση του IAM
Διατήρηση του IAM
Κέντρο Ταυτότητας IAM
Μπορείτε να βρείτε μια περιγραφή του Κέντρου Ταυτότητας IAM στο:
Σύνδεση μέσω SSO με το CLI
# Connect with sso via CLI aws configure ssoawsconfiguresso[profile profile_name]sso_start_url=https://subdomain.awsapps.com/start/sso_account_id=<account_numbre>sso_role_name=AdministratorAccesssso_region=us-east-1
Απαρίθμηση
Τα κύρια στοιχεία του Κέντρου Ταυτότητας είναι:
Χρήστες και ομάδες
Σύνολα Δικαιωμάτων: Έχουν πολιτικές επισυναπτόμενες
AWS Λογαριασμοί
Στη συνέχεια, δημιουργούνται σχέσεις ώστε οι χρήστες/ομάδες να έχουν Σύνολα Δικαιωμάτων πάνω στον AWS Λογαριασμό.
Σημείωση ότι υπάρχουν 3 τρόποι για τη σύνδεση πολιτικών σε ένα Σύνολο Δικαιωμάτων. Η σύνδεση διαχειριζόμενων πολιτικών AWS, διαχειριζόμενων πολιτικών πελατών (αυτές οι πολιτικές πρέπει να δημιουργηθούν σε όλους τους λογαριασμούς που επηρεάζει το Σύνολο Δικαιωμάτων) και ενσωματωμένων πολιτικών (ορίζονται εκεί).
# Check if IAM Identity Center is usedawssso-adminlist-instances# Get Permissions sets. These are the policies that can be assignedawssso-adminlist-permission-sets--instance-arn<instance-arn>awssso-admindescribe-permission-set--instance-arn<instance-arn>--permission-set-arn<perm-set-arn>## Get managed policies of a permission setawssso-adminlist-managed-policies-in-permission-set--instance-arn<instance-arn>--permission-set-arn<perm-set-arn>## Get inline policies of a permission setawssso-adminget-inline-policy-for-permission-set--instance-arn<instance-arn>--permission-set-arn<perm-set-arn>## Get customer managed policies of a permission setaws sso-admin list-customer-managed-policy-references-in-permission-set --instance-arn <instance-arn> --permission-set-arn <perm-set-arn>
## Get boundaries of a permission setaws sso-admin get-permissions-boundary-for-permission-set --instance-arn <instance-arn> --permission-set-arn <perm-set-arn>
## List accounts a permission set is affectingaws sso-admin list-accounts-for-provisioned-permission-set --instance-arn <instance-arn> --permission-set-arn <perm-set-arn>
## List principals given a permission set in an accountaws sso-admin list-account-assignments --instance-arn <instance-arn> --permission-set-arn <perm-set-arn> --account-id <account_id>
# Get permissions sets affecting an accountawssso-adminlist-permission-sets-provisioned-to-account--instance-arn<instance-arn>--account-id<account_id># List users & groups from the identity storeawsidentitystorelist-users--identity-store-id<store-id>awsidentitystorelist-groups--identity-store-id<store-id>## Get members of groupsawsidentitystorelist-group-memberships--identity-store-id<store-id>--group-id<group-id>## Get memberships or a user or a groupawsidentitystorelist-group-memberships-for-member--identity-store-id<store-id>--member-id<member-id>
Τοπική Απαρίθμηση
Είναι δυνατόν να δημιουργήσετε μέσα στον φάκελο $HOME/.aws το αρχείο config για να ρυθμίσετε προφίλ που είναι προσβάσιμα μέσω SSO, για παράδειγμα:
Αυτή η διαμόρφωση μπορεί να χρησιμοποιηθεί με τις παρακάτω εντολές:
# Login in ms-sso-profileawsssologin--profilemy-sso-profile# Use dependent-profileawss3ls--profiledependent-profile
Όταν χρησιμοποιείται ένα προφίλ από SSO για να έχετε πρόσβαση σε κάποιες πληροφορίες, τα διαπιστευτήρια αποθηκεύονται σε ένα αρχείο μέσα στον φάκελο$HOME/.aws/sso/cache. Έτσι μπορούν να διαβαστούν και να χρησιμοποιηθούν από εκεί.
Επιπλέον, περισσότερα διαπιστευτήρια μπορούν να αποθηκευτούν στον φάκελο $HOME/.aws/cli/cache. Αυτός ο φάκελος cache χρησιμοποιείται κυρίως όταν εργάζεστε με προφίλ AWS CLI που χρησιμοποιούν διαπιστευτήρια IAM χρήστη ή υποθέτουν ρόλους μέσω IAM (χωρίς SSO). Παράδειγμα ρύθμισης:
Δημιουργία ενός χρήστη και ανάθεση δικαιωμάτων σε αυτόν
# Create user identitystore:CreateUseraws identitystore create-user --identity-store-id <store-id> --user-name privesc --display-name privesc --emails Value=sdkabflvwsljyclpma@tmmbt.net,Type=Work,Primary=True --name Formatted=privesc,FamilyName=privesc,GivenName=privesc
## After creating it try to login in the console using the selected username, you will receive an email with the code and then you will be able to select a password
Δημιουργήστε μια ομάδα και αναθέστε της δικαιώματα και ορίστε έναν ελεγχόμενο χρήστη
Δώστε επιπλέον δικαιώματα σε έναν ελεγχόμενο χρήστη ή ομάδα
Από προεπιλογή, μόνο οι χρήστες με δικαιώματα από τον Λογαριασμό Διαχείρισης θα μπορούν να έχουν πρόσβαση και έλεγχο στο Κέντρο Ταυτότητας IAM.
Ωστόσο, είναι δυνατό μέσω του Αναθέτοντα Διαχειριστή να επιτραπεί σε χρήστες από διαφορετικό λογαριασμό να το διαχειριστοών. Δεν θα έχουν ακριβώς τα ίδια δικαιώματα, αλλά θα μπορούν να εκτελούν δραστηριότητες διαχείρισης.