TravisCI Security

Wsparcie dla HackTricks

Czym jest TravisCI

Travis CI to hostowana lub na lokalnych serwerach usługa ciągłej integracji, używana do budowania i testowania projektów oprogramowania hostowanych na różnych platformach git.

Ataki

Wyzwalacze

Aby przeprowadzić atak, najpierw musisz wiedzieć, jak wyzwolić budowę. Domyślnie TravisCI wyzwala budowę przy pushach i pull requestach:

Zadania Cron

Jeśli masz dostęp do aplikacji webowej, możesz ustawić zadania cron do uruchamiania budowy, co może być przydatne do utrzymania lub wyzwolenia budowy:

Wygląda na to, że nie można ustawić zadań cron w pliku .travis.yml zgodnie z tym.

PR zewnętrzny

TravisCI domyślnie wyłącza udostępnianie zmiennych środowiskowych z PR-ów pochodzących od osób trzecich, ale ktoś może to włączyć, a wtedy możesz stworzyć PR-y do repozytorium i wyeksportować sekrety:

Zrzucanie sekretów

Jak wyjaśniono na stronie podstawowe informacje, istnieją 2 typy sekretów. Sekrety zmiennych środowiskowych (które są wymienione na stronie internetowej) oraz niestandardowe zaszyfrowane sekrety, które są przechowywane w pliku .travis.yml jako base64 (zauważ, że oba, jako przechowywane zaszyfrowane, będą kończyć jako zmienne środowiskowe na finalnych maszynach).

  • Aby wyliczyć sekrety skonfigurowane jako zmienne środowiskowe, przejdź do ustawień projektu i sprawdź listę. Zauważ jednak, że wszystkie zmienne środowiskowe projektu ustawione tutaj pojawią się przy wyzwalaniu budowy.

  • Aby wyliczyć niestandardowe zaszyfrowane sekrety, najlepiej jest sprawdzić plik .travis.yml.

  • Aby wyliczyć zaszyfrowane pliki, możesz sprawdzić, czy w repozytorium znajdują się pliki .enc, linie podobne do openssl aes-256-cbc -K $encrypted_355e94ba1091_key -iv $encrypted_355e94ba1091_iv -in super_secret.txt.enc -out super_secret.txt -d w pliku konfiguracyjnym, lub zaszyfrowane iv i klucze w zmiennych środowiskowych, takich jak:

TODO:

  • Przykład budowy z działającym reverse shellem na Windows/Mac/Linux

  • Przykład budowy wyciekającej zmienne środowiskowe zakodowane w base64 w logach

TravisCI Enterprise

Jeśli atakujący znajdzie się w środowisku, które używa TravisCI enterprise (więcej informacji na ten temat w podstawowych informacjach), będzie mógł wyzwalać budowy w Workerze. Oznacza to, że atakujący będzie mógł poruszać się lateralnie do tego serwera, z którego mógłby:

  • uciec do hosta?

  • skompromitować kubernetes?

  • skompromitować inne maszyny działające w tej samej sieci?

  • skompromitować nowe poświadczenia chmurowe?

Referencje

Wsparcie dla HackTricks

Last updated