# Sicurezza di TravisCI {{#include ../../banners/hacktricks-training.md}} ## Cos'è TravisCI **Travis CI** è un servizio di **integrazione continua** **hosted** o on **premises** utilizzato per costruire e testare progetti software ospitati su diverse **piattaforme git**. {{#ref}} basic-travisci-information.md {{#endref}} ## Attacchi ### Attivatori Per lanciare un attacco, è necessario prima sapere come attivare una build. Per impostazione predefinita, TravisCI **attiverà una build su push e pull request**: ![](<../../images/image (145).png>) #### Cron Jobs Se hai accesso all'applicazione web, puoi **impostare crons per eseguire la build**, questo potrebbe essere utile per la persistenza o per attivare una build: ![](<../../images/image (243).png>) > [!NOTE] > Sembra che non sia possibile impostare crons all'interno del `.travis.yml` secondo [questo](https://github.com/travis-ci/travis-ci/issues/9162). ### PR di terze parti TravisCI per impostazione predefinita disabilita la condivisione delle variabili d'ambiente con le PR provenienti da terze parti, ma qualcuno potrebbe abilitarlo e poi potresti creare PR per il repo ed esfiltrare i segreti: ![](<../../images/image (208).png>) ### Dumping dei segreti Come spiegato nella pagina [**informazioni di base**](basic-travisci-information.md), ci sono 2 tipi di segreti. I segreti delle **variabili d'ambiente** (che sono elencati nella pagina web) e i **segreti crittografati personalizzati**, che sono memorizzati all'interno del file `.travis.yml` come base64 (nota che entrambi, essendo memorizzati in modo crittografato, finiranno come variabili d'ambiente nelle macchine finali). - Per **enumerare i segreti** configurati come **variabili d'ambiente**, vai alle **impostazioni** del **progetto** e controlla l'elenco. Tuttavia, nota che tutte le variabili d'ambiente del progetto impostate qui appariranno quando attivi una build. - Per enumerare i **segreti crittografati personalizzati**, il miglior modo è **controllare il file `.travis.yml`**. - Per **enumerare i file crittografati**, puoi cercare file **`.enc`** nel repo, per righe simili a `openssl aes-256-cbc -K $encrypted_355e94ba1091_key -iv $encrypted_355e94ba1091_iv -in super_secret.txt.enc -out super_secret.txt -d` nel file di configurazione, o per **iv e chiavi crittografate** nelle **variabili d'ambiente** come: ![](<../../images/image (81).png>) ### TODO: - Esempio di build con reverse shell in esecuzione su Windows/Mac/Linux - Esempio di build che esfiltra l'env codificato in base64 nei log ### TravisCI Enterprise Se un attaccante si trova in un ambiente che utilizza **TravisCI enterprise** (maggiori informazioni su cosa sia nella [**informazioni di base**](basic-travisci-information.md#travisci-enterprise)), sarà in grado di **attivare build nel Worker.** Questo significa che un attaccante sarà in grado di muoversi lateralmente verso quel server da cui potrebbe essere in grado di: - scappare verso l'host? - compromettere kubernetes? - compromettere altre macchine in esecuzione nella stessa rete? - compromettere nuove credenziali cloud? ## Riferimenti - [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}}