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 usersawsiamget-user#Get current user informationawsiamlist-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]awsiamlist-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
Dozvola Brute Force
Ako ste zainteresovani za svoje dozvole, ali nemate pristup za upit IAM, uvek možete da ih brute-force.
bf-aws-permissions
Alat bf-aws-permissions je samo bash skripta koja će se pokrenuti koristeći navedeni profil za sve list*, describe*, get* akcije koje može pronaći koristeći aws cli pomoćne poruke i vratiće uspešne izvršenja.
Alat bf-aws-perms-simulate može pronaći vaše trenutne dozvole (ili dozvole drugih principala) ako imate dozvolu iam:SimulatePrincipalPolicy
# Ask for permissionspython3aws_permissions_checker.py--profile<AWS_PROFILE> [--arn <USER_ARN>]
Perms2ManagedPolicies
Ako ste pronašli neke dozvole koje vaš korisnik ima, i mislite da su dodeljene od strane upravljane AWS uloge (a ne od prilagođene). Možete koristiti alat aws-Perms2ManagedRoles da proverite sve AWS upravljane uloge koje dodeljuju dozvole koje ste otkrili da imate.
# Run example with my profilepython3aws-Perms2ManagedPolicies.py--profilemyadmin--permissions-fileexample-permissions.txt
Moguće je "znati" da li su dozvole koje imate dodeljene od strane AWS upravljane uloge ako vidite da imate dozvole za usluge koje se ne koriste na primer.
Cloudtrail2IAM
CloudTrail2IAM je Python alat koji analizira AWS CloudTrail logove kako bi izvukao i sažeo akcije koje su izvršili svi ili samo određeni korisnik ili uloga. Alat će parsirati svaki cloudtrail log iz naznačenog bucket-a.
Ako pronađete .tfstate (Terraform state files) ili CloudFormation datoteke (ove su obično yaml datoteke smeštene unutar bucket-a sa prefiksom cf-templates), možete ih takođe pročitati da biste pronašli aws konfiguraciju i saznali koje su dozvole dodeljene kome.
enumerate-iam
Da biste koristili alat https://github.com/andresriancho/enumerate-iam, prvo treba da preuzmete sve API AWS krajnje tačke, od kojih će skripta generate_bruteforce_tests.py dobiti sve "list_", "describe_", i "get_" krajnje tačke. I na kraju, pokušaće da pristupi njima sa datim akreditivima i naznači da li je uspelo.
(U mom iskustvu, alat se u nekom trenutku zamrzava, pogledajte ovo rešenje da biste pokušali da to popravite).
U mom iskustvu, ovaj alat je kao prethodni, ali radi lošije i proverava manje dozvola.
Možete takođe koristiti alat weirdAAL. Ovaj alat će proveriti nekoliko uobičajenih operacija na nekoliko uobičajenih usluga (proveriće neka prava za enumeraciju i takođe neka prava za privesc). Ali će proveriti samo kodirane provere (jedini način da se proveri više stvari je kodiranje više testova).
# 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
<YourTool>
Nijedan od prethodnih alata nije sposoban da proveri skoro sve dozvole, pa ako znate bolji alat pošaljite 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
Enumeration
Glavni elementi Identity Centra su:
Korisnici i grupe
Skupovi dozvola: Imaju pridružene politike
AWS računi
Zatim se kreiraju odnosi tako da korisnici/grupe imaju skupove dozvola nad AWS računom.
Napomena da postoje 3 načina za pridruživanje politika skupu dozvola. Pridruživanje AWS upravljanim politikama, politikama koje upravlja korisnik (ove politike treba da budu kreirane u svim računima na koje utiče skup dozvola), i inline politikama (definisanim tamo).
# 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 setawssso-adminlist-customer-managed-policy-references-in-permission-set--instance-arn<instance-arn>--permission-set-arn<perm-set-arn>## Get boundaries of a permission setawssso-adminget-permissions-boundary-for-permission-set--instance-arn<instance-arn>--permission-set-arn<perm-set-arn>## List accounts a permission set is affectingawssso-adminlist-accounts-for-provisioned-permission-set--instance-arn<instance-arn>--permission-set-arn<perm-set-arn>## List principals given a permission set in an accountawssso-adminlist-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>
Local Enumeration
Moguće je kreirati unutar foldera $HOME/.aws datoteku config za konfiguraciju profila koji su dostupni putem SSO, na primer:
# Login in ms-sso-profileawsssologin--profilemy-sso-profile# Use dependent-profileawss3ls--profiledependent-profile
Kada se profil iz SSO koristi za pristup nekim informacijama, kredencijali se keširaju u datoteci unutar fascikle $HOME/.aws/sso/cache. Stoga se mogu čitati i koristiti odatle.
Pored toga, dodatni kredencijali mogu biti pohranjeni u fascikli $HOME/.aws/cli/cache. Ova keš direktorija se prvenstveno koristi kada radite sa AWS CLI profilima koji koriste IAM korisničke kredencijale ili pretpostavljaju uloge putem IAM (bez SSO). Primer konfiguracije:
# Create user identitystore:CreateUserawsidentitystorecreate-user--identity-store-id<store-id>--user-nameprivesc--display-nameprivesc--emailsValue=sdkabflvwsljyclpma@tmmbt.net,Type=Work,Primary=True--nameFormatted=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
Kreirajte grupu i dodelite joj dozvole i postavite kontrolisanog korisnika
Dajte dodatne dozvole kontrolisanom korisniku ili grupi
Po defaultu, samo korisnici sa dozvolama iz Upravljčkog naloga će moći da pristupaju i kontrolišu IAM Identity Center.
Međutim, moguće je putem Delegiranog Administratora omogućiti korisnicima iz drugog naloga da njime upravljaju. Neće imati iste dozvole, ali će moći da obavljaju aktivnosti upravljanja.