TravisCI Security

Unterstütze HackTricks

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 Information

Angriffe

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 wie openssl 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

Unterstütze HackTricks

Last updated