GCP - ローカル特権昇格 SSH ピボティング

Reading time: 7 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

このシナリオでは、あなたが VM内の非特権アカウントを侵害した と仮定します。

驚くべきことに、あなたが侵害した Compute Engine の GPC 権限は、マシン内でローカルに特権を昇格させるのに役立つかもしれません。クラウド環境では常に非常に役立つわけではありませんが、可能であることを知っておくのは良いことです。

スクリプトを読む

Compute インスタンスは、おそらくそのサービスアカウントを使用してアクションを実行するために いくつかのスクリプトを実行する ために存在しています。

IAMは非常に細かく設定できるため、アカウントはリソースに対して 読み取り/書き込み 権限を持っているが リスト権限は持っていない 可能性があります。

この良い仮想的な例は、instance82736-long-term-xyz-archive-0332893 というストレージバケットにバックアップを読み書きする権限を持つ Compute インスタンスです。

コマンドラインから gsutil ls を実行すると何も返されません。なぜなら、サービスアカウントが storage.buckets.list IAM 権限を欠いているからです。しかし、gsutil ls gs://instance82736-long-term-xyz-archive-0332893 を実行すると、完全なファイルシステムバックアップが見つかり、あなたのローカル Linux アカウントが持っていないデータへの平文アクセスが得られるかもしれません。

このバケット名は、スクリプト(bash、Python、Rubyなど)内で見つけることができるかもしれません。

カスタムメタデータ

管理者は、インスタンスおよび プロジェクトレベルカスタムメタデータ を追加できます。これは、任意のキー/値ペアをインスタンスに渡す方法であり、環境変数や起動/シャットダウンスクリプトに一般的に使用されます。

さらに、ユーザーデータを追加することも可能で、これはマシンが起動または再起動されるたびに 実行されるスクリプトであり、メタデータエンドポイントからもアクセス可能です。

詳細については、以下を確認してください:

Cloud SSRF - HackTricks

IAM権限の悪用

以下に提案するほとんどの権限は、デフォルトの Compute SA に与えられています。唯一の問題は、デフォルトのアクセススコープが SA の使用を妨げることです。しかし、cloud-platform スコープが有効になっているか、単に compute スコープが有効になっている場合、あなたはそれらを 悪用することができるでしょう。

以下の権限を確認してください:

ファイルシステム内のキーを検索

他のユーザーがボックス内で gcloud にログインし、ファイルシステムに資格情報を残しているか確認してください:

sudo find / -name "gcloud"

これらは最も興味深いファイルです:

  • ~/.config/gcloud/credentials.db
  • ~/.config/gcloud/legacy_credentials/[ACCOUNT]/adc.json
  • ~/.config/gcloud/legacy_credentials/[ACCOUNT]/.boto
  • ~/.credentials.json

さらにAPIキーの正規表現

bash
TARGET_DIR="/path/to/whatever"

# Service account keys
grep -Pzr "(?s){[^{}]*?service_account[^{}]*?private_key.*?}" \
"$TARGET_DIR"

# Legacy GCP creds
grep -Pzr "(?s){[^{}]*?client_id[^{}]*?client_secret.*?}" \
"$TARGET_DIR"

# Google API keys
grep -Pr "AIza[a-zA-Z0-9\\-_]{35}" \
"$TARGET_DIR"

# Google OAuth tokens
grep -Pr "ya29\.[a-zA-Z0-9_-]{100,200}" \
"$TARGET_DIR"

# Generic SSH keys
grep -Pzr "(?s)-----BEGIN[ A-Z]*?PRIVATE KEY[a-zA-Z0-9/\+=\n-]*?END[ A-Z]*?PRIVATE KEY-----" \
"$TARGET_DIR"

# Signed storage URLs
grep -Pir "storage.googleapis.com.*?Goog-Signature=[a-f0-9]+" \
"$TARGET_DIR"

# Signed policy documents in HTML
grep -Pzr '(?s)<form action.*?googleapis.com.*?name="signature" value=".*?">' \
"$TARGET_DIR"

参考文献

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする