AWS - Codebuild Enum

Tip

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

Apoya a HackTricks

CodeBuild

AWS CodeBuild es reconocido como un servicio de integración continua completamente 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 implementación. El beneficio predominante que ofrece CodeBuild radica en su capacidad para aliviar la necesidad de que los usuarios provisionen, gestionen y escalen sus servidores de construcción. Esta conveniencia se debe a que el servicio mismo gestiona estas tareas. Las características esenciales de AWS CodeBuild incluyen:

  1. Servicio Gestionado: CodeBuild gestiona y escala los servidores de construcción, liberando a los usuarios del mantenimiento del servidor.
  2. Integración Continua: Se integra con el flujo de trabajo de desarrollo e implementación, automatizando las fases de construcción y prueba del proceso de lanzamiento de software.
  3. Producción de Paquetes: Después de las fases de construcción y prueba, prepara los paquetes de software, dejándolos listos para la implementación.

AWS CodeBuild se integra sin problemas con otros servicios de AWS, mejorando la eficiencia y confiabilidad del pipeline de CI/CD (Integración Continua/Implementación Continua).

Credenciales de Github/Gitlab/Bitbucket

Credenciales de fuente predeterminadas

Esta es la opción heredada donde es posible configurar algún acceso (como un token de Github o una aplicación) 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 hay ninguna forma pública de recuperarlas de las APIs de AWS.

Credencial de fuente personalizada

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

Esto permite que diferentes proyectos de codebuild utilicen diferentes accesos configurados a los proveedores en lugar de solo usar el 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>

Privesc

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

AWS - Codebuild Privesc

Post Explotación

AWS - CodeBuild Post Exploitation

Acceso No Autenticado

AWS - CodeBuild Unauthenticated Access

Referencias

Tip

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

Apoya a HackTricks