Strobesstrobes
Platform
Solutions
Resources
Customers
Company
Pricing
Book a Demo
Strobesstrobes

Strobes connects every exposure signal to autonomous action, so security teams fix what matters, prove what works, and stop chasing noise.

Book a DemoTalk to an expert
ISO 27001SOC 2CREST
  • Platform
  • Platform Overview
  • Agentic Exposure Management
  • AI Agents
  • Integrations
  • API & Developers
  • Workflows & Automation
  • Analytics & Reporting
  • Solutions
  • Exposure Assessment (EAP)
  • Attack Surface Management
  • Application Security Posture
  • Risk-Based Vulnerability Management
  • Adversarial Exposure Validation (AEV)
  • AI Pentesting
  • Pentesting as a Service
  • CTEM Framework
  • By Industry
  • Financial Institutions
  • Technology
  • Retail
  • Healthcare
  • Manufacturing
  • By Roles
  • CISOs
  • Security Directors
  • Cloud Security Leaders
  • App Sec Leaders
  • Resources
  • Blog
  • Customer Stories
  • eBooks
  • Datasheets
  • Videos & Demos
  • Exposure Management Academy
  • CTEM Maturity Assessment
  • Pentest Health Check
  • Security Tool ROI Calculator
  • Company
  • About Strobes
  • Meet the Team
  • Trust & Security
  • Contact Us
  • Careers
  • Become a Partner
  • Technology Partner
  • Partner Deal Registration
  • Press Release

Weekly insight for security leaders

CTEM research, agentic AI trends, and what's actually moving the needle.

© 2026 Strobes Security Inc. All rights reserved.

Privacy PolicyTerms of ServiceCookie PolicyAccessibilitySitemap
Back to Blog
SSRF Explained: How to Test for Server-Side Request Forgery
Application SecurityOWASP

SSRF Explained: How to Test for Server-Side Request Forgery

Shubham JhaJanuary 25, 20257 min read

Table of Contents

  • What is SSRF (server-side request forgery)?
  • How do you test for basic SSRF?
  • How do you exploit SSRF against cloud metadata?
  • What is blind SSRF and how do you detect it?
  • How do you bypass SSRF filters?
  • How do you prevent SSRF?
  • Frequently asked questions
  • Sources and references

Authors

S
Shubham Jha

Share

Table of Contents

  • What is SSRF (server-side request forgery)?
  • How do you test for basic SSRF?
  • How do you exploit SSRF against cloud metadata?
  • What is blind SSRF and how do you detect it?
  • How do you bypass SSRF filters?
  • How do you prevent SSRF?
  • Frequently asked questions
  • Sources and references

Authors

S
Shubham Jha

Share

TL;DR
  • ✓SSRF (Server-Side Request Forgery) tricks a server into making HTTP or other-protocol requests to a destination you choose, including internal services it can reach but you cannot.
  • ✓The classic high-impact target is cloud metadata at http://169.254.169.254/, which on misconfigured AWS IMDSv1 hosts can leak IAM credentials.
  • ✓SSRF is its own category, A10:2021, in the OWASP Top 10, and is tested under WSTG-INPV-19. Blind SSRF needs out-of-band detection via Burp Collaborator.
  • ✓Beyond HTTP, gopher:// and dict:// payloads let you talk to Redis, SMTP, and other internal services; DNS rebinding bypasses naive allowlists.
  • ✓Defense is allowlist-based: validate the destination, block link-local and private ranges, disable unused URL schemes, and enforce IMDSv2.

Server-Side Request Forgery (SSRF) is a vulnerability where an attacker coerces a server into making requests to a destination the attacker controls or chooses, and it earned its own slot, A10:2021, in the OWASP Top 10 after a string of breaches. The 2019 Capital One incident, which exposed data on roughly 100 million people, started with SSRF against AWS instance metadata.

This post explains how SSRF works, the difference between basic and blind variants, the payloads that matter (cloud metadata, gopher, dict, DNS rebinding), the tooling to confirm it, and the controls that actually stop it. Every technique here maps to WSTG-INPV-19, the OWASP test for SSRF.

