GCP - IAM Privesc
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
IAM에 대한 더 많은 정보는 다음에서 확인하세요:
GCP - IAM, Principals & Org Policies Enumiam.roles.update
(iam.roles.get
)언급된 권한을 가진 공격자는 귀하에게 할당된 역할을 업데이트하고 다음과 같은 다른 리소스에 대한 추가 권한을 부여할 수 있습니다:
You can find a script to automate the creation, exploit and cleaning of a vuln environment here and a python script to abuse this privilege here. For more information check the original research.
iam.serviceAccounts.getAccessToken
(iam.serviceAccounts.get
)An attacker with the mentioned permissions will be able to request an access token that belongs to a Service Account, so it's possible to request an access token of a Service Account with more privileges than ours. 공격자는 언급된 권한을 가지고 서비스 계정에 속하는 액세스 토큰을 요청할 수 있습니다, 따라서 우리의 권한보다 더 많은 권한을 가진 서비스 계정의 액세스 토큰을 요청할 수 있습니다.
You can find a script to automate the creation, exploit and cleaning of a vuln environment here and a python script to abuse this privilege here. For more information check the original research.
iam.serviceAccountKeys.create
An attacker with the mentioned permissions will be able to create a user-managed key for a Service Account, which will allow us to access GCP as that Service Account.
여기에서 취약한 환경의 생성, 악용 및 정리를 자동화하는 스크립트를 찾을 수 있으며, 이 권한을 악용하기 위한 파이썬 스크립트는 여기에서 확인할 수 있습니다. 더 많은 정보는 원본 연구를 확인하세요.
iam.serviceAccountKeys.update
는 SA의 키를 수정하는 데 작동하지 않습니다. 그렇게 하려면 iam.serviceAccountKeys.create
권한도 필요합니다.
iam.serviceAccounts.implicitDelegation
iam.serviceAccounts.implicitDelegation
권한이 있는 서비스 계정이 iam.serviceAccounts.getAccessToken
권한을 가진 다른 서비스 계정이 있다면, implicitDelegation을 사용하여 해당 다른 서비스 계정을 위한 토큰을 생성할 수 있습니다. 설명을 돕기 위한 다이어그램은 다음과 같습니다.
문서에 따르면, gcloud
의 위임은 generateAccessToken() 메서드를 사용하여 토큰을 생성하는 데만 작동합니다. 따라서 API를 직접 사용하여 토큰을 얻는 방법은 다음과 같습니다:
You can find a script to automate the 취약한 환경의 생성, 악용 및 정리 여기 and a python script to abuse this privilege 여기. For more information check the 원본 연구.
iam.serviceAccounts.signBlob
An attacker with the mentioned permissions will be able to GCP에서 임의의 페이로드 서명. So it'll be possible to SA의 서명되지 않은 JWT를 생성한 다음, 이를 블롭으로 보내어 우리가 목표로 하는 SA에 의해 JWT가 서명되도록 할 수 있습니다. For more information 이것을 읽어보세요.
You can find a script to automate the 취약한 환경의 생성, 악용 및 정리 여기 and a python script to abuse this privilege 여기 and 여기. For more information check the 원본 연구.
iam.serviceAccounts.signJwt
An attacker with the mentioned permissions will be able to 형식이 올바른 JSON 웹 토큰(JWT) 서명. The difference with the previous method is that JWT를 포함하는 블롭을 구글에 서명하게 하는 대신, 이미 JWT를 기대하는 signJWT 메서드를 사용합니다. This makes it easier to use but you can only sign JWT instead of any bytes.
You can find a script to automate the 취약한 환경의 생성, 악용 및 정리 여기 and a python script to abuse this privilege 여기. For more information check the 원본 연구.
iam.serviceAccounts.setIamPolicy
An attacker with the mentioned permissions will be able to 서비스 계정에 IAM 정책 추가. You can abuse it to 자신에게 서비스 계정을 가장하는 데 필요한 권한을 부여할 수 있습니다. In the following example we are granting ourselves the roles/iam.serviceAccountTokenCreator
role over the interesting SA:
You can find a script to automate the creation, exploit and cleaning of a vuln environment here.
iam.serviceAccounts.actAs
The iam.serviceAccounts.actAs permission는 AWS의 iam:PassRole permission과 유사합니다. 이는 Compute Engine 인스턴스를 시작하는 것과 같은 작업을 실행하는 데 필수적이며, Service Account로 "actAs"할 수 있는 능력을 부여하여 안전한 권한 관리를 보장합니다. 이 권한이 없으면 사용자가 부당한 접근을 할 수 있습니다. 또한, iam.serviceAccounts.actAs를 악용하는 것은 다양한 방법을 포함하며, 각 방법은 특정 권한 세트를 요구합니다. 이는 단 하나의 권한만 필요한 다른 방법과 대조적입니다.
Service account를 가장하는 것은 새롭고 더 나은 권한을 얻는 데 매우 유용할 수 있습니다. 다른 service account를 가장하는 세 가지 방법이 있습니다:
RSA 개인 키를 사용한 인증 (위에서 다룸)
Cloud IAM 정책을 사용한 권한 부여 (여기서 다룸)
GCP 서비스에서 작업 배포 (사용자 계정의 손상에 더 적용 가능)
iam.serviceAccounts.getOpenIdToken
언급된 권한을 가진 공격자는 OpenID JWT를 생성할 수 있습니다. 이는 신원을 주장하는 데 사용되며, 자원에 대한 암묵적인 권한 부여를 반드시 포함하지는 않습니다.
이 흥미로운 게시물에 따르면, 청중(토큰을 사용하여 인증하려는 서비스)을 지정해야 하며, Google이 서명한 JWT를 수신하여 서비스 계정과 JWT의 청중을 나타냅니다.
접근 권한이 있는 경우 OpenIDToken을 생성할 수 있습니다:
그럼 다음과 같이 서비스를 액세스하는 데 사용할 수 있습니다:
일부 서비스는 이러한 종류의 토큰을 통한 인증을 지원합니다:
Google Cloud Endpoints (Google OIDC를 사용하는 경우)
서비스 계정을 대신하여 OpenID 토큰을 생성하는 방법에 대한 예시는 여기에서 확인할 수 있습니다.
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)