AWS - CodeBuild Enumeración

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

CodeBuild

AWS CodeBuild es reconocido como un servicio de integración continua totalmente gestionado. El propósito principal de este servicio es automatizar la secuencia de compilación del código fuente, ejecución de pruebas y empaquetado del software para fines de despliegue. El beneficio principal que ofrece CodeBuild radica en su capacidad para eliminar la necesidad de que los usuarios provisionen, administren y escalen sus servidores de compilación. Esta comodidad se debe a que el servicio gestiona estas tareas por sí mismo. Las características esenciales de AWS CodeBuild incluyen:

  1. Servicio gestionado: CodeBuild administra y escala los servidores de compilación, liberando a los usuarios del mantenimiento de estos.
  2. Integración continua: Se integra con el flujo de trabajo de desarrollo y despliegue, automatizando las fases de compilación y pruebas del proceso de lanzamiento de software.
  3. Producción de paquetes: Tras las fases de compilación y pruebas, prepara los paquetes de software dejándolos listos para el despliegue.

AWS CodeBuild se integra de forma nativa con otros servicios de AWS, mejorando la eficiencia y fiabilidad de la canalización CI/CD (Integración continua/Despliegue continuo).

Github/Gitlab/Bitbucket Credenciales

Credenciales de origen predeterminadas

Esta es la opción heredada donde es posible configurar algún acceso (como un token de Github o una app) que será compartido entre proyectos de codebuild para que todos los proyectos puedan usar este conjunto de credenciales configuradas.

Las credenciales almacenadas (tokens, contraseñas…) son gestionadas por codebuild y no existe ninguna forma pública de recuperarlas desde las APIs de AWS.

Credencial de origen personalizada

Dependiendo de la plataforma del repositorio (Github, Gitlab y Bitbucket) se ofrecen diferentes opciones. Pero en general, cualquier opción que requiera almacenar un token o una contraseña la almacenará como un secret en el secrets manager.

Esto permite que diferentes proyectos de codebuild utilicen distintos accesos configurados a los proveedores en lugar de usar solo el acceso predeterminado configurado.

Enumeración

# 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

Si tienes codebuild:StartBuild, recuerda que a menudo puedes sobrescribir env vars en tiempo de build (--environment-variables-override). Esto es suficiente para algunos ataques incluso sin UpdateProject o buildspec overrides (por ejemplo: redirecting artifact/upload buckets to exfiltrate secrets, or abusing language/runtime env vars to execute commands).

Privesc

En la siguiente página, puedes ver cómo abusar de los permisos de codebuild para escalar privilegios:

AWS - Codebuild Privesc

Post Exploitation

AWS - CodeBuild Post Exploitation

Unauthenticated Access

AWS - CodeBuild Unauthenticated Access

Referencias

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks