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에 대한 더 많은 정보는 다음에서 확인하세요:
iam.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. 공격자는 언급된 권한을 가지고 서비스 계정에 속하는 액세스 토큰을 요청할 수 있습니다, 따라서 우리의 권한보다 더 많은 권한을 가진 서비스 계정의 액세스 토큰을 요청할 수 있습니다.
여기에서 취약한 환경의 생성, 악용 및 정리를 자동화하는 스크립트와 이 권한을 악용하는 파이썬 스크립트를 여기서 찾을 수 있습니다. 더 많은 정보는 원본 연구를 확인하세요.
iam.serviceAccountKeys.create
언급된 권한을 가진 공격자는 서비스 계정에 대한 사용자 관리 키를 생성할 수 있으며, 이를 통해 해당 서비스 계정으로 GCP에 접근할 수 있습니다.
여기에서 취약한 환경의 생성, 악용 및 정리를 자동화하는 스크립트와 이 권한을 악용하기 위한 파이썬 스크립트를 여기서 찾을 수 있습니다. 더 많은 정보는 원본 연구를 확인하세요.
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 is like the iam:PassRole permission from AWS. It's essential for executing tasks, like initiating a Compute Engine instance, as it grants the ability to "actAs" a Service Account, ensuring secure permission management. Without this, users might gain undue access. Additionally, exploiting the iam.serviceAccounts.actAs involves various methods, each requiring a set of permissions, contrasting with other methods that need just one.
서비스 계정을 가장하는 것은 새롭고 더 나은 권한을 얻기 위해 매우 유용할 수 있습니다. 다른 서비스 계정을 가장하는 세 가지 방법이 있습니다:
RSA 개인 키를 사용한 인증 (위에서 다룸)
Cloud IAM 정책을 사용한 권한 부여 (여기서 다룸)
GCP 서비스에서 작업 배포 (사용자 계정의 손상에 더 적용 가능)
iam.serviceAccounts.getOpenIdToken
언급된 권한을 가진 공격자는 OpenID JWT를 생성할 수 있습니다. 이는 신원을 주장하는 데 사용되며 리소스에 대한 암묵적인 권한 부여를 반드시 포함하지는 않습니다.
이 흥미로운 게시물에 따르면, 청중(토큰을 사용하여 인증할 서비스)을 지정해야 하며, 그러면 서비스 계정과 JWT의 청중을 나타내는 Google에 의해 서명된 JWT를 받게 됩니다.
접근 권한이 있는 경우 OpenIDToken을 생성할 수 있습니다:
그럼 다음과 같이 서비스를 액세스하는 데 사용할 수 있습니다:
일반적으로 이러한 종류의 토큰을 통해 인증을 지원하는 서비스는 다음과 같습니다:
Google Cloud Endpoints (Google OIDC를 사용하는 경우)
서비스 계정을 대신하여 OpenID 토큰을 생성하는 방법에 대한 예시는 여기에서 확인할 수 있습니다.
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)