TravisCI Security

Unterstütze HackTricks

Was ist TravisCI

Travis CI ist ein gehosteter oder vor Ort kontinuierlicher Integrationsdienst, der verwendet wird, um Softwareprojekte zu erstellen und zu testen, die auf mehreren 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 Cron-Jobs einrichten, um den Build auszuführen, dies könnte nützlich für Persistenz oder um einen Build auszulösen sein:

Es scheint, dass es nicht möglich ist, Cron-Jobs innerhalb der .travis.yml gemäß diesem einzurichten.

Dritte Partei 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 zum Repo erstellen und die Geheimnisse exfiltrieren:

Geheimnisse dumpen

Wie auf der Seite mit den grundlegenden Informationen erklärt, gibt es 2 Arten von Geheimnissen. Umgebungsvariablen-Geheimnisse (die auf der Webseite aufgelistet sind) und benutzerdefinierte verschlüsselte Geheimnisse, die in der .travis.yml-Datei als base64 gespeichert sind (beachte, dass beide als verschlüsselt gespeichert in den endgültigen Maschinen als Umgebungsvariablen 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 erscheinen, wenn ein Build ausgelöst wird.

  • 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, die ähnlich sind 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, 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-kodiert in den Logs ausgibt

TravisCI Enterprise

Wenn ein Angreifer in einer Umgebung landet, die TravisCI Enterprise verwendet (mehr Informationen dazu in den grundlegenden Informationen), wird er in der Lage sein, Builds im Worker auszulösen. Das bedeutet, dass ein Angreifer in der Lage sein wird, lateral zu diesem Server zu wechseln, von dem aus er in der Lage sein könnte zu:

  • zum Host entkommen?

  • Kubernetes kompromittieren?

  • andere Maschinen im selben Netzwerk kompromittieren?

  • neue Cloud-Anmeldeinformationen kompromittieren?

Referenzen

Unterstütze HackTricks

Last updated