# AWS - Codebuild Enum {{#include ../../../banners/hacktricks-training.md}} ## 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 ```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 # Check for creds in env vars # Builds aws codebuild list-builds aws codebuild list-builds-for-project --project-name aws codebuild list-build-batches aws codebuild list-build-batches-for-project --project-name # Reports aws codebuild list-reports aws codebuild describe-test-cases --report-arn ``` ### Privesc En la siguiente página, puedes verificar cómo **abusar de los permisos de codebuild para escalar privilegios**: {{#ref}} ../aws-privilege-escalation/aws-codebuild-privesc.md {{#endref}} ### Post Explotación {{#ref}} ../aws-post-exploitation/aws-codebuild-post-exploitation/ {{#endref}} ### Acceso No Autenticado {{#ref}} ../aws-unauthenticated-enum-access/aws-codebuild-unauthenticated-access.md {{#endref}} ## Referencias - [https://docs.aws.amazon.com/managedservices/latest/userguide/code-build.html](https://docs.aws.amazon.com/managedservices/latest/userguide/code-build.html) {{#include ../../../banners/hacktricks-training.md}}