GCP - IAM, Principals & Org Policies Enum
서비스 계정
서비스 계정에 대한 소개는 다음을 확인하세요:
pageGCP - Basic Information열거
서비스 계정은 항상 프로젝트에 속합니다:
사용자 및 그룹
GCP에서 사용자 및 그룹이 작동하는 방법에 대한 소개는 다음을 확인하십시오:
pageGCP - Basic Information열거
권한 serviceusage.services.enable
및 **serviceusage.services.use
**을 사용하면 프로젝트에서 서비스를 활성화하고 사용할 수 있습니다.
기본적으로 Workspace 사용자에게는 프로젝트 생성자 역할이 부여되어 새 프로젝트를 생성할 수 있는 액세스 권한이 부여됩니다. 사용자가 프로젝트를 생성하면 해당 프로젝트에 대한 owner
역할이 부여됩니다. 따라서 사용자는 Workspace을 열거할 수 있도록 프로젝트에서 이러한 서비스를 활성화할 수 있습니다.
그러나 이러한 API를 호출할 수 있도록 Workspace에서 충분한 권한이 있어야 합니다.
admin
서비스를 활성화할 수 있고 사용자가 Workspace에서 충분한 권한을 가지고 있다면 다음 라인을 사용하여 모든 그룹 및 사용자를 열거할 수 있습니다.
**identity groups
**라고 나와 있지만 그룹 없는 사용자도 반환됩니다:
이전 예제에서는 매개변수 --labels
가 필요하므로 일반적인 값이 사용됩니다 (API를 직접 사용하는 경우 필요하지 않습니다. 여기에서 PurplePanda가 수행하는 것처럼.
관리 서비스를 활성화해도, kompromised된 워크스페이스 사용자가 충분한 권한을 갖고 있지 않기 때문에 열거하는 동안 오류가 발생할 수 있습니다:
IAM
IAM에 대한 기본 정보는 여기를 확인하세요.
기본 권한
문서에 따르면, 조직 리소스가 생성되면 기본적으로 도메인의 모든 사용자에게 Billing Account Creator 및 Project Creator 역할이 부여됩니다. 이러한 기본 역할은 사용자가 Google Cloud를 즉시 사용할 수 있도록 허용하지만 조직 리소스의 정기적인 운영에는 사용되지 않습니다.
이러한 역할은 다음 권한을 부여합니다:
billing.accounts.create
및resourcemanager.organizations.get
resourcemanager.organizations.get
및resourcemanager.projects.create
또한 사용자가 프로젝트를 생성하면 문서에 따라 해당 프로젝트의 소유자가 자동으로 부여됩니다. 따라서 기본적으로 사용자는 프로젝트를 생성하고 해당 프로젝트에서 서비스를 실행할 수 있습니다 (마이너? Workspace 열거? ...)
GCP 조직에서 가장 높은 권한은 Organization Administrator 역할입니다.
set-iam-policy vs add-iam-policy-binding
대부분의 서비스에서는 add-iam-policy-binding
또는 set-iam-policy
메서드를 사용하여 리소스에 대한 권한을 변경할 수 있습니다. 주요 차이점은 add-iam-policy-binding
이 기존 IAM 정책에 새로운 역할 바인딩을 추가하는 반면 **set-iam-policy
**은 이전에 부여된 권한을 삭제하고 명령어에서 지정된 것만 설정합니다.
열거
cloudasset IAM 열거
이 서비스를 사용하여 사용자의 모든 권한을 다양한 리소스(조직, 폴더, 프로젝트 등)에서 확인하는 다양한 방법이 있습니다.
권한 **
cloudasset.assets.searchAllIamPolicies
**를 사용하면 리소스 내의 모든 IAM 정책을 요청할 수 있습니다.
허가 권한 **
cloudasset.assets.analyzeIamPolicy
**은 리소스 내부 주체의 모든 IAM 정책을 요청할 수 있습니다.
cloudasset.assets.searchAllResources
권한은 조직, 폴더 또는 프로젝트의 모든 리소스를 나열하는 것을 허용합니다. 역할과 같은 IAM 관련 리소스가 포함됩니다.
cloudasset.assets.analyzeMove
권한은 프로젝트와 같은 리소스에 영향을 주는 정책을 검색하는 데도 유용할 수 있습니다.
나는 권한 **
cloudasset.assets.queryIamPolicy
**가 주체의 권한을 찾는 권한에도 접근할 수 있다고 생각합니다.
testIamPermissions enumeration
이전 방법을 사용하여 IAM 정보에 액세스할 수 없는 경우 Red Team에 속해 있다면 현재 권한을 브루트 포스할 수 있는 https://github.com/carlospolop/bf_my_gcp_perms 툴을 사용할 수 있습니다.
그러나, cloudresourcemanager.googleapis.com
서비스가 활성화되어 있어야 합니다.
Privesc
다음 페이지에서 IAM 권한을 남용하여 권한 상승하는 방법을 확인할 수 있습니다:
pageGCP - IAM PrivescUnauthenticated Enum
pageGCP - IAM, Principals & Org Unauthenticated EnumPost Exploitation
pageGCP - IAM Post ExploitationPersistence
고 권한을 가지고 있다면 다음을 수행할 수 있습니다:
새로운 SAs 생성 (또는 Workspace에서 사용자 생성)
자체적으로 제어하는 주체에게 더 많은 권한 부여
취약한 SAs에 더 많은 권한 부여 (vm에서 SSRF, 취약한 Cloud Function 등)
...
Org Policies
Org Policies에 대한 소개는 다음을 확인하십시오:
pageGCP - Basic InformationIAM 정책은 역할을 통해 주체가 리소스에 대해 가지는 권한을 나타내며, 이는 세분화된 권한이 할당됩니다. 조직 정책은 서비스를 사용하는 방법을 제한하거나 비활성화된 기능을 결정합니다. 이는 GCP 환경의 각 리소스의 최소 권한을 향상시키는 데 도움이 됩니다.
권한 상승
다음 페이지에서는 조직 정책 권한을 남용하여 권한을 상승하는 방법을 확인할 수 있습니다:
pageGCP - Orgpolicy Privesc最終更新