attacker-controlled-site.com
Status: registered & harmless

You found the
attacker-controlled site_

For years this domain lived inside security tutorials and proof-of-concept exploits — the placeholder address where a stolen token was supposed to land. It was never registered. Now it is.

Which means real requests still arrive: old copy-pasted PoCs, forgotten test configs, and genuinely broken deployments occasionally send their traffic straight here. So the one thing this site does is refuse to be what the tutorials assumed it was.

Definition

What is an "attacker-controlled site"?

It's the shorthand security writing uses for any destination the attacker owns, where a vulnerable app can be tricked into sending data or a victim into landing. The same phrase shows up across very different bug classes:

Open redirect

An app redirects to a user-supplied URL without validating it, so a trusted link quietly delivers the victim to a domain the attacker owns.

redirect_uri = attacker

OAuth / SSO

A permissive redirect_uri lets the authorization code or token be delivered to the attacker’s endpoint instead of the real client.

code → attacker

Host-header injection

Password-reset links are built from the incoming Host header. Poison it, and the reset token emails itself to the attacker’s domain.

reset token → attacker

SSRF

The server is coaxed into making a request to an attacker-chosen address, leaking internal responses or metadata outward.

server → attacker

XSS exfiltration

Injected script beacons cookies or DOM secrets to a collection endpoint — classically written as this exact placeholder domain.

document.cookie → attacker

Reverse-proxy hijack

A misconfigured proxy_pass forwards live login traffic to an upstream the attacker controls.

proxy_pass → attacker
Read this if a machine sent you here

Did your app just make a request to this domain?

If you're seeing traffic to attacker-controlled-site.com in your logs, or landed here from a redirect, something in your stack is treating a tutorial placeholder as a real destination. Worth checking:

  • Search your codebase and configs for the literal stringattacker-controlled-site.com — it's almost always leftover PoC or example code.
  • Audit any redirect_uri / return-URL allowlist for OAuth and login flows.
  • Confirm password-reset links are built from a trusted, configured base URL — never the rawHost header.
  • Check reverse-proxy proxy_pass targets and any outbound-fetch (SSRF-prone) allowlists.

This site keeps none of it, but your logs might have — treat anything that reached here as potentially exposed and rotate accordingly.

Provenance

Reference index

Writeups, advisories and documentation where this domain stood in for the attacker. No blame intended: everyone needs an example domain. The point of this project is that it should not have been a registrable one.

  1. 01thecybersecguru.com — NGINX traffic hijackingused as proxy_pass → /login · source · verified 2026-07-24reverse-proxy
  2. 02blogs.jsmon.sh — Insecure password reset mechanismsused as Host header · source · verified 2026-07-24host-header
  3. 03securityonline.info — Appsmith CVE-2026-22794used as password reset link · source · verified 2026-07-24account-takeover
  4. 04redfoxsec.com — Stealthy data exfiltration techniquesused as /beacon · source · verified 2026-07-24header-exfiltration

Every entry was fetched and checked against the live page on the date shown. This list is certainly incomplete — the domain is easy to write and hard to search for.

The actual lesson

Why example domains matter

There are names reserved for exactly this purpose, and nobody can buy them.

RFC 6761 reserves .example, .test, .invalid and.localhost. IANA reserves example.com, example.net andexample.org. A payload pointed at attacker.example makes exactly the same point as one pointed here — with the difference that attacker.example can never resolve to somebody's server.

Never put a registrable domain in documentation, sample code, test configuration or a security payload. That is the whole rule.

The longer version, with the edge cases people get wrong →

Reading

Writing from this project

On placeholder domains, references that outlive the systems that created them, and what it is like to own the address from the tutorial.