Lion Cipher Lab

HTTP/2 request smuggling — H2.CL, H2.TE, CRLF injection & h2c, then defend it

Why it matters

Everyone 'fixed' request smuggling by moving to HTTP/2 — and then quietly re-introduced it by downgrading HTTP/2 to HTTP/1.1 at the front-end. James Kettle's research showed this pattern is everywhere, affecting major sites and CDNs, because a downgrading front-end recreates the exact length ambiguity HTTP/2 was supposed to remove, and adds two failure modes HTTP/1 never had: header values that can smuggle newlines (CRLF injection) and cleartext-HTTP/2 (h2c) upgrades that tunnel straight past front-end security controls. The impact is the same brutal top-tier list — hijacking other users'…

What you'll learn

Steps in this lab

  1. Where Part 1 left off — and the plot twist
  2. What 'HTTP/2 downgrade' means, and why it re-opens the bug
  3. Read an HTTP/2 request: pseudo-headers vs regular headers
  4. Set up: PortSwigger account + Burp Community with HTTP/2 (and where Pro helps)
  5. Exploit #1 — H2.CL: smuggle a prefix the downgrade trusts
  6. Exploit #2 — H2.TE: the Transfer-Encoding survives the downgrade
  7. Exploit #3 — CRLF injection into an HTTP/2 header value
  8. The other door: h2c smuggling (upgrade to cleartext HTTP/2)
  9. The fix, part 1: real HTTP/2 end-to-end — no downgrade
  10. The fix, part 2 (opinion): why 'HTTP/2 everywhere' beats every WAF rule
  11. What you actually learned — and why it outlasts the trick

Open the full interactive lab →