Intro to SSRF (Server-Side Request Forgery)

Date: 09-02-2026- Platform: TryHackMe- Difficulty: Easy- PT1 Exam Preparation

Overview

SSRF (Server-Side Request Forgery) is a vulnerability where an attacker can make the server perform HTTP requests to targets the attacker chooses. That can mean hitting internal services, cloud metadata endpoints, or exfiltrating data — and blind SSRF still matters because you can detect it out-of-band.

Two types: Regular SSRF (response is reflected) vs Blind SSRF (no response; confirm via external logger).

1) What SSRF is

Definition: forcing the web server to make an additional or modified request to a resource of the attacker’s choosing.

2) Impact (why it’s nasty)

High-signal target: cloud metadata at 169.254.169.254 (often blocked; bypasses exist).

3) Where to look (common SSRF entry points)

SSRF usually shows up anywhere the app “fetches” something for you:

Blind SSRF: use an external HTTP logger (requestbin / your own server / Burp Collaborator) to see inbound hits.

4) Defeating common SSRF defenses

Deny list (blocklist)

Deny lists block “bad” hosts like localhost, 127.0.0.1, or metadata IPs. Bypasses often use alternate representations.

Allow list

Allow lists only allow URLs that match a pattern like https://website.thm. A classic bypass is a subdomain trick:

https://website.thm.attacker-domain.thm

Open redirect chaining

If the app only allows URLs starting with the target domain, an open redirect endpoint on that domain can bounce the server-side request to your real target.

Example concept: /link?url=https://tryhackme.com used to redirect the internal request.

5) Practical pattern (TryHackMe lab)

TryHackMe’s scenario uses an avatar selection feature where the server fetches a resource based on a form value.

# bypass example from the room
avatar = x/../private

Because ../ normalizes paths, x/../private becomes /private server-side and can bypass naive “starts with /private” checks.

Flag flow: the response gets embedded as a data: URI and base64 encoded — decode it to recover the flag.

Exam Notes (PT1) — SSRF checklist