Lion Cipher Lab

HTTP request smuggling — desync a front-end and back-end, then fix it

Why it matters

HTTP request smuggling is one of the highest-impact web bugs there is, and one of the least understood. When it works, an attacker's bytes get glued onto the front of the NEXT person's request — so they can hijack other users' sessions, poison caches, bypass front-end security controls, and reach internal endpoints, all without ever touching the victim's browser. It exists for a boring, fixable reason: two servers in front of each other quietly disagree about where one request ends. Most courses teach it as a magic trick to perform. The skill worth having is the opposite — understanding the…

What you'll learn

Steps in this lab

  1. The one-sentence bug: two servers disagree about where a request ends
  2. The two headers that cause the disagreement: Content-Length vs Transfer-Encoding
  3. CL.TE and TE.CL, on paper (read this twice)
  4. Set up your tools: a free PortSwigger account and Burp Community
  5. Open the CL.TE lab and capture a request in Repeater
  6. Craft the CL.TE request — and turn OFF automatic Content-Length
  7. Fire it twice and read what success looks like
  8. See the mirror image: the TE.CL variant
  9. The fix, part 1: make the two servers agree — or reject the request
  10. The fix, part 2 (the durable one): HTTP/2 end-to-end — and when it's not enough
  11. What you actually learned — and why it outlasts the trick

Open the full interactive lab →