What is SSRF (server-side request forgery)?

SSRF is a flaw where a web application fetches a remote resource using a URL you supply, without properly validating where that URL points. Because the request originates from the server, it inherits the server's network position, so you can reach internal services, cloud metadata endpoints, and admin panels that are firewalled off from the public internet.

Any feature that takes a URL is a candidate: webhook configuration, PDF or image generators that render a page, link previews, document import-from-URL, and proxy or fetch endpoints. The application thinks it is fetching something benign; you point it at http://169.254.169.254/ or http://127.0.0.1:6379/ instead.

How do you test for basic SSRF?

Find every parameter that causes the server to make an outbound request, then swap the value for a destination you control and watch whether the server connects. Start by setting the URL to a Burp Collaborator host or your own listener and confirming the inbound hit.

Once you have a confirmed fetch, pivot to internal targets. Common first moves are localhost and the cloud metadata service:

# Reach back to your own listener to confirm the fetch
url=http://YOUR-COLLABORATOR.oastify.com/

# Probe localhost services and the cloud metadata endpoint
url=http://127.0.0.1:80/
url=http://localhost:8080/admin
url=http://169.254.169.254/latest/meta-data/

If responses differ by internal port (open vs closed, different status, different timing), you have a working SSRF you can use to map the internal network. This is core WSTG-INPV-19 territory and a staple of any thorough web application pentesting checklist.

How do you exploit SSRF against cloud metadata?

On cloud hosts, the link-local address 169.254.169.254 serves an instance metadata service that can hand out temporary IAM credentials, which turns a read-only SSRF into a path to the cloud account. On AWS with the legacy IMDSv1, a single GET can return role credentials.

# AWS IMDSv1 credential theft via SSRF
GET http://169.254.169.254/latest/meta-data/iam/security-credentials/
# returns the role name, e.g. s3-access-role
GET http://169.254.169.254/latest/meta-data/iam/security-credentials/s3-access-role
# returns AccessKeyId, SecretAccessKey, Token

GCP and Azure expose equivalent endpoints (GCP requires the Metadata-Flavor: Google header, which raises the bar slightly). IMDSv2 requires a PUT to obtain a session token first, which most SSRF primitives cannot do, so enforcing IMDSv2 is one of the strongest single mitigations. The same primitive is a key check in any cloud penetration test.

Strobes insight
Enforcing IMDSv2 on every cloud instance neutralizes the most damaging SSRF outcome, credential theft, because the metadata endpoint then needs a PUT token most SSRF primitives can't issue.

What is blind SSRF and how do you detect it?

Blind SSRF is when the server makes the request but the response is never reflected back to you, so you confirm it out-of-band instead of by reading the body. You point the vulnerable parameter at a server you control and watch for the inbound DNS lookup or HTTP request.

Burp Collaborator is the standard tool: it gives you a unique hostname and reports any DNS or HTTP interaction. A DNS-only hit (no HTTP) still proves the server resolved your name, which is enough to confirm blind SSRF even when egress filtering blocks the actual connection. From there you escalate by probing internal hosts and inferring results from response timing or error differences.

Basic SSRF vs Blind SSRF
AspectBasic SSRFBlind SSRF
Response visibleYes, body returned to youNo, never reflected
ConfirmationRead the fetched contentOut-of-band (Burp Collaborator DNS/HTTP)
Internal mappingDirect (read each port)Inferred from timing and errors
Typical impactRead metadata, files, internal pagesPivot, port scan, trigger actions
Detection difficultyLowerHigher, needs OOB infrastructure

How do you bypass SSRF filters?

Naive SSRF defenses block the string "127.0.0.1" or "169.254.169.254", which is trivial to evade because there are many ways to write the same address and many protocols to reach the same service. Treat any blocklist as bypassable.

  • Alternate IP encodings: http://2130706433/ (decimal), http://0x7f000001/ (hex), http://127.1/, or http://[::1]/ for IPv6 localhost.
  • Other schemes: gopher://127.0.0.1:6379/_ to send raw bytes to Redis, or dict://127.0.0.1:11211/ to talk to memcached.
  • DNS rebinding: a hostname that resolves to a public IP on first lookup (passing the check) then to 169.254.169.254 on the request itself.
  • Redirects: point at a host you control that returns a 302 to the internal target.

