iam:ListPolicies, iam:GetPolicy und iam:GetPolicyVersion
iam:ListRoles
iam:ListUsers
iam:ListGroups
iam:ListGroupsForUser
iam:ListAttachedUserPolicies
iam:ListAttachedRolePolicies
iam:ListAttachedGroupPolicies
iam:ListUserPolicies und iam:GetUserPolicy
iam:ListGroupPolicies und iam:GetGroupPolicy
iam:ListRolePolicies und 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
Berechtigungen Brute Force
Wenn Sie an Ihren eigenen Berechtigungen interessiert sind, aber keinen Zugriff auf die Abfrage von IAM haben, könnten Sie sie immer brute-forcen.
bf-aws-berechtigungen
Das Tool bf-aws-berechtigungen ist nur ein Bash-Skript, das unter Verwendung des angegebenen Profils alle list*, describe*, get* Aktionen ausführt, die es mithilfe der Hilfe von aws cli finden kann, und die erfolgreichen Ausführungen zurückgibt.
Das Tool bf-aws-perms-simulate kann Ihre aktuellen Berechtigungen (oder die von anderen Prinzipalen) finden, wenn Sie die Berechtigung iam:SimulatePrincipalPolicy haben.
# Ask for permissionspython3aws_permissions_checker.py--profile<AWS_PROFILE> [--arn <USER_ARN>]
Perms2ManagedPolicies
Wenn Sie Berechtigungen gefunden haben, die Ihr Benutzer hat, und Sie glauben, dass sie von einer verwalteten AWS-Rolle (und nicht von einer benutzerdefinierten Rolle) gewährt werden, können Sie das Tool aws-Perms2ManagedRoles verwenden, um alle AWS-verwalteten Rollen zu überprüfen, die die von Ihnen entdeckten Berechtigungen gewähren.
# Run example with my profilepython3aws-Perms2ManagedPolicies.py--profilemyadmin--permissions-fileexample-permissions.txt
Es ist möglich zu "wissen", ob die Berechtigungen, die Sie haben, von einer von AWS verwalteten Rolle gewährt werden, wenn Sie feststellen, dass Sie Berechtigungen für Dienste haben, die beispielsweise nicht verwendet werden.
Cloudtrail2IAM
CloudTrail2IAM ist ein Python-Tool, das AWS CloudTrail-Protokolle analysiert, um Aktionen zu extrahieren und zusammenzufassen, die von jedem oder nur einem bestimmten Benutzer oder einer bestimmten Rolle durchgeführt wurden. Das Tool wird jedes CloudTrail-Protokoll aus dem angegebenen Bucket analysieren.
Wenn Sie .tfstate (Terraform-Zustandsdateien) oder CloudFormation-Dateien finden (diese befinden sich normalerweise in YAML-Dateien in einem Bucket mit dem Präfix cf-templates), können Sie diese auch lesen, um AWS-Konfigurationen zu finden und herauszufinden, welche Berechtigungen für wen erteilt wurden.
enumerate-iam
Um das Tool https://github.com/andresriancho/enumerate-iam zu verwenden, müssen Sie zuerst alle API AWS-Endpunkte herunterladen. Das Skript generate_bruteforce_tests.py wird alle "list_", "describe_" und "get_" Endpunkte aus diesen abrufen. Schließlich wird versucht, auf sie zuzugreifen, und es wird angezeigt, ob es funktioniert hat.
(In meiner Erfahrung hängt das Tool an einem bestimmten Punkt, überprüfen Sie diese Korrektur, um zu versuchen, das zu beheben).
In meiner Erfahrung ist dieses Tool wie das vorherige, funktioniert jedoch schlechter und überprüft weniger Berechtigungen.
Sie könnten auch das Tool weirdAAL verwenden. Dieses Tool überprüft mehrere gängige Operationen auf mehreren gängigen Diensten (es überprüft einige Berechtigungen für die Aufzählung und auch einige Berechtigungen für die Privilegieneskalation). Es überprüft jedoch nur die codierten Überprüfungen (der einzige Weg, um mehr zu überprüfen, besteht darin, weitere Tests zu codieren).
# 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']
Absicherungstools zum Durchsuchen von Berechtigungen
# 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
<DeinTool>
Keines der vorherigen Tools ist in der Lage, nahezu alle Berechtigungen zu überprüfen, daher sende einen Pull Request, wenn du ein besseres Tool kennst!
# 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
Auflistung
Die Hauptelemente des Identitätszentrums sind:
Benutzer und Gruppen
Berechtigungssätze: Haben Richtlinien angehängt
AWS-Konten
Dann werden Beziehungen erstellt, damit Benutzer/Gruppen Berechtigungssätze über AWS-Konto haben.
Beachten Sie, dass es 3 Möglichkeiten gibt, Richtlinien an einen Berechtigungssatz anzuhängen. Anhängen von AWS-Verwaltungsrichtlinien, Kundenverwaltete Richtlinien (diese Richtlinien müssen in allen Konten erstellt werden, die vom Berechtigungssatz betroffen sind), und Inline-Richtlinien (dort definiert).
# 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>
Lokale Enumeration
Es ist möglich, innerhalb des Ordners $HOME/.aws die Datei config zu erstellen, um Profile zu konfigurieren, die beispielsweise über SSO zugänglich sind:
Diese Konfiguration kann mit den Befehlen verwendet werden:
# Login in ms-sso-profileawsssologin--profilemy-sso-profile# Use dependent-profileawss3ls--profiledependent-profile
Wenn ein Profil von SSO verwendet wird, um auf bestimmte Informationen zuzugreifen, werden die Anmeldedaten in einer Datei im Ordner $HOME/.aws/sso/cache zwischengespeichert. Daher können sie von dort gelesen und verwendet werden.
Darüber hinaus können weitere Anmeldedaten im Ordner $HOME/.aws/cli/cache gespeichert werden. Dieses Cache-Verzeichnis wird hauptsächlich verwendet, wenn Sie mit AWS CLI-Profilen arbeiten, die IAM-Benutzeranmeldeinformationen verwenden oder Rollen über IAM annehmen (ohne SSO). Konfigurationsbeispiel:
Erstellen Sie einen Benutzer und weisen Sie ihm Berechtigungen zu
# 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
Erstellen Sie eine Gruppe und weisen Sie Berechtigungen zu und setzen Sie einen kontrollierten Benutzer darauf
Geben Sie einem kontrollierten Benutzer oder einer Gruppe zusätzliche Berechtigungen
Standardmäßig können nur Benutzer mit Berechtigungen aus dem Management-Konto auf das IAM Identity Center zugreifen und es steuern.
Es ist jedoch möglich, über den Delegierten Administrator Benutzern aus einem anderen Konto die Verwaltung zu ermöglichen. Sie werden nicht genau die gleichen Berechtigungen haben, aber sie werden in der Lage sein, Verwaltungstätigkeiten durchzuführen.