HTTP Splitting Smuggling
Check List
Methodology
Black Box
Inject conflicting Content-Length and Transfer-Encoding headers to test for desync
POST /path HTTP/1.1
Host: target.com
Content-Length: 50
Transfer-Encoding: chunked
0
GET /admin HTTP/1.1Check if the response indicates the backend processed the smuggled GET /admin request
If the site supports HTTP/2, force a downgrade to HTTP/1.1 with a smuggling payload
POST /path HTTP/2
Host: target.com
Transfer-Encoding: chunked
Transfer-Encoding: chunked
0
GET /admin HTTP/1.1Verify if the backend executes the smuggled GET /admin request
Inject multiple Transfer-Encoding headers to confuse proxy parsing
POST /path HTTP/1.1
Host: target.com
Transfer-Encoding: chunked
Transfer-Encoding: chunked
0
GET /admin HTTP/1.1Check if the smuggled request is processed by the backend
Invalid TE Header Manipulation
Use malformed Transfer-Encoding headers to bypass validation
POST /path HTTP/1.1
Host: vulnerable.com
Transfer-Encoding: cHuNkEd
Content-Length: 60
0
GET /admin HTTP/1.1Verify if the response includes evidence of the smuggled request
Cache Poisoning With HRS
Inject a payload to poison the CDN cache
Check if the cache serves evil.js to subsequent users
SSRF With HRS
Smuggle a payload to access internal services
Verify if the response contains internal metadata (AWS metadata)
WAF Bypass With HRS
Split payloads to evade WAF detection
Check if the smuggled request bypasses the WAF and reaches the backend
Blind HRS
Inject a time-delayed payload to detect blind smuggling
Measure response delays to infer smuggling success
Multi-Hop Proxy Smuggling
Inject payloads across a chain of proxies (CDN → Load Balancer → Backend)
Trace the smuggled request across each hop and check for discrepancies in processing
Modify the query parameter by injecting a CRLF sequence to add a custom header
Check the response headers for the injected Set-Cookie: crlf=injected. If present, the endpoint is vulnerable
Inject a CRLF sequence to manipulate cookies
Verify if the response includes the injected cookie (hacked=true) or affects session behavior
CRLF Injection can be used to inject links that redirect users to phishing sites
Observe if the browser redirects to phishing page
Inject a Location header to redirect to a malicious site
Observe if the browser redirects to https://evil.com
HTTP Response Splitting
By injecting %0d%0a (Carriage Return + Line Feed), an attacker can split the server’s HTTP response into two parts. This enables manipulation of headers and body content in unexpected ways
%0d%0a → Ends the current header line and A new HTTP/1.1 200 OK response starts with a malicious script in the body
Inject a payload to disable XSS protections and execute JavaScript
Verify if the response includes X-XSS-Protection: 0 and the script executes
If standard CRLF payloads are blocked, use GBK-encoded characters
Check if the response includes the injected Set-Cookie: crlfinjection=unk9vvn
Test for CRLF Injection using cURL
Check the response headers for set-cookie: crlf=injected
White Box
Cheat Sheet
Last updated