root@thehacksparrow:~/writeups$ SYSTEM ONLINE
root@sparrow:~/writeups$ cat vulnerability-pattern-ssrf.md
// bug-bounty

SSRF

23 Jul 2026 · 2 min read

What it is

You get the target's own server to make a request to a URL you control —

POST /api/fetch-image {"url": "https://attacker.com"}
and the server actually visits that URL.

Why it matters

It turns the server into your proxy for reaching things you shouldn't be able to reach directly — internal services, cloud metadata endpoints, anything sitting behind the same firewall as the app.

Where to look

  • Import-image-by-URL, webhooks, link previews, PDF/screenshot generators
  • Import-from-URL features, format converters, avatar-by-URL, third-party integrations

How I test it

  1. Find a feature that accepts a URL.
  2. Point it at Burp Collaborator or a server you control.
  3. Confirm a request actually arrives, and check whether it came from the server or from the victim's own browser (that distinction matters — see the client-side variant below).
  4. Test whether it follows redirects, and whether internal ranges are blocked:
    http://127.0.0.1
    ,
    http://169.254.169.254
    (cloud metadata),
    file:///etc/passwd
    .

Hunting checklist

  • Found a URL-accepting feature
  • Confirmed a real out-of-band request using Collaborator or a controlled server
  • Confirmed it's the server making the request, not the client
  • Tested redirect-following
  • Tested internal IP ranges and the metadata endpoint — carefully, and only where the program's rules allow touching cloud metadata

Evidence to collect

  • The request that accepts a URL
  • Proof of an out-of-band callback (Collaborator log or your own server log)
  • Response showing internal content, if reachable
  • Confirmation the request originates server-side

Recommended fix

  • Allowlist destinations instead of blocklisting
  • Block requests to internal/private IP ranges and the cloud metadata address at the network layer
  • Disable redirect-following on server-side fetches, or re-validate after each redirect
  • Restrict URL schemes to http/https