AWS - Codebuild 열거

Tip

AWS 해킹 학습 및 실습:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 학습 및 실습: HackTricks Training GCP Red Team Expert (GRTE)
Az 해킹 학습 및 실습: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기

CodeBuild

AWS CodeBuild완전 관리형 지속적 통합 서비스로 알려져 있습니다. 이 서비스의 주요 목적은 소스 코드를 컴파일하고 테스트를 실행하며 소프트웨어를 배포할 수 있도록 패키징하는 일련의 과정을 자동화하는 것입니다. CodeBuild가 제공하는 주요 이점은 사용자가 빌드 서버를 프로비저닝, 관리 및 스케일링할 필요를 줄여준다는 점입니다. 이러한 편의성은 서비스 자체가 이러한 작업을 관리하기 때문입니다. AWS CodeBuild의 주요 특징은 다음과 같습니다:

  1. Managed Service: CodeBuild는 빌드 서버를 관리하고 확장하여 사용자가 서버 유지 관리를 하지 않아도 되게 합니다.
  2. Continuous Integration: 개발 및 배포 워크플로우와 통합되어 소프트웨어 릴리스 과정의 빌드 및 테스트 단계를 자동화합니다.
  3. Package Production: 빌드 및 테스트 단계 이후 소프트웨어 패키지를 준비하여 배포 준비 상태로 만듭니다.

AWS CodeBuild는 다른 AWS 서비스들과 원활하게 통합되어 CI/CD (Continuous Integration/Continuous Deployment) 파이프라인의 효율성과 신뢰성을 향상시킵니다.

Github/Gitlab/Bitbucket 자격 증명

Default source credentials

이 옵션은 레거시 방식으로, 일부 access(예: Github 토큰 또는 앱)를 구성하여 이 자격 증명이 codebuild projects 전반에 걸쳐 공유되도록 할 수 있습니다. 따라서 모든 프로젝트가 이 구성된 자격 증명 세트를 사용할 수 있습니다.

저장된 자격 증명(토큰, 비밀번호 등)은 codebuild에서 관리되며 AWS API에서 이를 가져올 수 있는 공개적인 방법은 없습니다.

커스텀 소스 자격 증명

저장소 플랫폼(Github, Gitlab 및 Bitbucket)에 따라 다양한 옵션이 제공됩니다. 일반적으로 토큰이나 비밀번호를 저장해야 하는 모든 옵션은 secrets manager에 비밀로 저장됩니다.

이렇게 하면 다른 codebuild projects가 공급자에 대해 서로 다른 구성된 접근 권한을 사용할 수 있게 되어 단순히 구성된 기본 접근만 사용하는 대신 프로젝트별로 다른 접근을 사용할 수 있습니다.

열거

# 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 권한이 있다면, 빌드 시점에 환경 변수(env vars)를 덮어쓸 수 있다는 점을 기억하세요 (--environment-variables-override). 이는 UpdateProjectbuildspec 오버라이드 없이도 일부 공격에 충분할 수 있습니다(예: artifact/upload buckets를 리다이렉트하여 secrets를 exfiltrate 하거나, language/runtime env vars를 악용해 명령을 실행하는 경우).

Privesc

다음 페이지에서 abuse codebuild permissions to escalate privileges 방법을 확인할 수 있습니다:

AWS - Codebuild Privesc

Post Exploitation

AWS - CodeBuild Post Exploitation

Unauthenticated Access

AWS - CodeBuild Unauthenticated Access

참고자료

Tip

AWS 해킹 학습 및 실습:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 학습 및 실습: HackTricks Training GCP Red Team Expert (GRTE)
Az 해킹 학습 및 실습: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기