iam:ListPolicies, iam:GetPolicy and iam:GetPolicyVersion
iam:ListRoles
iam:ListUsers
iam:ListGroups
iam:ListGroupsForUser
iam:ListAttachedUserPolicies
iam:ListAttachedRolePolicies
iam:ListAttachedGroupPolicies
iam:ListUserPolicies and iam:GetUserPolicy
iam:ListGroupPolicies and iam:GetGroupPolicy
iam:ListRolePolicies and 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
권한 무차별 대입
자신의 권한에 관심이 있지만 IAM을 쿼리할 수 있는 접근 권한이 없다면, 항상 무차별 대입을 시도할 수 있습니다.
bf-aws-permissions
도구 bf-aws-permissions는 지정된 프로필을 사용하여 list*, describe*, get* 작업을 실행하는 bash 스크립트로, aws cli 도움말 메시지를 사용하여 찾을 수 있는 모든 작업을 실행하고 성공적인 실행 결과를 반환합니다.
.tfstate (Terraform 상태 파일) 또는 CloudFormation 파일(이 파일들은 일반적으로 cf-templates 접두사가 있는 버킷 내의 yaml 파일)에 대해 찾으면, 이를 읽어 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 아이덴티티 센터에 대한 설명을 찾을 수 있습니다:
CLI를 통한 SSO 연결
# 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의 주요 요소는 다음과 같습니다:
사용자 및 그룹
권한 세트: 정책이 연결되어 있음
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 폴더 안에 SSO를 통해 접근할 수 있는 프로필을 구성하기 위한 config 파일을 생성하는 것이 가능합니다. 예를 들어:
# 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.
또한, 더 많은 자격 증명은 폴더 **$HOME/.aws/cli/cache**에 저장될 수 있습니다. 이 캐시 디렉토리는 주로 IAM 사용자 자격 증명을 사용하거나 IAM을 통해 역할을 가정할 때 AWS CLI 프로필로 작업할 때 사용됩니다(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에 접근하고 제어할 수 있습니다.
그러나 Delegate Administrator를 통해 다른 계정의 사용자가 이를 관리할 수 있도록 허용할 수 있습니다. 그들은 정확히 동일한 권한을 가지지는 않지만, 관리 활동을 수행할 수 있습니다.