Skip to content
Security
Command

/crlf

Test for CRLF / HTTP response-splitting and host-header injection — Set-Cookie injection, cache poisoning, reset-poisoning. Usage: /crlf <url> [--host-header] | /crlf -l urls.txt

From plugin
claude-bug-bounty
4.2k33 skills9 agents33 commands
Install
$ npx -y skills add shuvonsec/claude-bug-bounty --agent claude-code

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/crlf

Context preview

What this command does when you run it.

Test for CRLF / HTTP response-splitting and host-header injection — Set-Cookie injection, cache poisoning, reset-poisoning. Usage: /crlf <url> [--host-header] | /crlf -l urls.txt

Command definition

crlf.md
description: Test for CRLF / HTTP response-splitting and host-header injection — Set-Cookie injection, cache poisoning, reset-poisoning. Usage: /crlf <url> [--host-header] | /crlf -l urls.txt

/crlf

Inject carriage-return/line-feed sequences into the path/query (and optionally the Host/forwarding headers) and check whether an attacker-controlled header lands in the **response** — proof of CRLF injection.

Usage

/crlf "https://target.com/redirect?url=x"
/crlf https://target.com/ --host-header
/crlf -l recon/target.com/urls/params.txt --json

Run directly:

tools/crlf_scanner.py "https://target.com/r?u=x" --host-header

What it injects

| Vector | Payloads | |---|---| | Encoded CRLF | `%0d%0a`, `%0a`, `%0d`, `%250d%250a` (double-encoded) | | Header fold | `%0d%0a%20Set-Cookie:...` | | UTF-8 bypass | `%E5%98%8A%E5%98%8D` (overlong CR/LF that defeats naive `\r\n` filters) | | IIS unicode | `%u000d%u000a` | | Host-header | `Host: evil`, `X-Forwarded-Host`, `Forwarded: host=`, CRLF-in-Host |

Detection canary: the payloads try to inject `Set-Cookie: crlftest=1`. If that header appears in the response, it's confirmed.

Impact

  • **Set-Cookie injection** → session fixation.
  • **Injected `Location`** → open redirect / OAuth token theft.
  • **Injected body** → reflected XSS that survives CSP host allowlists.
  • **Host-header injection** → password-reset poisoning (attacker host in reset link), cache poisoning.

Note

Python's `urllib` refuses raw `\r\n` in a URL (it protects you), so the **encoded** variants are what actually go on the wire — that's intended. The host-header path also flags when your attacker host is reflected in a `Location` response header (reset-poisoning signal) even without a full CRLF.

Read more
Ships withclaude-bug-bounty

AI-powered bug bounty hunting from your terminal - recon, 20 vuln classes, autonomous hunting, and report generation. All inside Claude Code.

Get the whole plugin

Other commands on claude-bug-bounty.