Skills DirectorySearch all skills ↗

AI agent skill · by @s0ld13rr

Playbook Cloud

Cloud IAM privesc paths and metadata endpoints per provider. Load when the target is cloud or you obtain cloud creds/metadata. Triggers - AWS/GCP/Azure, IAM, S3/blob, 169.254.169.254, access key.

Archived 2026-10-23 · Source updated 2026-10-02 · License: MIT. Check the original repository for the latest version.

SKILL.md instructions

# Cloud — Privesc Paths & Metadata

## Metadata endpoints (different per cloud!)
**AWS IMDSv1** (no header): `curl http://169.254.169.254/latest/meta-data/iam/security-credentials/`
**AWS IMDSv2** (requires token):
```
TOKEN=$(curl -X PUT -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" http://169.254.169.254/latest/api/token)
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/
```
**GCP** (requires header): `curl -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token`
**Azure** (requires header): `curl -H "Metadata: true" "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"`

IMDSv1 vs v2 matters: v1 = any SSRF gives cloud creds. v2 requires PUT first (harder via SSRF).

## AWS IAM privesc — dangerous permission combos
- `iam:CreatePolicyVersion` → attach admin policy to self
- `iam:AttachUserPolicy` → attach AdministratorAccess
- `lambda:CreateFunction` + `iam:PassRole` → execute as privileged role
- `sts:AssumeRole` → pivot to cross-account roles
- `ec2:RunInstances` + `iam:PassRole` → launch instance with admin role
Tools: `pacu` (automated), `pmapper` (permission graph)

## GCP privesc
- Default compute SA often has `editor` (overprivileged)
- `iam.serviceAccountKeys.create` → generate key for any SA
- `cloudfunctions.functions.create` + `iam.serviceAccounts.actAs` → RCE as SA
- Check for `allUsers`/`allAuthenticatedUsers` bindings (public access)

## Azure privesc
- Managed Identity with broad role assignments
- `Contributor` → deploy resources, potentially read Key Vault
- App Registration with high API permissions + admin consent
- Automation account runbooks → execute as automation identity

## What to check everywhere
- Public storage (S3/GCS/Blob) — `--no-sign-request` / anonymous
- Secrets in repos / CI variables / build logs
- User-data scripts (bootstrap credentials)
- MFA not enforced on admin accounts
- Audit logging disabled or misconfigured

Related skills