TravisCI Security
Was ist TravisCI
Travis CI ist ein gehosteter oder lokaler Continuous Integration-Dienst, der verwendet wird, um Softwareprojekte zu bauen und zu testen, die auf verschiedenen Git-Plattformen gehostet werden.
Basic TravisCI InformationAngriffe
Auslöser
Um einen Angriff zu starten, musst du zuerst wissen, wie man einen Build auslöst. Standardmäßig wird TravisCI einen Build bei Pushes und Pull Requests auslösen:
Cron Jobs
Wenn du Zugriff auf die Webanwendung hast, kannst du Crons einrichten, um den Build auszuführen, was nützlich für Persistenz oder zum Auslösen eines Builds sein könnte:
Es scheint, dass es nicht möglich ist, Crons innerhalb der .travis.yml
einzurichten, laut diesem.
Third Party PR
TravisCI deaktiviert standardmäßig das Teilen von Umgebungsvariablen mit PRs von Dritten, aber jemand könnte es aktivieren und dann könntest du PRs an das Repo erstellen und die Geheimnisse exfiltrieren:
Geheimnisse auslesen
Wie auf der Seite basic information erklärt, gibt es 2 Arten von Geheimnissen. Umgebungsvariablen-Geheimnisse (die auf der Webseite aufgelistet sind) und benutzerdefinierte verschlüsselte Geheimnisse, die als Base64 im .travis.yml
-Datei gespeichert sind (beachte, dass beide verschlüsselt gespeichert werden und als Umgebungsvariablen in den endgültigen Maschinen enden).
Um Geheimnisse zu enumerieren, die als Umgebungsvariablen konfiguriert sind, gehe zu den Einstellungen des Projekts und überprüfe die Liste. Beachte jedoch, dass alle hier festgelegten Projekt-Umgebungsvariablen beim Auslösen eines Builds erscheinen.
Um die benutzerdefinierten verschlüsselten Geheimnisse zu enumerieren, ist das Beste, was du tun kannst, die
.travis.yml
-Datei zu überprüfen.Um verschlüsselte Dateien zu enumerieren, kannst du nach
.enc
-Dateien im Repo suchen, nach Zeilen wieopenssl aes-256-cbc -K $encrypted_355e94ba1091_key -iv $encrypted_355e94ba1091_iv -in super_secret.txt.enc -out super_secret.txt -d
in der Konfigurationsdatei suchen oder nach verschlüsselten iv und Schlüsseln in den Umgebungsvariablen wie:
TODO:
Beispiel-Build mit Reverse Shell, die auf Windows/Mac/Linux läuft
Beispiel-Build, der die Umgebungsvariablen base64-codiert in den Logs leakt
TravisCI Enterprise
Wenn ein Angreifer in einer Umgebung landet, die TravisCI Enterprise verwendet (mehr Infos dazu auf der Seite basic information), wird er in der Lage sein, Builds im Worker auszulösen. Das bedeutet, dass ein Angreifer seitlich zu diesem Server wechseln kann, von dem aus er möglicherweise in der Lage ist:
zum Host zu entkommen?
Kubernetes zu kompromittieren?
andere Maschinen im selben Netzwerk zu kompromittieren?
neue Cloud-Anmeldeinformationen zu kompromittieren?
Referenzen
Last updated