TravisCI Security
Reading time: 4 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
O que é TravisCI
Travis CI é um serviço de integração contínua hospedado ou local usado para construir e testar projetos de software hospedados em várias plataformas git diferentes.
Ataques
Gatilhos
Para lançar um ataque, você primeiro precisa saber como acionar uma construção. Por padrão, o TravisCI acionará uma construção em pushes e pull requests:
Cron Jobs
Se você tiver acesso à aplicação web, pode configurar crons para executar a construção, isso pode ser útil para persistência ou para acionar uma construção:
note
Parece que não é possível configurar crons dentro do .travis.yml
de acordo com isso.
PR de Terceiros
O TravisCI, por padrão, desabilita o compartilhamento de variáveis de ambiente com PRs provenientes de terceiros, mas alguém pode habilitá-lo e então você poderia criar PRs para o repositório e exfiltrar os segredos:
Dumping Secrets
Como explicado na página de informações básicas, existem 2 tipos de segredos. Segredos de Variáveis de Ambiente (que estão listados na página web) e segredos criptografados personalizados, que são armazenados dentro do arquivo .travis.yml
como base64 (note que ambos, quando armazenados criptografados, acabarão como variáveis de ambiente nas máquinas finais).
- Para enumerar segredos configurados como Variáveis de Ambiente, vá para as configurações do projeto e verifique a lista. No entanto, note que todas as variáveis de ambiente do projeto definidas aqui aparecerão ao acionar uma construção.
- Para enumerar os segredos criptografados personalizados, o melhor que você pode fazer é verificar o arquivo
.travis.yml
. - Para enumerar arquivos criptografados, você pode procurar por arquivos
.enc
no repositório, por linhas semelhantes aopenssl aes-256-cbc -K $encrypted_355e94ba1091_key -iv $encrypted_355e94ba1091_iv -in super_secret.txt.enc -out super_secret.txt -d
no arquivo de configuração, ou por iv e chaves criptografadas nas Variáveis de Ambiente como:
TODO:
- Exemplo de construção com shell reverso rodando em Windows/Mac/Linux
- Exemplo de construção vazando a variável de ambiente codificada em base64 nos logs
TravisCI Enterprise
Se um atacante acabar em um ambiente que usa TravisCI enterprise (mais informações sobre o que é isso na informação básica), ele poderá acionar construções no Worker. Isso significa que um atacante poderá se mover lateralmente para aquele servidor do qual ele poderá:
- escapar para o host?
- comprometer kubernetes?
- comprometer outras máquinas rodando na mesma rede?
- comprometer novas credenciais de nuvem?
Referências
- https://docs.travis-ci.com/user/encrypting-files/
- https://docs.travis-ci.com/user/best-practices-security
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.