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
)上記の権限を持つ攻撃者は、あなたに割り当てられたロールを更新し、他のリソースに対して追加の権限を付与することができます。
ここに脆弱な環境の作成、悪用、クリーンアップを自動化するスクリプトがあります。また、この特権を悪用するためのPythonスクリプトはこちらです。詳細については元の研究を確認してください。
iam.serviceAccounts.getAccessToken
(iam.serviceAccounts.get
)言及された権限を持つ攻撃者は、サービスアカウントに属するアクセストークンを要求することができるため、私たちの権限よりも多くの権限を持つサービスアカウントのアクセストークンを要求することが可能です。
あなたは、脆弱な環境の作成、悪用、クリーンアップを自動化するスクリプトをここで見つけることができます と、この特権を悪用するためのPythonスクリプトをここで見つけることができます。詳細については、元の研究を確認してください。
iam.serviceAccountKeys.create
言及された権限を持つ攻撃者は、サービスアカウントのユーザー管理キーを作成することができ、これによりそのサービスアカウントとしてGCPにアクセスできるようになります。
ここに、脆弱な環境の作成、悪用、クリーンアップを自動化するスクリプトと、この特権を悪用するためのPythonスクリプトがこちらにあります。詳細については、元の研究を確認してください。
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を作成し、それをblobとして送信してターゲットにしている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を含むblobに署名するためにgoogleに署名させるのではなく、すでに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
An attacker with the mentioned permissions will be able to generate an OpenID JWT. These are used to assert identity and do not necessarily carry any implicit authorization against a resource.
According to this interesting post, it's necessary to indicate the audience (service where you want to use the token to authenticate to) and you will receive a JWT signed by google indicating the service account and the audience of the JWT.
You can generate an OpenIDToken (if you have the access) with:
その後、次のようにしてサービスにアクセスできます:
いくつかのサービスは、この種のトークンを介して認証をサポートしています:
Google Cloud Endpoints (Google OIDCを使用している場合)
サービスアカウントの代わりにOpenIDトークンを作成する方法の例はこちらで見つけることができます。
AWSハッキングを学び、練習する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、練習する:HackTricks Training GCP Red Team Expert (GRTE)