GCP - Compute 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)
GCPにおけるComputeとVPC(ネットワーク)に関する詳細情報は、以下を確認してください:
GCP - Compute Enumインスタンスのメタデータを変更する必要があるすべての特権昇格攻撃(新しいユーザーやSSHキーの追加など)を実行するには、インスタンスに添付されたSAに対してactAs
権限を持っている必要があります。たとえSAがすでに添付されていてもです!
compute.projects.setCommonInstanceMetadata
この権限を持つことで、インスタンスのメタデータ情報を変更し、ユーザーの認証キーを変更したり、sudo権限を持つ新しいユーザーを作成することができます。したがって、任意のVMインスタンスにSSHで接続し、そのインスタンスが実行しているGCPサービスアカウントを盗むことができます。 制限事項:
GCPサービスアカウントは、VMインスタンスでデフォルトで非常に限られたスコープを持っています。
ログインするためにSSHサーバーに接続できる必要があります。
この権限を悪用する方法についての詳細は、以下を確認してください:
GCP - Add Custom SSH Metadata新しいスタートアップスクリプトを追加し、インスタンスを再起動することでこの攻撃を実行することもできます:
compute.instances.setMetadata
この権限は、プロジェクト全体ではなく特定のインスタンスに対して前の権限と同じ特権を与えます。前のセクションと同じ脆弱性と制限が適用されます。
compute.instances.setIamPolicy
この種の権限は、前の権限を持つ役割を自分に付与し、これを悪用して特権を昇格させることを可能にします。
compute.instances.osLogin
インスタンスでOSLoginが有効になっている場合、この権限を使用すると、単に**gcloud compute ssh [INSTANCE]
を実行してインスタンスに接続できます。インスタンス内ではroot権限はありません**。
この権限を使用してVMインスタンス内に正常にログインするには、VMにアタッチされたSAに対してiam.serviceAccounts.actAs
権限を持っている必要があります。
compute.instances.osAdminLogin
インスタンスでOSLoginが有効になっている場合、この権限を使用すると、単に**gcloud compute ssh [INSTANCE]
を実行してインスタンスに接続できます。インスタンス内ではroot権限があります**。
この権限を使用してVMインスタンス内に正常にログインするには、VMにアタッチされたSAに対してiam.serviceAccounts.actAs
権限を持っている必要があります。
compute.instances.create
,iam.serviceAccounts.actAs, compute.disks.create
, compute.instances.create
, compute.instances.setMetadata
, compute.instances.setServiceAccount
, compute.subnetworks.use
, compute.subnetworks.useExternalIp
サービスアカウントが割り当てられた仮想マシンを作成し、メタデータにアクセスしてそのトークンを盗むことが可能です。これにより、特権を昇格させることができます。
この方法のためのエクスプロイトスクリプトはこちらで見つけることができます。
osconfig.patchDeployments.create
| osconfig.patchJobs.exec
**osconfig.patchDeployments.create
またはosconfig.patchJobs.exec
**権限を持っている場合、パッチジョブまたはデプロイメントを作成できます。これにより、環境内で横移動し、プロジェクト内のすべてのコンピュートインスタンスでコード実行を得ることができます。
現時点では、インスタンスにアタッチされたSAに対して**actAs
権限は必要ありません**。
これを手動で悪用したい場合は、パッチジョブ または デプロイメントを作成する必要があります。 パッチジョブを実行するには:
パッチデプロイメントを展開するには:
The tool patchy は、過去にこの誤設定を悪用するために使用されていました(しかし、現在は動作していません)。
攻撃者はこれを持続性のために悪用することもできます。
compute.machineImages.setIamPolicy
コンピュートイメージに対して追加の権限を付与します。
compute.snapshots.setIamPolicy
ディスクスナップショットに対して追加の権限を付与します。
compute.disks.setIamPolicy
ディスクに対して追加の権限を付与します。
このリンクをたどると、アクセススコープをバイパスするためのアイデアが見つかります。
AWSハッキングを学び、練習する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、練習する:HackTricks Training GCP Red Team Expert (GRTE)