Back to Technical Mode
Server-Side Request Forgery (SSRF)
Any server-side feature that takes a URL from the client — image proxies, webhook validators, PDF-from-URL exporters — can be pointed at internal-only services, turning the trusted server into the attacker's network proxy.
Cloud metadata endpoints (169.254.169.254) hand out IAM credentials to anything that can reach them from inside the VPC — a classic SSRF payload
Blocklisting hostnames is trivially bypassed with redirects, DNS rebinding, or alternate IP encodings (decimal, octal, IPv6-mapped)
An allowlist of destinations (not a blocklist of forbidden ones) is the only reliable control
Disabling HTTP redirect-following in the fetching library closes the most common bypass for an allowlist check
Want this flow explained in detail as it plays?
POST/api/import-avatar
Headers
Host:app.flowground.dev
Content-Type:application/json
Body
Loading...
Stuck? Try a hint
Defense in depth
Revealed once you've worked through the hint ladder above — try the attack yourself first.
Vulnerable vs. Fixed
app.post("/api/import-avatar", async (req, res) => {
const response = await fetch(req.body.imageUrl); // no validation at all
const buffer = await response.arrayBuffer();
res.send(buffer);
});