AWS Codebuild - Token Leakage
Wiederherstellen von Github/Bitbucket konfigurierten Tokens
Überprüfen Sie zunächst, ob irgendwelche Quellzugangsdaten konfiguriert sind, die Sie möglicherweise preisgeben könnten:
Über Docker-Image
Wenn Sie feststellen, dass die Authentifizierung beispielsweise für Github im Konto festgelegt ist, können Sie diesen Zugriff (GH-Token oder OAuth-Token) durch Veranlassen von Codebuild, ein bestimmtes Docker-Image zur Ausführung des Projektaufbaus zu verwenden, exfiltrieren.
Zu diesem Zweck könnten Sie ein neues Codebuild-Projekt erstellen oder die Umgebung eines vorhandenen ä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 grundlegendes Docker-Image, das die Umgebungsvariablen https_proxy
, http_proxy
und SSL_CERT_FILE
festlegt. Dadurch können Sie den Großteil des Datenverkehrs des im https_proxy
und http_proxy
angegebenen Hosts abfangen und dem im SSL_CERT_FILE
angegebenen SSL-Zertifikat vertrauen.
Erstellen und Hochladen Ihres eigenen Docker MitM-Images
Befolgen Sie die Anweisungen des Repos, um Ihre Proxy-IP-Adresse festzulegen und Ihr SSL-Zertifikat zu setzen und bauen Sie das Docker-Image.
SETZEN SIE NICHT
http_proxy
, um Anfragen an den Metadaten-Endpunkt nicht abzufangen.Sie könnten
ngrok
wiengrok tcp 4444
verwenden, um den Proxy zu Ihrem Host zu setzen.Sobald Sie das Docker-Image erstellt haben, laden Sie es in ein öffentliches Repo hoch (Dockerhub, ECR...).
Setzen der Umgebung
Erstellen Sie ein neues Codebuild-Projekt oder ändern Sie die Umgebung eines vorhandenen.
Legen Sie das Projekt fest, um das zuvor generierte Docker-Image zu verwenden.
Setzen Sie den MitM-Proxy in Ihrem Host
Wie im Github-Repo angegeben, könnten Sie etwas Ähnliches verwenden:
Die mitmproxy-Version, die verwendet wurde, 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 Autorisierungs-Header sehen:
Dies könnte auch über die AWS-CLI mit etwas Ähnlichem durchgeführt werden
Über das HTTP-Protokoll
Diese Schwachstelle wurde von AWS irgendwann in der Woche vom 20. Februar 2023 behoben (ich glaube 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 offenlegen 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, die auf seine eigene Maschine verweisen (zum Beispiel
http://5.tcp.eu.ngrok.io:14972
).
Ändern Sie dann die URL des Github-Repositorys, um HTTP anstelle von HTTPS zu verwenden, zum Beispiel: **http://**github.com/carlospolop-forks/TestActions
Führen Sie dann das Grundbeispiel von https://github.com/synchronizing/mitm auf dem vom Proxy-Variablen (http_proxy und https_proxy) angegebenen Port aus.
Klicken Sie abschließend auf Projekt erstellen, die Anmeldeinformationen werden im Klartext (base64) an den mitm-Port gesendet:
Nun kann ein Angreifer das Token von seinem Gerät aus nutzen, um alle Berechtigungen aufzulisten und einfacher zu (miss)brauchen als bei direkter Nutzung des CodeBuild-Dienstes.
Last updated