TravisCI Security

Support HackTricks

O que é TravisCI

Travis CI é um serviço de integração contínua hospedado ou on premises usado para construir e testar projetos de software hospedados em várias diferentes plataformas git.

Basic TravisCI Information

Ataques

Triggers

Para lançar um ataque, você primeiro precisa saber como acionar uma build. Por padrão, TravisCI irá acionar uma build em pushes e pull requests:

Cron Jobs

Se você tiver acesso à aplicação web, pode configurar crons para executar a build, isso pode ser útil para persistência ou para acionar uma build:

Parece que não é possível configurar crons dentro do .travis.yml de acordo com isto.

Third Party PR

TravisCI, por padrão, desabilita o compartilhamento de variáveis de ambiente com PRs vindos de terceiros, mas alguém pode habilitar isso 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 são listados na página web) e segredos criptografados personalizados, que são armazenados dentro do arquivo .travis.yml como base64 (note que ambos, como são 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 configuradas aqui aparecerão ao acionar uma build.

  • 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 a openssl 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 build com shell reverso rodando em Windows/Mac/Linux

  • Exemplo de build 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 builds no Worker. Isso significa que um atacante poderá se mover lateralmente para esse servidor, a partir do qual ele poderá:

  • escapar para o host?

  • comprometer o kubernetes?

  • comprometer outras máquinas rodando na mesma rede?

  • comprometer novas credenciais de cloud?

Referências

Support HackTricks

Last updated