TravisCI Security
什么是 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?
危害同一网络中的其他机器?
危害新的云凭证?
参考资料
Last updated