SSRF Detection
SkillSecurityDetect Server-Side Request Forgery where user-controlled URLs can reach internal services, cloud metadata endpoints, or bypass network boundaries.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the SSRF Detection skill
What this skill tells your AI
The instructions your AI receives, as published by byamb4/find-cve-agent in skills/ssrf/SKILL.md and read by ahel’s review.
When to Use
Audit webhook handlers, URL preview generators, import-from-URL features, image proxy endpoints, PDF generators that fetch remote resources, and any endpoint that makes HTTP requests based on user-supplied URLs.
Process
Step 1: Find HTTP Request Sinks
# JavaScript
grep -rn "fetch(\|axios\|got(\|node-fetch\|http\.get\|https\.get\|request(" .
grep -rn "urllib\|url\.parse\|new URL(" .
# Python
grep -rn "requests\.get\|requests\.post\|urllib\.request\|urlopen\|httpx" .
# Go
grep -rn "http\.Get\|http\.Post\|http\.NewRequest\|httpClient" .
# Ruby
grep -rn "Net::HTTP\|open-uri\|Faraday\|HTTParty\|RestClient" .
Step 2: Check If URL is User-Controlled
Trace the URL parameter backwards:
- Does it come from request parameters, body, headers?
- Is it stored in database but originally user-supplied?
- Can the user control the host/port/path/scheme?
Step 3: Check URL Validation
grep -rn "isPrivate\|isInternal\|isLocalhost\|blocked\|allowlist\|blocklist" .
grep -rn "127\.0\.0\.1\|0\.0\.0\.0\|169\.254\|10\.\|172\.16\|192\.168" .
Step 4: Test IP Validation Bypasses
Common bypass techniques:
- Decimal IP:
2130706433= 127.0.0.1 - Hex IP:
0x7f000001= 127.0.0.1 - Octal IP:
0177.0.0.1= 127.0.0.1 - IPv6 mapped:
::ffff:127.0.0.1 - IPv6 localhost:
::1,0:0:0:0:0:0:0:1 - URL encoding:
http://127%2e0%2e0%2e1 - DNS rebinding: domain that resolves to 127.0.0.1 after initial check
- Redirect following: allowed URL redirects to internal URL
0.0.0.0on some systems maps to localhostlocaltest.meresolves to 127.0.0.1
Step 5: Check Protocol Handling
Dangerous protocols beyond http/https:
file:///etc/passwd-- local file readgopher://-- arbitrary TCP data (SSRF amplifier)dict://-- dictionary service probeftp://-- FTP data exfiltration
Step 6: Evaluate Cloud Metadata Access
If the target runs on cloud infrastructure:
- AWS IMDSv1:
http://169.254.169.254/latest/meta-data/iam/security-credentials/ - AWS IMDSv2: requires token header (harder to exploit)
- GCP:
http://metadata.google.internal/computeMetadata/v1/ - Azure:
http://169.254.169.254/metadata/instance - DigitalOcean:
http://169.254.169.254/metadata/v1/
CVSS Guidance
- SSRF to cloud credentials (AWS IMDSv1): CRITICAL 9.1
- SSRF to internal service interaction: HIGH 7.5
- Blind SSRF (no response body): MEDIUM 5.3-6.5
- SSRF with redirect-only: MEDIUM 5.0
- Authenticated SSRF: reduce PR to L
References
- Sinks -- HTTP request sinks by language
- False Positive Indicators
- PoC Skeleton
Signals
- GitHub stars
- 50
- Forks
- 9
- Last commit
- Mar 2026
Advanced
- Catalog kind
- skill
- Gateway key
ssrf-byamb4- Source
- github.com/byamb4/find-cve-agent