GCP - Add Custom SSH Metadata
Last updated
Last updated
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Die Modifikation von Metadaten auf einer Instanz könnte zu signifikanten Sicherheitsrisiken führen, wenn ein Angreifer die notwendigen 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 die benutzerdefinierten 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.
Untersuche vorhandene SSH-Schlüssel auf der Instanz:
Führe 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
.
Achte auf das Format der SSH-Schlüssel: Der Benutzername steht vor dem Schlüssel, getrennt durch einen Doppelpunkt.
Bereite eine Textdatei für SSH-Schlüssel-Metadaten vor:
Speichere die Details der Benutzernamen und ihrer entsprechenden SSH-Schlüssel in einer Textdatei namens meta.txt
. Dies ist wichtig, um die vorhandenen Schlüssel zu erhalten, während neue hinzugefügt werden.
Generiere einen neuen SSH-Schlüssel für den Zielbenutzer (alice
in diesem Beispiel):
Verwende den Befehl ssh-keygen
, um einen neuen SSH-Schlüssel zu generieren, wobei sichergestellt wird, dass das Kommentarfeld (-C
) mit dem Zielbenutzernamen übereinstimmt.
Füge den neuen öffentlichen Schlüssel zu meta.txt
hinzu, indem du das Format nachahmst, das in den Metadaten der Instanz gefunden wurde.
Aktualisiere die SSH-Schlüssel-Metadaten der Instanz:
Wende die aktualisierten SSH-Schlüssel-Metadaten auf die Instanz an, indem du den Befehl gcloud compute instances add-metadata
verwendest.
Greife mit dem neuen SSH-Schlüssel auf die Instanz zu:
Verbinde dich mit SSH zur Instanz unter Verwendung des neuen Schlüssels und greife 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)