iam:ListPolicies, iam:GetPolicy i iam:GetPolicyVersion
iam:ListRoles
iam:ListUsers
iam:ListGroups
iam:ListGroupsForUser
iam:ListAttachedUserPolicies
iam:ListAttachedRolePolicies
iam:ListAttachedGroupPolicies
iam:ListUserPolicies i iam:GetUserPolicy
iam:ListGroupPolicies i iam:GetGroupPolicy
iam:ListRolePolicies i 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
Przydziały Brute Force
Jeśli interesują Cię Twoje własne uprawnienia, ale nie masz dostępu do zapytań IAM, zawsze możesz je przeprowadzić siłowo.
bf-aws-permissions
Narzędzie bf-aws-permissions to po prostu skrypt bashowy, który będzie uruchamiał wszystkie akcje list*, describe*, get* znalezione w wiadomościach pomocy aws cli przy użyciu wskazanego profilu i zwracał udane wykonania.
Narzędzie bf-aws-perms-simulate może znaleźć twoje obecne uprawnienia (lub te innych podmiotów), jeśli masz uprawnienie iam:SimulatePrincipalPolicy.
# Ask for permissionspython3aws_permissions_checker.py--profile<AWS_PROFILE> [--arn <USER_ARN>]
Perms2ManagedPolicies
Jeśli znalazłeś niektóre uprawnienia twojego użytkownika, i sądzisz, że są one przyznawane przez zarządzaną rolę AWS (a nie niestandardową). Możesz użyć narzędzia aws-Perms2ManagedRoles do sprawdzenia wszystkich zarządzanych ról AWS, które przyznają uprawnienia, których odkryłeś, że posiadasz.
# Run example with my profilepython3aws-Perms2ManagedPolicies.py--profilemyadmin--permissions-fileexample-permissions.txt
Możliwe jest "zorientowanie się", czy uprawnienia, które posiadasz, są udzielane przez zarządzaną rolę AWS, jeśli zauważysz, że masz uprawnienia do usług, których nie używasz, na przykład.
Cloudtrail2IAM
CloudTrail2IAM to narzędzie napisane w Pythonie, które analizuje dzienniki AWS CloudTrail w celu wyodrębnienia i podsumowania działań podejmowanych przez wszystkich lub tylko określonego użytkownika lub rolę. Narzędzie analizuje każdy dziennik cloudtrail z wskazanego kubełka.
Jeśli znajdziesz pliki .tfstate (pliki stanu Terraforma) lub pliki CloudFormation (zazwyczaj są to pliki yaml znajdujące się w kubełku z prefiksem cf-templates), możesz je również odczytać, aby znaleźć konfigurację aws i sprawdzić, jakie uprawnienia zostały przypisane komu.
enumerate-iam
Aby użyć narzędzia https://github.com/andresriancho/enumerate-iam, najpierw musisz pobrać wszystkie punkty końcowe API AWS, z których skrypt generate_bruteforce_tests.py pobierze wszystkie punkty końcowe z "list_", "describe_" i "get_". Na koniec spróbuje uzyskać do nich dostęp za pomocą podanych poświadczeń i wskaże, czy to zadziałało.
(W moim doświadczeniu narzędzie zawiesza się w pewnym momencie, sprawdź tę poprawkę, aby spróbować to naprawić).
W moim doświadczeniu to narzędzie jest podobne do poprzedniego, ale działa gorzej i sprawdza mniej uprawnień.
Możesz również użyć narzędzia weirdAAL. To narzędzie sprawdzi kilka powszechnych operacji na kilku powszechnych usługach (sprawdzi uprawnienia do wyliczania oraz niektóre uprawnienia do eskalacji uprawnień). Jednak sprawdzi tylko zakodowane testy (jedyny sposób na sprawdzenie większej liczby rzeczy to zakodowanie więcej testów).
# 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
<TwójNarzędzie>
Żaden z poprzednich narzędzi nie jest w stanie sprawdzić wszystkich uprawnień, więc jeśli znasz lepsze narzędzie, prześlij PR!
# 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
Wyliczanie
Główne elementy Centrum Tożsamości to:
Użytkownicy i grupy
Zbiory uprawnień: Mają dołączone polityki
Konta AWS
Następnie tworzone są relacje, aby użytkownicy/grupy miały Zbiory uprawnień nad Kontem AWS.
Zauważ, że istnieją 3 sposoby dołączania polityk do Zbioru uprawnień. Dołączanie zarządzanych polityk AWS, Polityki zarządzane przez klienta (te polityki muszą być utworzone we wszystkich kontach, na które wpływa Zbiór uprawnień), oraz polityki wbudowane (zdefiniowane w nim).
# 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>
Lokalne wyliczenie
Możliwe jest utworzenie wewnątrz folderu $HOME/.aws pliku config w celu skonfigurowania profili, które są dostępne za pośrednictwem SSO, na przykład:
# Login in ms-sso-profileawsssologin--profilemy-sso-profile# Use dependent-profileawss3ls--profiledependent-profile
Kiedy profil z SSO jest używany do uzyskania dostępu do pewnych informacji, poświadczenia są przechowywane w pliku wewnątrz folderu$HOME/.aws/sso/cache. Dlatego mogą być odczytane i użyte stamtąd.
Co więcej, więcej poświadczeń może być przechowywanych w folderze $HOME/.aws/cli/cache. Ten katalog pamięci podręcznej jest głównie używany, gdy pracujesz z profilami AWS CLI, które używają poświadczeń użytkownika IAM lub przyjmują role za pośrednictwem IAM (bez SSO). Przykład konfiguracji:
# 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
Utwórz grupę, przypisz jej uprawnienia i ustaw na niej kontrolowanego użytkownika
Udziel dodatkowych uprawnień kontrolowanemu użytkownikowi lub grupie
Domyślnie tylko użytkownicy z uprawnieniami z Konta Zarządzającego będą mogli uzyskać dostęp i kontrolować Centrum Tożsamości IAM.
Jednak za pośrednictwem Administratora Delegowanego można zezwolić użytkownikom z innego konta na zarządzanie nim. Nie będą mieli dokładnie tych samych uprawnień, ale będą mogli wykonywać działania zarządzania.