How do you prevent SSRF?

Stop SSRF with positive validation and network controls, not blocklists. Validate that the user-supplied destination resolves to an explicit allowlist of hosts and resolves after any redirects, and reject anything in link-local (169.254.0.0/16), loopback, or private RFC 1918 ranges.

Then add defense in depth: disable URL schemes you do not need (drop gopher, dict, file), require IMDSv2 on every cloud instance so a bare GET cannot mint credentials, and put outbound egress filtering on the application's network so even a successful SSRF has nowhere to go. SSRF maps to A10:2021, so it should be a fixed line item in your penetration testing test cases.

Frequently asked questions

What is the difference between SSRF and CSRF?
SSRF makes the server send requests to destinations of the attacker's choosing, exploiting the server's network trust. CSRF makes a victim's browser send authenticated requests to an application the user is logged into. SSRF abuses the server; CSRF abuses the client's session.
Is SSRF in the OWASP Top 10?
Yes. SSRF is its own category, A10:2021, in the OWASP Top 10. It was promoted to a standalone entry in the 2021 list based on community survey data and its high real-world impact, and it maps to WSTG-INPV-19 in the testing guide.
Why is the IP 169.254.169.254 important in SSRF?
That link-local address is the cloud instance metadata service on AWS, GCP, and Azure. A successful SSRF to it can return temporary IAM credentials and instance configuration, which is how SSRF often escalates into full cloud-account compromise.
What is a gopher SSRF payload?
A gopher:// payload lets an SSRF send arbitrary raw bytes to a TCP service rather than just HTTP. Testers use gopher to craft requests to Redis, memcached, or SMTP on internal hosts, turning a read-only SSRF into one that can write data or trigger actions.
How do you confirm blind SSRF?
Use an out-of-band tool like Burp Collaborator. Point the vulnerable parameter at a unique hostname it gives you and watch for an inbound DNS or HTTP interaction. Even a DNS-only hit proves the server processed your URL when no response is reflected back.
What is DNS rebinding in the context of SSRF?
DNS rebinding bypasses allowlists that validate a hostname before the request. The attacker controls a domain that resolves to an allowed public IP during validation, then re-resolves to an internal address like 169.254.169.254 when the server actually connects, defeating time-of-check validation.

Sources and references

  • OWASP WSTG: Testing for SSRF (WSTG-INPV-19)
  • OWASP A10:2021 Server-Side Request Forgery
  • PortSwigger Web Security Academy: SSRF
S
Shubham Jha
Security Researcher, Strobes
Shubham Jha leads offensive security research at Strobes, focused on web and API exploitation and red team tradecraft.
Tags
Web SecuritySSRFOWASP

Stop chasing vulnerabilities Start reducing exposure

See how Strobes AI agents validate and fix your most critical exposures automatically.

Book a Demo
Continue Reading

Related Posts

How to Catch Blind Bugs Scanners Miss
Penetration TestingOffensive Security

How to Catch the Blind Bugs Scanners Miss

Out-of-band validation detects blind SSRF, blind SQLi, and out-of-band XXE that return no in-band response. Learn how it works and why it matters.

May 29, 202613 min
5 Vulnerabilities in Every Vibe-Coded App
Application SecurityLLM Security

5 Vulnerabilities in Every Vibe-Coded App

The 5 security flaws AI coding assistants ship by default: missing authz, leaked secrets, weak JWTs, IDOR, eval RCE — with detection queries and fixes for each.

May 29, 202613 min
Threat Modeling Explained: STRIDE and Methodology
Application SecurityVulnerability Management

Threat Modeling Explained: STRIDE and Methodology

Threat modeling finds design flaws before code exists. Learn STRIDE, data flow diagrams, trust boundaries, and how STRIDE compares to DREAD, PASTA, and attack trees.

Mar 21, 20269 min