iam:ListPolicies, iam:GetPolicy ve iam:GetPolicyVersion
iam:ListRoles
iam:ListUsers
iam:ListGroups
iam:ListGroupsForUser
iam:ListAttachedUserPolicies
iam:ListAttachedRolePolicies
iam:ListAttachedGroupPolicies
iam:ListUserPolicies ve iam:GetUserPolicy
iam:ListGroupPolicies ve iam:GetGroupPolicy
iam:ListRolePolicies ve 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
İzinler Kaba Kuvvet
Kendi izinlerinizle ilgileniyorsanız ancak IAM sorgulamak için erişiminiz yoksa, her zaman bunları kaba kuvvetle elde edebilirsiniz.
bf-aws-permissions
Araç bf-aws-permissions, belirtilen profili kullanarak list*, describe*, get* eylemlerini çalıştıracak bir bash betiğidir ve başarılı yürütmeleri döndürecektir.
Araç bf-aws-perms-simulate, iam:SimulatePrincipalPolicy iznine sahipseniz mevcut izninizi (veya diğer ilkelerin iznini) bulabilir.
# Ask for permissionspython3aws_permissions_checker.py--profile<AWS_PROFILE> [--arn <USER_ARN>]
Perms2ManagedPolicies
Eğer kullanıcınızın sahip olduğu bazı izinleri bulduysanız ve bunların yönetilen bir AWS rolü tarafından verildiğini düşünüyorsanız (ve özel bir rol tarafından değil). Bulduğunuz izinleri veren tüm AWS yönetilen rollerini kontrol etmek için aws-Perms2ManagedRoles aracını kullanabilirsiniz.
# Run example with my profilepython3aws-Perms2ManagedPolicies.py--profilemyadmin--permissions-fileexample-permissions.txt
AWS yönetilen bir rol tarafından verilen izinlere sahip olup olmadığınızı "bilmek" mümkündür, eğer kullanılmayan hizmetler üzerinde izinleriniz olduğunu görüyorsanız örneğin.
Cloudtrail2IAM
CloudTrail2IAM , AWS CloudTrail günlüklerini analiz eden ve herkesin veya sadece belirli bir kullanıcının veya rolün yaptığı eylemleri özetleyen bir Python aracıdır. Araç, belirtilen bucket'tan her cloudtrail günlüğünü ayrıştıracaktır.
Eğer .tfstate (Terraform durum dosyaları) veya CloudFormation dosyaları (genellikle cf-templates ön eki ile bir bucket içinde bulunan yaml dosyalarıdır) bulursanız, bunları okuyarak aws yapılandırmasını bulabilir ve hangi izinlerin kime atandığını öğrenebilirsiniz.
enumerate-iam
https://github.com/andresriancho/enumerate-iam aracını kullanmak için önce tüm API AWS uç noktalarını indirmeniz gerekiyor, bu uç noktalardan generate_bruteforce_tests.py scripti tüm "list_", "describe_", ve "get_" uç noktalarını alacak. Ve sonunda, verilen kimlik bilgileri ile erişmeye çalışacak ve başarıp başaramadığını belirtecek.
(Benim deneyimime göre araç bir noktada takılıyor, bu düzeltmeye göz atın bunu düzeltmeye çalışmak için).
Benim deneyimime göre bu araç bir önceki gibi ama daha kötü çalışıyor ve daha az izin kontrol ediyor.
Ayrıca weirdAAL aracını da kullanabilirsiniz. Bu araç, birçok yaygın hizmette birkaç yaygın işlemi kontrol edecektir (bazı enum izinlerini ve ayrıca bazı privesc izinlerini kontrol edecektir). Ancak yalnızca kodlanmış kontrolleri kontrol edecektir (daha fazla şeyi kontrol etmenin tek yolu daha fazla test kodlamaktır).
# 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>
Önceki araçların hiçbiri tüm izinleri kontrol etme kapasitesine sahip değildir, bu yüzden daha iyi bir araç biliyorsanız bir PR gönderin!
Kimlik Doğrulaması Olmadan Erişim
Yetki Yükseltme
Aşağıdaki sayfada IAM izinlerini kötüye kullanarak yetki yükseltmeyi kontrol edebilirsiniz:
IAM Sonrası Sömürü
IAM Sürekliliği
IAM Kimlik Merkezi
IAM Kimlik Merkezi'nin tanımını şurada bulabilirsiniz:
CLI ile SSO üzerinden Bağlanın
# 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
Identity Center'ın ana unsurları şunlardır:
Kullanıcılar ve gruplar
İzin Setleri: Politikalara sahiptir
AWS Hesapları
Daha sonra, kullanıcılar/ gruplar için AWS Hesabı üzerinde İzin Setleri oluşturulmaktadır.
Politikaları bir İzin Setine eklemenin 3 yolu olduğunu unutmayın. AWS yönetilen politikalarını eklemek, Müşteri yönetilen politikaları (bu politikaların, İzin Setinin etkilediği tüm hesaplarda oluşturulması gerekir) ve inline politikalar (orada tanımlanmış) eklemek.
# 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
$HOME/.aws klasörü içinde SSO aracılığıyla erişilebilen profilleri yapılandırmak için config dosyası oluşturmak mümkündür, örneğin:
# Login in ms-sso-profileawsssologin--profilemy-sso-profile# Use dependent-profileawss3ls--profiledependent-profile
When a profile from SSO is used to access some information, the credentials are cached in a file inside the folder $HOME/.aws/sso/cache. Therefore they can be read and used from there.
Ayrıca, daha fazla kimlik bilgisi$HOME/.aws/cli/cache klasöründe saklanabilir. Bu önbellek dizini, IAM kullanıcı kimlik bilgilerini kullanan veya IAM aracılığıyla roller üstlenen AWS CLI profilleri ile çalışırken esasen kullanılır. Config example:
# 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
Bir grup oluşturun ve ona izinler atayın ve kontrol edilen bir kullanıcı belirleyin
Kontrol edilen bir kullanıcıya veya gruba ek izinler verin
Varsayılan olarak, yalnızca Yönetim Hesabından izinleri olan kullanıcılar IAM Kimlik Merkezi'ne erişebilecek ve kontrol edebilecektir.
Ancak, Farklı bir hesaptan kullanıcıların bunu yönetmesine izin vermek için Delegeli Yönetici aracılığıyla mümkündür. Tam olarak aynı izinlere sahip olmayacaklar, ancak yönetim faaliyetlerini gerçekleştirebileceklerdir.