AWS Codebuild - Token Leakage
Github/Bitbucket Konfigurierte Tokens Wiederherstellen
Überprüfe zuerst, ob Quell-Anmeldeinformationen konfiguriert sind, die du leaken könntest:
Über Docker-Image
Wenn Sie feststellen, dass die Authentifizierung beispielsweise zu Github im Konto eingerichtet ist, können Sie diesen Zugriff (GH-Token oder OAuth-Token) exfiltrieren, indem Sie Codebuild dazu bringen, ein bestimmtes Docker-Image zu verwenden, um den Build des Projekts auszuführen.
Zu diesem Zweck könnten Sie ein neues Codebuild-Projekt erstellen oder die Umgebung eines bestehenden ändern, um das Docker-Image festzulegen.
Das Docker-Image, das Sie verwenden könnten, ist https://github.com/carlospolop/docker-mitm. Dies ist ein sehr einfaches Docker-Image, das die Umgebungsvariablen https_proxy
, http_proxy
und SSL_CERT_FILE
setzt. Dies ermöglicht es Ihnen, den größten Teil des Datenverkehrs des Hosts, der in https_proxy
und http_proxy
angegeben ist, abzufangen und dem in SSL_CERT_FILE
angegebenen SSL-Zertifikat zu vertrauen.
Erstellen & Hochladen Ihres eigenen Docker MitM-Images
Befolgen Sie die Anweisungen des Repos, um Ihre Proxy-IP-Adresse und Ihr SSL-Zertifikat festzulegen und das Docker-Image zu erstellen.
SETZEN SIE
http_proxy
NICHT, um Anfragen an den Metadata-Endpunkt nicht abzufangen.Sie könnten
ngrok
wiengrok tcp 4444
verwenden, um den Proxy auf Ihren Host zu setzen.Sobald Sie das Docker-Image erstellt haben, laden Sie es in ein öffentliches Repo hoch (Dockerhub, ECR...)
Umgebung festlegen
Erstellen Sie ein neues Codebuild-Projekt oder ändern Sie die Umgebung eines bestehenden.
Stellen Sie das Projekt so ein, dass es das zuvor erstellte Docker-Image verwendet.
Setzen Sie den MitM-Proxy auf Ihrem Host
Wie im Github-Repo angegeben, könnten Sie etwas wie Folgendes verwenden:
Die verwendete mitmproxy-Version war 9.0.1, es wurde berichtet, dass dies mit Version 10 möglicherweise nicht funktioniert.
Führen Sie den Build aus und erfassen Sie die Anmeldeinformationen
Sie können das Token im Authorization-Header sehen:
Dies könnte auch über die aws cli mit etwas wie
Via HTTP protocol
Diese Schwachstelle wurde von AWS irgendwann in der Woche des 20. Februar 2023 behoben (ich denke am Freitag). Ein Angreifer kann sie also nicht mehr ausnutzen :)
Ein Angreifer mit erhöhten Berechtigungen in einem CodeBuild könnte das konfigurierte Github/Bitbucket-Token leaken oder, wenn die Berechtigungen über OAuth konfiguriert wurden, das temporäre OAuth-Token, das zum Zugriff auf den Code verwendet wird.
Ein Angreifer könnte die Umgebungsvariablen http_proxy und https_proxy zum CodeBuild-Projekt hinzufügen und auf seine Maschine verweisen (zum Beispiel
http://5.tcp.eu.ngrok.io:14972
).
Dann die URL des Github-Repos ändern, um HTTP anstelle von HTTPS zu verwenden, zum Beispiel: **http://**github.com/carlospolop-forks/TestActions
Dann das einfache Beispiel von https://github.com/synchronizing/mitm im Port ausführen, der von den Proxy-Variablen (http_proxy und https_proxy) angegeben wird
Schließlich klicken Sie auf Build the project, die credentials werden im Klartext (base64) an den mitm-Port gesendet:
Nun kann ein Angreifer das Token von seiner Maschine aus verwenden, alle seine Privilegien auflisten und es einfacher (miss)brauchen, als den CodeBuild-Dienst direkt zu nutzen.
Last updated