AWS - Enumeração do Codebuild

Reading time: 4 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

CodeBuild

AWS CodeBuild é reconhecido como um serviço de integração contínua totalmente gerenciado. O principal objetivo deste serviço é automatizar a sequência de compilação do código-fonte, execução de testes e empacotamento do software para fins de implantação. O benefício predominante oferecido pelo CodeBuild reside em sua capacidade de aliviar a necessidade de os usuários provisionarem, gerenciarem e escalarem seus servidores de build. Essa conveniência se deve ao fato de que o próprio serviço gerencia essas tarefas. As características essenciais do AWS CodeBuild incluem:

  1. Serviço Gerenciado: O CodeBuild gerencia e escala os servidores de build, liberando os usuários da manutenção do servidor.
  2. Integração Contínua: Ele se integra ao fluxo de trabalho de desenvolvimento e implantação, automatizando as fases de build e teste do processo de liberação de software.
  3. Produção de Pacotes: Após as fases de build e teste, ele prepara os pacotes de software, tornando-os prontos para implantação.

O AWS CodeBuild se integra perfeitamente com outros serviços da AWS, aumentando a eficiência e a confiabilidade do pipeline de CI/CD (Integração Contínua/Implantação Contínua).

Credenciais do Github/Gitlab/Bitbucket

Credenciais de fonte padrão

Esta é a opção legada onde é possível configurar algum acesso (como um token ou aplicativo do Github) que será compartilhado entre os projetos do codebuild, para que todos os projetos possam usar esse conjunto de credenciais configurado.

As credenciais armazenadas (tokens, senhas...) são gerenciadas pelo codebuild e não há nenhuma maneira pública de recuperá-las das APIs da AWS.

Credencial de fonte personalizada

Dependendo da plataforma do repositório (Github, Gitlab e Bitbucket), diferentes opções são fornecidas. Mas, em geral, qualquer opção que requer armazenar um token ou uma senha será armazenada como um segredo no gerenciador de segredos.

Isso permite que diferentes projetos do codebuild usem diferentes acessos configurados aos provedores em vez de apenas usar o padrão configurado.

Enumeração

bash
# 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>

Privesc

Na página a seguir, você pode verificar como abusar das permissões do codebuild para escalar privilégios:

AWS - Codebuild Privesc

Post Exploitation

AWS - CodeBuild Post Exploitation

Unauthenticated Access

AWS - CodeBuild Unauthenticated Access

References

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks