Files
hacktricks-cloud/src/pentesting-ci-cd/travisci-security/README.md

3.4 KiB

TravisCI Seguridad

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

Qué es TravisCI

Travis CI es un servicio de integración continua alojado o en local utilizado para construir y probar proyectos de software alojados en varias diferentes plataformas git.

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

Ataques

Disparadores

Para lanzar un ataque primero necesitas saber cómo disparar una construcción. Por defecto, TravisCI disparará una construcción en los pushes y pull requests:

Trabajos Cron

Si tienes acceso a la aplicación web puedes configurar trabajos cron para ejecutar la construcción, esto podría ser útil para persistencia o para disparar una construcción:

Note

Parece que no es posible configurar trabajos cron dentro del .travis.yml según esto.

PR de Terceros

TravisCI por defecto desactiva el compartir variables de entorno con PRs provenientes de terceros, pero alguien podría habilitarlo y entonces podrías crear PRs al repositorio y exfiltrar los secretos:

Volcado de Secretos

Como se explica en la página de información básica, hay 2 tipos de secretos. Secretos de Variables de Entorno (que están listados en la página web) y secretos encriptados personalizados, que se almacenan dentro del archivo .travis.yml como base64 (ten en cuenta que ambos, al ser almacenados encriptados, terminarán como variables de entorno en las máquinas finales).

  • Para enumerar secretos configurados como Variables de Entorno ve a la configuración del proyecto y revisa la lista. Sin embargo, ten en cuenta que todas las variables de entorno del proyecto configuradas aquí aparecerán al disparar una construcción.
  • Para enumerar los secretos encriptados personalizados lo mejor que puedes hacer es revisar el archivo .travis.yml.
  • Para enumerar archivos encriptados puedes buscar archivos .enc en el repositorio, por líneas similares a openssl aes-256-cbc -K $encrypted_355e94ba1091_key -iv $encrypted_355e94ba1091_iv -in super_secret.txt.enc -out super_secret.txt -d en el archivo de configuración, o por iv y claves encriptadas en las Variables de Entorno como:

TODO:

  • Ejemplo de construcción con shell reverso ejecutándose en Windows/Mac/Linux
  • Ejemplo de construcción filtrando la env codificada en base64 en los logs

TravisCI Enterprise

Si un atacante termina en un entorno que utiliza TravisCI enterprise (más información sobre qué es esto en la información básica), podrá disparar construcciones en el Worker. Esto significa que un atacante podrá moverse lateralmente a ese servidor desde el cual podría ser capaz de:

  • ¿escapar al host?
  • ¿comprometer kubernetes?
  • ¿comprometer otras máquinas que se ejecutan en la misma red?
  • ¿comprometer nuevas credenciales en la nube?

Referencias

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