AWS - CodeBuild 列挙

Tip

学んで実践する AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
学んで実践する GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
学んで実践する Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks をサポートする

CodeBuild

AWS CodeBuild は、フルマネージドの継続的インテグレーションサービスとして知られています。このサービスの主な目的は、ソースコードのコンパイル、テストの実行、ソフトウェアのデプロイ用パッケージ化という一連の工程を自動化することです。CodeBuild の主な利点は、ユーザーがビルドサーバーをプロビジョニング、管理、スケールする必要を軽減できる点にあります。これはサービス自身がそれらを管理するためです。AWS CodeBuild の主な機能は次のとおりです:

  1. マネージドサービス: CodeBuild はビルドサーバーを管理およびスケールし、ユーザーをサーバーの保守から解放します。
  2. 継続的インテグレーション: 開発・デプロイワークフローと統合して、ソフトウェアリリースのビルドおよびテスト段階を自動化します。
  3. パッケージ作成: ビルドとテストの段階の後、ソフトウェアパッケージを準備してデプロイ可能な状態にします。

AWS CodeBuild は他の AWS サービスとシームレスに統合され、CI/CD(継続的インテグレーション/継続的デプロイ)パイプラインの効率性と信頼性を向上させます。

Github/Gitlab/Bitbucket 認証情報

Default source credentials

これはレガシーなオプションで、Github トークンやアプリのような一部のアクセスを設定して、CodeBuild プロジェクト間で共有できるため、すべてのプロジェクトがこの設定済みの認証情報を使用できます。

保存された認証情報(トークン、パスワード…)は CodeBuild によって管理されており、AWS API からそれらを取得する公開の方法はありません。

Custom source credential

リポジトリプラットフォーム(Github、Gitlab、Bitbucket)に応じて異なるオプションが提供されます。しかし一般的に、トークンやパスワードを保存する必要があるオプションは、secrets manager にシークレットとして保存されます

これにより、異なる CodeBuild プロジェクトがプロバイダに対して異なる設定済みのアクセスを使用できるようになり、単にデフォルトの設定を使うだけではなくなります。

列挙

# List external repo creds (such as github tokens)
## It doesn't return the token but just the ARN where it's located
aws codebuild list-source-credentials

# Projects
aws codebuild list-shared-projects
aws codebuild list-projects
aws codebuild batch-get-projects --names <project_name> # Check for creds in env vars

# Builds
aws codebuild list-builds
aws codebuild list-builds-for-project --project-name <p_name>
aws codebuild list-build-batches
aws codebuild list-build-batches-for-project --project-name <p_name>

# Reports
aws codebuild list-reports
aws codebuild describe-test-cases --report-arn <ARN>

Tip

codebuild:StartBuild を持っている場合、ビルド時に環境変数を上書きできることが多いことを覚えておいてください(--environment-variables-override)。これは UpdateProjectbuildspec の上書きがなくても一部の攻撃に十分です(例えば:artifact/upload バケットをリダイレクトしてシークレットを exfiltrate する、あるいは language/runtime の env vars を悪用してコマンドを実行する)。

Privesc

In the following page, you can check how to abuse codebuild permissions to escalate privileges:

AWS - Codebuild Privesc

Post Exploitation

AWS - CodeBuild Post Exploitation

Unauthenticated Access

AWS - CodeBuild Unauthenticated Access

参考資料

Tip

学んで実践する AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
学んで実践する GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
学んで実践する Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks をサポートする