TE.TE vulnerabilities occur when:
Both front-end and back-end support Transfer-Encoding: chunked
But one system can be tricked into ignoring the TE header through obfuscation
The tricked system falls back to using Content-Length
This effectively creates a CL.TE or TE.CL scenario depending on which system is tricked.
The Core Concept
Both systems support chunked encoding, but their implementations differ:
Some check for exact match: Transfer-Encoding: chunked
Some check for substring: looks for chunked anywhere in value
Some are strict about whitespace and formatting
Some are lenient and accept malformed headers
By exploiting these differences, we can make one system ignore the TE header.
TE Header Obfuscation Techniques
Technique
Header
Description
Transfer-Encoding: testchunked
Value contains "chunked" but isn't exact
Transfer-Encoding : chunked
Transfer-Encoding:[\x09]chunked
Tab (0x09) instead of space
Transfer-Encoding:[\x0b]chunked
Vertical tab (0x0b) separator
Transfer-Encoding: chunked
Transfer-Encoding: chunked\r\n\r\n
Transfer-encoding: chunked
Two Transfer-Encoding headers
Note: [\x09] = horizontal tab (ASCII 0x09), [\x0b] = vertical tab (ASCII 0x0b)
Step 1: Prepare Test Request
Step 2: Apply Obfuscation
Try each obfuscation technique. Example with Horizontal Tab:
Open request in Burp Repeater
Find the space (0x20) between Transfer-Encoding: and chunked
Change 0x20 to 0x09 (horizontal tab)
Step 3: Send Twice Rapidly
Send the obfuscated request
Immediately send it again
If second response returns HTTP 405 Method Not Allowed:
β
One system ignored TE header
β
Vulnerable to TE.TE (effectively CL.TE)
Testing All Obfuscation Methods
Systematic Approach
Try each method until one works:
Burp Suite Hex Editing
In Repeater, click Hex tab at bottom
Double-click and enter new hex value
Switch back to Raw to verify
Same as CL.TE - force admin to perform action.
Exploit Request (Horizontal Tab Method)
Note: The tab character between : and chunked must be inserted via hex editor.
Exploit Request (Vertical Tab Method)
Note: Vertical tab (0x0b) between : and chunked.
Time-Sensitive Exploitation
TE.TE exploits are often time-sensitive because:
Request must hit right after smuggled prefix
Determine admin timing (e.g., admin visits every 10 seconds)
Send requests periodically (about once per second)
Continue until success (smuggled request catches admin's request)
Practical Steps
Burp Intruder for Timing
Configure to generate X requests
Set throttle to 1000ms between requests
Complete Attack Flow
Differences from CL.TE
Harder (need to find working obfuscation)
Finding the Right Obfuscation
Start with common methods (tab, space, substring)
Different setups need different obfuscations
Document what works for the target
Hex Values Reference
Common Server Behaviors
Persistence is Key
Multiple attempts often needed
Keep trying different obfuscations
Log successful techniques
Lab Walkthrough Summary
Identify admin action endpoint (e.g., /admin?reveal_flag=1)
Test for TE.TE using obfuscation + double-send technique
Find working obfuscation (e.g., vertical tab separator)
Craft exploit with smuggled admin request
Send periodically (every ~1 second for 10+ seconds)
Verify action was performed (check admin page)