iam:ListPolicies, iam:GetPolicy та iam:GetPolicyVersion
iam:ListRoles
iam:ListUsers
iam:ListGroups
iam:ListGroupsForUser
iam:ListAttachedUserPolicies
iam:ListAttachedRolePolicies
iam:ListAttachedGroupPolicies
iam:ListUserPolicies та iam:GetUserPolicy
iam:ListGroupPolicies та iam:GetGroupPolicy
iam:ListRolePolicies та 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]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
Permissions Brute Force
Якщо вас цікавлять ваші власні дозволи, але у вас немає доступу для запиту IAM, ви завжди можете їх брутфорсити.
bf-aws-permissions
Інструмент bf-aws-permissions - це просто bash-скрипт, який буде виконувати всі list*, describe*, get* дії, які він може знайти, використовуючи повідомлення допомоги aws cli, і повертати успішні виконання.
Інструмент bf-aws-perms-simulate може знайти ваші поточні дозволи (або дозволи інших суб'єктів), якщо у вас є дозвіл iam:SimulatePrincipalPolicy
# Ask for permissionspython3aws_permissions_checker.py--profile<AWS_PROFILE> [--arn <USER_ARN>]
Perms2ManagedPolicies
Якщо ви знайшли деякі дозволи, які має ваш користувач, і вважаєте, що вони надаються керованою роллю AWS (а не кастомною). Ви можете використовувати інструмент aws-Perms2ManagedRoles, щоб перевірити всі керовані ролі AWS, які надають дозволи, які ви виявили, що у вас є.
# Run example with my profilepython3aws-Perms2ManagedPolicies.py--profilemyadmin--permissions-fileexample-permissions.txt
Можливо "знати", чи надані вам дозволи через керовану роль AWS, якщо ви бачите, що у вас є дозволи на сервіси, які не використовуються, наприклад.
Cloudtrail2IAM
CloudTrail2IAM - це інструмент на Python, який аналізує журнали AWS CloudTrail для витягування та узагальнення дій, виконаних усіма або лише конкретним користувачем чи роллю. Інструмент розбирає кожен журнал cloudtrail з вказаного бакету.
Якщо ви знайдете .tfstate (файли стану Terraform) або файли CloudFormation (це зазвичай файли yaml, розташовані в бакеті з префіксом cf-templates), ви також можете їх прочитати, щоб знайти конфігурацію aws і дізнатися, які дозволи були надані кому.
enumerate-iam
Щоб використовувати інструмент https://github.com/andresriancho/enumerate-iam, спочатку потрібно завантажити всі API AWS кінцеві точки, з яких скрипт generate_bruteforce_tests.py отримає всі "list_", "describe_", і "get_" кінцеві точки. І нарешті, він спробує доступитися до них з наданими обліковими даними і вказати, чи спрацювало.
(На моєму досвіді інструмент зависає в деякий момент, перевірте це виправлення, щоб спробувати це виправити).
На моєму досвіді цей інструмент схожий на попередній, але працює гірше і перевіряє менше дозволів.
Ви також можете використовувати інструмент weirdAAL. Цей інструмент перевірить декілька загальних операцій на декількох загальних сервісах (перевірить деякі дозволи на перерахування, а також деякі дозволи на підвищення привілеїв). Але він перевірить лише закодовані перевірки (єдиний спосіб перевірити більше - це написати більше тестів).
# 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>
Жоден з попередніх інструментів не здатний перевірити всі дозволи, тому якщо ви знаєте кращий інструмент, надішліть PR!
Неавтентифікований доступ
Підвищення привілеїв
На наступній сторінці ви можете перевірити, як зловживати дозволами IAM для підвищення привілеїв:
IAM Після експлуатації
IAM Постійність
IAM Центр ідентичності
Ви можете знайти опис IAM Центру ідентичності в:
Підключення через SSO з CLI
# 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
Основні елементи Центру ідентичності:
Користувачі та групи
Набори дозволів: Мають прикріплені політики
Облікові записи AWS
Потім створюються відносини, щоб користувачі/групи мали Набори дозволів над Обліковим записом AWS.
Зверніть увагу, що є 3 способи прикріплення політик до Набору дозволів. Прикріплення керованих політик AWS, політик, керованих замовником (ці політики потрібно створити в усіх облікових записах, на які впливають Набори дозволів), та вбудованих політик (визначених там).
# 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>
Local Enumeration
Можливо створити всередині папки $HOME/.aws файл config для налаштування профілів, які доступні через SSO, наприклад:
Цю конфігурацію можна використовувати з командами:
# Login in ms-sso-profileawsssologin--profilemy-sso-profile# Use dependent-profileawss3ls--profiledependent-profile
Коли профіль з SSO використовується для доступу до деякої інформації, облікові дані кешуються у файлі всередині папки $HOME/.aws/sso/cache. Тому їх можна читати та використовувати звідти.
Більше того, додаткові облікові дані можуть зберігатися в папці $HOME/.aws/cli/cache. Ця директорія кешу в основному використовується, коли ви працюєте з профілями AWS CLI, які використовують облікові дані IAM користувачів або припускають ролі через IAM (без SSO). Приклад конфігурації:
# 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
Створіть групу, призначте їй дозволи та встановіть контрольованого користувача
Надати додаткові дозволи контрольованому користувачу або групі
За замовчуванням лише користувачі з дозволами з Управлінського облікового запису зможуть отримати доступ і контролювати IAM Identity Center.
Однак, можливо, через Делегованого адміністратора дозволити користувачам з іншого облікового запису керувати ним. Вони не матимуть точно таких же дозволів, але зможуть виконувати управлінські дії.