Şirketinizi HackTricks'te reklamını görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız [ABONELİK PLANLARI]'na göz atın (https://github.com/sponsors/carlospolop)!
Hacking püf noktalarınızı paylaşarak PR'lar göndererekHackTricks ve HackTricks Cloud github depolarına katkıda bulunun.
IAM
IAM hakkında bir açıklama bulabilirsiniz:
Enumerasyon
Ana izinler gereklidir:
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 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
İzinlerin Zorla Kaba Kuvvet Yöntemi
Eğer kendi izinlerinizle ilgileniyorsanız ancak IAM sorgulama erişiminiz yoksa her zaman izinleri kaba kuvvet yöntemiyle deneyebilirsiniz.
bf-aws-permissions
bf-aws-permissions aracı, yalnızca belirtilen profil kullanılarak çalıştırılacak olan bir bash betiğidir ve aws cli yardım mesajlarını kullanarak bulduğu tüm list*, describe*, get* eylemlerini gerçekleştirir ve başarılı yürütümleri döndürür.
Araç bf-aws-perms-simulate, eğer iam:SimulatePrincipalPolicy izniniz varsa, mevcut izinlerinizi (veya diğer prensiplerin izinlerini) 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 özel bir rol tarafından değil de bir yönetilen AWS rolü tarafından verildiğini düşünüyorsanız, aws-Perms2ManagedPolicies aracını kullanarak sahip olduğunuz izinleri keşfettiğiniz tüm AWS yönetilen rollerini kontrol edebilirsiniz.
# Run example with my profilepython3aws-Perms2ManagedPolicies.py--profilemyadmin--permissions-fileexample-permissions.txt
Eğer sahip olduğunuz izinlerin AWS tarafından yönetilen bir rol tarafından verilip verilmediğini "bilmek" mümkündür, örneğin kullanılmayan hizmetler üzerinde izinleriniz varsa.
Cloudtrail2IAM
CloudTrail2IAM, herkesin veya belirli bir kullanıcının veya rolün yaptığı eylemleri çıkarmak ve özetlemek için AWS CloudTrail günlüklerini analiz eden bir Python aracıdır. Aracı, belirtilen kovandan her cloudtrail günlüğünü ayrıştıracaktır.
Eğer .tfstate (Terraform durum dosyaları) veya CloudFormation dosyaları bulursanız (genellikle bir kova içinde cf-templates öneki ile bulunan yaml dosyalarıdır), bunları okuyarak aws yapılandırmasını bulabilir ve hangi izinlerin kime atandığını bulabilirsiniz.
enumerate-iam
Araç https://github.com/andresriancho/enumerate-iam kullanmak için öncelikle tüm API AWS uç noktalarını indirmeniz gerekmektedir, bu uç noktalardan betik generate_bruteforce_tests.py tüm "list_", "describe_", ve "get_" uç noktalarını alacaktır. Ve son olarak, verilen kimlik bilgileri ile bunlara erişmeye çalışacak ve çalışıp çalışmadığını belirtecektir.
(Benim deneyimime göre araç bazı noktalarda takılıyor, bu düzeltmeyi kontrol edin bunu düzeltmeye çalışmak için).
Deneyimime göre bu araç öncekine benziyor ancak daha kötü çalışıyor ve daha az izni kontrol ediyor.
Ayrıca weirdAAL aracını da kullanabilirsiniz. Bu araç birkaç yaygın hizmette birkaç yaygın işlemi kontrol edecek (bazı numaralandırma izinlerini ve bazı ayrıcalık yükseltme izinlerini kontrol edecek). Ancak yalnızca kodlanmış kontrolleri kontrol edecektir (daha fazla şey 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
<SeninAraç>
Önceki araçlardan hiçbiri tüm izinleri kontrol edebilme yeteneğine sahip değildir, bu yüzden daha iyi bir araç biliyorsanız bir PR gönderin!
Kimlik Doğrulamasız Erişim
Yetki Yükseltme
Aşağıdaki sayfada IAM izinlerini kötüye kullanarak ayrıcalıkları yükseltme nasıl kontrol edebileceğinizi görebilirsiniz:
IAM Saldırı Sonrası İstismarı
IAM Kalıcılığı
IAM Kimlik Merkezi
IAM Kimlik Merkezi hakkında bir açıklama bulabilirsiniz:
CLI ile SSO üzerinden Bağlanma
# 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
Numaralandırma
Kimlik Merkezi'nin ana unsurları şunlardır:
Kullanıcılar ve gruplar
İzin Setleri: Bağlı politikaları vardır
AWS Hesapları
Daha sonra, ilişkiler oluşturulur, böylece kullanıcılar/gruplar AWS Hesabı üzerinde İzin Setlerine sahip olurlar.
Dikkat edin, İzin Setine politikalar eklemenin 3 yolu vardır. AWS yönetilen politikaları eklemek, Müşteri yönetilen politikalar (bu politikalar, İzin Setini etkileyen tüm hesaplarda oluşturulmalıdır) ve iç içe politikalar (orada tanımlanmış).
# 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>
Yerel Sıralama
$HOME/.aws klasörü içine erişilebilir profilleri yapılandırmak için config dosyasını oluşturmak mümkündür, örneğin:
Bu yapılandırma aşağıdaki komutlarla kullanılabilir:
# Login in ms-sso-profileawsssologin--profilemy-sso-profile# Use dependent-profileawss3ls--profiledependent-profile
SSO'dan bir profil kullanılarak bazı bilgilere erişildiğinde, kimlik bilgileri $HOME/.aws/sso/cache klasörü içinde bir dosyada önbelleğe alınır. Dolayısıyla oradan okunup kullanılabilir.
Ayrıca, daha fazla kimlik bilgisi $HOME/.aws/cli/cache klasöründe saklanabilir. Bu önbellek dizini genellikle AWS CLI profilleriyle çalışırken kullanılır ve bu profiller IAM kullanıcı kimlik bilgilerini veya IAM üzerinden roller assume eder. Yapılandırma örneği:
# 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
Bir grup oluşturun ve izinleri atayın ve üzerine kontrol edilen bir kullanıcı belirleyin
Kontrol edilen bir kullanıcıya veya gruba ek izinler verin
Varsayılan olarak, Yönetim Hesabından izin alan kullanıcılar yalnızca IAM Kimlik Merkezine erişebilir ve kontrol edebilir.
Ancak, Farklı bir hesaptan kullanıcıların bunu yönetmesine izin vermek için Delege Yönetici aracılığıyla mümkündür. Tam olarak aynı izne sahip olmayacaklar, ancak yönetim faaliyetlerini gerçekleştirebilecekler.