TravisCI Security
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 InformationAtaki
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 doopenssl 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
Last updated