TravisCI Security

HackTricksをサポートする

TravisCIとは

Travis CIは、さまざまな異なるgitプラットフォームにホストされたソフトウェアプロジェクトをビルドおよびテストするために使用されるホスティングまたはオンプレミスの継続的インテグレーションサービスです。

攻撃

トリガー

攻撃を開始するには、まずビルドをトリガーする方法を知る必要があります。デフォルトでは、TravisCIはプッシュとプルリクエストでビルドをトリガーします

Cronジョブ

Webアプリケーションにアクセスできる場合、ビルドを実行するためのcronを設定できます。これは持続性やビルドをトリガーするのに役立ちます:

こちらによると、.travis.yml内でcronを設定することはできないようです。

サードパーティPR

デフォルトでは、TravisCIはサードパーティからのPRと環境変数の共有を無効にしていますが、誰かがそれを有効にすると、リポジトリにPRを作成して秘密を抽出できる可能性があります:

秘密のダンプ

基本情報ページで説明されているように、秘密には2種類あります。環境変数の秘密(Webページにリストされています)と、カスタム暗号化された秘密で、これは.travis.ymlファイル内にbase64として保存されています(両方とも暗号化されて保存されると、最終的なマシンの環境変数として表示されます)。

  • 環境変数として設定された秘密を列挙するには、プロジェクトの設定に移動し、リストを確認します。ただし、ここで設定されたすべてのプロジェクト環境変数は、ビルドをトリガーすると表示されます。

  • カスタム暗号化された秘密を列挙するには、最善の方法は.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でリバースシェルを実行する例ビルド

  • ログにベース64エンコードされた環境を漏洩させる例ビルド

TravisCIエンタープライズ

攻撃者がTravisCIエンタープライズを使用している環境に入った場合(これが何であるかの詳細は基本情報にあります)、彼はWorkerでビルドをトリガーすることができます。これは、攻撃者がそのサーバーに横移動できることを意味し、そこから次のことが可能になります:

  • ホストに逃げる?

  • Kubernetesを侵害する?

  • 同じネットワーク内の他のマシンを侵害する?

  • 新しいクラウド資格情報を侵害する?

参考文献

HackTricksをサポートする

Last updated