TravisCI Security

支持 HackTricks

什么是 TravisCI

Travis CI 是一个 托管本地持续集成 服务,用于构建和测试托管在多个 不同 git 平台 上的软件项目。

Basic TravisCI Information

攻击

触发器

要发起攻击,首先需要知道如何触发构建。默认情况下,TravisCI 会在 推送和拉取请求触发构建

Cron Jobs

如果你有访问 web 应用的权限,可以 设置 cron 来运行构建,这可能对持久性或触发构建有用:

根据 这个,看起来无法在 .travis.yml 中设置 cron。

第三方 PR

TravisCI 默认禁用与来自第三方的 PR 共享环境变量,但有人可能会启用它,然后你可以创建 PR 到仓库并窃取秘密:

转储秘密

基本信息 页面所述,有两种类型的秘密。环境变量秘密(列在网页上)和 自定义加密秘密,它们以 base64 格式存储在 .travis.yml 文件中(注意两者都存储为加密的,最终会作为环境变量出现在最终机器中)。

  • 枚举 配置为 环境变量 的秘密,请转到 项目设置 并检查列表。然而,注意这里设置的所有项目环境变量将在触发构建时出现。

  • 要枚举 自定义加密秘密,最好的方法是 检查 .travis.yml 文件

  • 要枚举 加密文件,可以检查仓库中的 .enc 文件,配置文件中类似 openssl aes-256-cbc -K $encrypted_355e94ba1091_key -iv $encrypted_355e94ba1091_iv -in super_secret.txt.enc -out super_secret.txt -d 的行,或 环境变量 中的 加密 iv 和密钥,例如:

TODO:

  • 在 Windows/Mac/Linux 上运行反向 shell 的示例构建

  • 在日志中泄露 base64 编码环境变量的示例构建

TravisCI Enterprise

如果攻击者进入使用 TravisCI enterprise 的环境(更多信息请参见 基本信息),他将能够 在 Worker 中触发构建。这意味着攻击者将能够横向移动到该服务器,从而可能:

  • 逃脱到主机?

  • 危害 kubernetes?

  • 危害同一网络中的其他机器?

  • 危害新的云凭证?

参考资料

支持 HackTricks

Last updated