This tool specifically targets the
iam.serviceAccounts.signBlob permission to generate an Access Token for a target Service Account without needing its private key.
- Python 100%
| README.md | ||
| requirements.txt | ||
| signedblob-privesc.py | ||
SignedBlob-PrivEsc
This tool specifically targets the iam.serviceAccounts.signBlob permission to generate an Access Token for a target Service Account without needing its private key.
OverView
In GCP, if an identity has the Service Account Token Creator role (or specifically iam.serviceAccounts.signBlob), they can sign arbitrary payloads which can be used to request Access Token for service Accounts. This script works as follows:
- Constructs an unsigned JWT with the target ServiceAccount as the issuer
- Calls the
signBlobmethod of the IAM API, and passes the constructed JWT as the payload - Exchanges the signed JWT for a full OAuth2 Access Token.
Options
usage: signedblob-privesc.py [-h] (-t TOKEN | -f TOKEN_FILE | -k KEY_FILE) -s TARGET
Own Accounts with signBlob
options:
-h, --help show this help message and exit
-t, --token TOKEN Caller's Access Token string
-f, --token-file TOKEN_FILE
Path to file containing Access Token
-k, --key-file KEY_FILE
Path to Service Account JSON key file
-s, --target TARGET Target Service Account Email
Prerequisites
- Python 3.x
- The iamcredentials.googleapis.com API must be enabled in the target project.
- Your caller identity must have iam.serviceAccounts.signBlob permission on the target account.
Installation
git clone https://github.com/5epi0l/signedBlob-PrivEsc.git
cd signedBlob-PriveEsc
pip install -r requirements.txt
Usage
- Using a direct Access Token
python3 signedblob-privesc.py -t $(gcloud auth print-access-token) -s target-sa@project-id.iam.gserviceaccount.com
- Using a Service Account JSON Key
python3 signedblob-privesc.py -k /path/to/key.json -s target-sa@project-id.iam.gserviceaccount.com
- Using a Token File
python3 signedblob-privesc.py -f ./token.txt -s target-sa@project-id.iam.gserviceaccount.com
Disclaimer
This tool is for authorized security auditing and educational purposes only. Unauthorized access to computer systems is illegal.