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)
Die Modifikation von Metadaten auf einer Instanz könnte zu erheblichen Sicherheitsrisiken führen, wenn ein Angreifer die erforderlichen Berechtigungen erlangt.
Auf GCP führen Linux-Systeme häufig Skripte aus der Python Linux Guest Environment for Google Compute Engine aus. Ein kritischer Bestandteil davon ist der accounts daemon, der dazu dient, regelmäßig den Metadaten-Endpunkt der Instanz auf Updates der autorisierten SSH-Öffentlichen Schlüssel zu überprüfen.
Wenn ein Angreifer also benutzerdefinierte Metadaten ändern kann, könnte er den Daemon dazu bringen, einen neuen öffentlichen Schlüssel zu finden, der verarbeitet und in das lokale System integriert wird. Der Schlüssel wird in die Datei ~/.ssh/authorized_keys
eines bestehenden Benutzers hinzugefügt oder möglicherweise wird ein neuer Benutzer mit sudo
-Rechten erstellt, abhängig vom Format des Schlüssels. Und der Angreifer wird in der Lage sein, den Host zu kompromittieren.
Examine Existing SSH Keys on the Instance:
Führen Sie den Befehl aus, um die Instanz und ihre Metadaten zu beschreiben, um vorhandene SSH-Schlüssel zu finden. Der relevante Abschnitt in der Ausgabe befindet sich unter metadata
, speziell dem Schlüssel ssh-keys
.
Achten Sie auf das Format der SSH-Schlüssel: Der Benutzername steht vor dem Schlüssel, getrennt durch einen Doppelpunkt.
Prepare a Text File for SSH Key Metadata:
Speichern Sie die Details der Benutzernamen und ihrer entsprechenden SSH-Schlüssel in einer Textdatei mit dem Namen meta.txt
. Dies ist wichtig, um die vorhandenen Schlüssel zu erhalten, während neue hinzugefügt werden.
Generate a New SSH Key for the Target User (alice
in this example):
Verwenden Sie den Befehl ssh-keygen
, um einen neuen SSH-Schlüssel zu generieren, wobei sichergestellt wird, dass das Kommentarfeld (-C
) mit dem Zielbenutzernamen übereinstimmt.
Fügen Sie den neuen öffentlichen Schlüssel zu meta.txt
hinzu, indem Sie das Format nachahmen, das in den Metadaten der Instanz gefunden wurde.
Update the Instance's SSH Key Metadata:
Wenden Sie die aktualisierten SSH-Schlüsselmetadaten auf die Instanz an, indem Sie den Befehl gcloud compute instances add-metadata
verwenden.
Access the Instance Using the New SSH Key:
Verbinden Sie sich mit der Instanz über SSH unter Verwendung des neuen Schlüssels und greifen Sie auf die Shell im Kontext des Zielbenutzers (alice
in diesem Beispiel) zu.
Wenn kein interessanter Benutzer gefunden wird, ist es möglich, einen neuen zu erstellen, dem sudo
-Rechte gegeben werden:
Es ist möglich, den Zugriff auf SSH für mehrere virtuelle Maschinen (VMs) in einer Cloud-Umgebung zu erweitern, indem SSH-Schlüssel auf Projektebene angewendet werden. Dieser Ansatz ermöglicht den SSH-Zugriff auf jede Instanz innerhalb des Projekts, die nicht ausdrücklich die projektweiten SSH-Schlüssel blockiert hat. Hier ist eine zusammengefasste Anleitung:
SSH-Schlüssel auf Projektebene anwenden:
Verwenden Sie den Befehl gcloud compute project-info add-metadata
, um SSH-Schlüssel aus meta.txt
zu den Metadaten des Projekts hinzuzufügen. Diese Aktion stellt sicher, dass die SSH-Schlüssel in allen VMs des Projekts erkannt werden, es sei denn, eine VM hat die Option "Projektweite SSH-Schlüssel blockieren" aktiviert.
SSH in Instanzen mit projektweiten Schlüsseln:
Mit den projektweiten SSH-Schlüsseln können Sie in jede Instanz innerhalb des Projekts SSH-en. Instanzen, die projektweite Schlüssel nicht blockieren, akzeptieren den SSH-Schlüssel und gewähren Zugriff.
Eine direkte Methode, um in eine Instanz SSH zu gelangen, ist die Verwendung des Befehls gcloud compute ssh [INSTANCE]
. Dieser Befehl verwendet Ihren aktuellen Benutzernamen und die auf Projektebene festgelegten SSH-Schlüssel, um den Zugriff zu versuchen.
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)