# TravisCI Security

{{#include ../../banners/hacktricks-training.md}}

## Šta je TravisCI

**Travis CI** je **hostovana** ili na **mestu** **kontinuirana integracija** usluga koja se koristi za izgradnju i testiranje softverskih projekata hostovanih na nekoliko **različitih git platformi**.

{{#ref}}
basic-travisci-information.md
{{#endref}}

## Napadi

### Okidači

Da biste pokrenuli napad, prvo morate znati kako da pokrenete izgradnju. Po defaultu, TravisCI će **pokrenuti izgradnju na push-evima i pull zahtevima**:

![](<../../images/image (145).png>)

#### Cron poslovi

Ako imate pristup web aplikaciji, možete **postaviti cron poslove za pokretanje izgradnje**, što može biti korisno za postizanje postojanosti ili za pokretanje izgradnje:

![](<../../images/image (243).png>)

> [!NOTE]
> Izgleda da nije moguće postaviti cron poslove unutar `.travis.yml` prema [ovome](https://github.com/travis-ci/travis-ci/issues/9162).

### PR treće strane

TravisCI po defaultu onemogućava deljenje env varijabli sa PR-ovima koji dolaze od trećih strana, ali neko bi to mogao omogućiti i tada biste mogli kreirati PR-ove za repozitorij i eksfiltrirati tajne:

![](<../../images/image (208).png>)

### Ispumpavanje tajni

Kao što je objašnjeno na stranici [**osnovne informacije**](basic-travisci-information.md), postoje 2 tipa tajni. **Tajne varijable okruženja** (koje su navedene na web stranici) i **prilagođene enkriptovane tajne**, koje se čuvaju unutar `.travis.yml` datoteke kao base64 (napomena da će obe, kada su sačuvane enkriptovane, završiti kao varijable okruženja na konačnim mašinama).

- Da biste **enumerisali tajne** konfigurirane kao **varijable okruženja**, idite na **podešavanja** **projekta** i proverite listu. Međutim, imajte na umu da će sve varijable okruženja projekta postavljene ovde biti prikazane prilikom pokretanja izgradnje.
- Da biste enumerisali **prilagođene enkriptovane tajne**, najbolje što možete učiniti je da **proverite `.travis.yml` datoteku**.
- Da biste **enumerisali enkriptovane datoteke**, možete proveriti za **`.enc` datoteke** u repozitorijumu, za linije slične `openssl aes-256-cbc -K $encrypted_355e94ba1091_key -iv $encrypted_355e94ba1091_iv -in super_secret.txt.enc -out super_secret.txt -d` u konfiguracionoj datoteci, ili za **enkriptovane iv i ključeve** u **varijablama okruženja** kao što su:

![](<../../images/image (81).png>)

### TODO:

- Primer izgradnje sa reverznim shell-om koji radi na Windows/Mac/Linux
- Primer izgradnje koja otkriva env base64 kodirane u logovima

### TravisCI Enterprise

Ako napadač završi u okruženju koje koristi **TravisCI enterprise** (više informacija o tome šta je to u [**osnovnim informacijama**](basic-travisci-information.md#travisci-enterprise)), moći će da **pokrene izgradnje u Worker-u.** To znači da će napadač moći da se lateralno kreće do tog servera sa kojeg bi mogao da:

- pobegne na host?
- kompromituje kubernetes?
- kompromituje druge mašine koje rade u istoj mreži?
- kompromituje nove cloud kredencijale?

## Reference

- [https://docs.travis-ci.com/user/encrypting-files/](https://docs.travis-ci.com/user/encrypting-files/)
- [https://docs.travis-ci.com/user/best-practices-security](https://docs.travis-ci.com/user/best-practices-security)

{{#include ../../banners/hacktricks-training.md}}
