mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-31 23:15:48 -08:00
66 lines
3.3 KiB
Markdown
66 lines
3.3 KiB
Markdown
# 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**:
|
|
|
|
.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:
|
|
|
|
.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:
|
|
|
|
.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:
|
|
|
|
.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}}
|