TravisCI Security
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
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 kilku różnych platformach git.
Basic TravisCI InformationAby przeprowadzić atak, najpierw musisz wiedzieć, jak wyzwolić budowę. Domyślnie TravisCI wyzwala budowę przy pushach i pull requestach:
Jeśli masz dostęp do aplikacji internetowej, 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.
TravisCI domyślnie wyłącza udostępnianie zmiennych środowiskowych z PR-ów pochodzących od zewnętrznych podmiotów, ale ktoś może to włączyć, a wtedy możesz stworzyć PR-y do repozytorium i wyeksfiltrować sekrety:
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 końcowych 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:
Przykład budowy z działającym reverse shellem na Windows/Mac/Linux
Przykład budowy wyciekającej zmienną środowiskową zakodowaną w base64 w logach
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?
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)