TravisCI Security

Support HackTricks

Co to jest TravisCI

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

Basic TravisCI Information

Ataki

Wyzwalacze

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

Cron Jobs

Jeśli masz dostęp do aplikacji webowej, możesz ustawić crony do uruchamiania builda, co może być przydatne dla utrzymania dostępu lub wyzwalania builda:

Wygląda na to, że nie można ustawić cronów wewnątrz .travis.yml zgodnie z tym.

Third Party PR

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

Dumping Secrets

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

  • Aby wyenumerować sekrety skonfigurowane jako zmienne środowiskowe, przejdź do ustawień projektu i sprawdź listę. Należy jednak pamiętać, że wszystkie zmienne środowiskowe projektu ustawione tutaj pojawią się podczas wyzwalania builda.

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

  • Aby wyenumerować zaszyfrowane pliki, możesz sprawdzić pliki .enc w repozytorium, 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ładowy build z reverse shell uruchomionym na Windows/Mac/Linux

  • Przykładowy build wyciekający 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 basic information), będzie mógł wyzwalać buildy w Workerze. Oznacza to, że atakujący będzie mógł poruszać się lateralnie do tego serwera, z którego może być w stanie:

  • uciec do hosta?

  • skompromitować kubernetes?

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

  • skompromitować nowe poświadczenia chmurowe?

Referencje

Support HackTricks

Last updated