GCP - Add Custom SSH Metadata
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では、LinuxシステムはしばしばGoogle Compute Engine用のPython Linux Guest Environmentからスクリプトを実行します。この重要なコンポーネントは、認可されたSSH公開鍵の更新のためにインスタンスメタデータエンドポイントを定期的にチェックするように設計されたアカウントデーモンです。
したがって、攻撃者がカスタムメタデータを変更できる場合、デーモンが新しい公開鍵を見つけるようにし、それが処理されてローカルシステムに統合されることになります。この鍵は、既存のユーザーの~/.ssh/authorized_keys
ファイルに追加されるか、鍵の形式に応じてsudo
権限を持つ新しいユーザーが作成される可能性があります。攻撃者はホストを侵害することができます。
インスタンス上の既存のSSHキーを調査する:
インスタンスとそのメタデータを記述するコマンドを実行して、既存のSSHキーを見つけます。出力の関連セクションはmetadata
の下、特にssh-keys
キーの下にあります。
SSHキーの形式に注意してください: ユーザー名は鍵の前にあり、コロンで区切られています。
SSHキーのメタデータ用のテキストファイルを準備する:
ユーザー名とそれに対応するSSHキーの詳細をmeta.txt
という名前のテキストファイルに保存します。これは、新しいキーを追加しながら既存のキーを保持するために重要です。
ターゲットユーザー(この例ではalice
)のために新しいSSHキーを生成する:
ssh-keygen
コマンドを使用して新しいSSHキーを生成し、コメントフィールド(-C
)がターゲットユーザー名と一致するようにします。
新しい公開鍵をmeta.txt
に追加し、インスタンスのメタデータに見られる形式を模倣します。
インスタンスのSSHキーのメタデータを更新する:
gcloud compute instances add-metadata
コマンドを使用して、更新されたSSHキーのメタデータをインスタンスに適用します。
新しいSSHキーを使用してインスタンスにアクセスする:
新しいキーを使用してSSHでインスタンスに接続し、ターゲットユーザー(この例ではalice
)のコンテキストでシェルにアクセスします。
興味深いユーザーが見つからない場合は、sudo
権限を与えられる新しいユーザーを作成することが可能です:
プロジェクトレベルでSSHキーを適用することで、クラウド環境内の複数の仮想マシン(VM)へのSSHアクセスを拡大することが可能です。このアプローチにより、プロジェクト内の明示的にプロジェクト全体のSSHキーをブロックしていないインスタンスへのSSHアクセスが可能になります。以下は要約ガイドです:
プロジェクトレベルでSSHキーを適用する:
gcloud compute project-info add-metadata
コマンドを使用して、meta.txt
からプロジェクトのメタデータにSSHキーを追加します。この操作により、VMが「プロジェクト全体のSSHキーをブロック」オプションを有効にしていない限り、SSHキーがプロジェクト内のすべてのVMで認識されることが保証されます。
プロジェクト全体のキーを使用してインスタンスにSSH接続する:
プロジェクト全体のSSHキーが設定されている場合、プロジェクト内の任意のインスタンスにSSH接続できます。プロジェクト全体のキーをブロックしていないインスタンスはSSHキーを受け入れ、アクセスを許可します。
インスタンスにSSH接続する直接的な方法は、gcloud compute ssh [INSTANCE]
コマンドを使用することです。このコマンドは、現在のユーザー名とプロジェクトレベルで設定されたSSHキーを使用してアクセスを試みます。
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)