TravisCI セキュリティ

Reading time: 6 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

TravisCI とは

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

Basic TravisCI Information

攻撃

トリガー

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

Cron ジョブ

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

note

これによると、.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 で実行されるリバースシェルを持つビルドの例
  • ログにエンコードされた環境変数を漏洩させるビルドの例

TravisCI エンタープライズ

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

  • ホストに脱出する?
  • Kubernetes を侵害する?
  • 同じネットワーク内の他のマシンを侵害する?
  • 新しいクラウド資格情報を侵害する?

参考文献

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする