offensive-tools/web/smuggler/SKILL.md
Auth/lab ref: HTTP/1.1 request smuggling and desync detection tool testing CL.TE, TE.CL, and TE.TE variants.
npx skillsauth add aeondave/malskill smugglerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
HTTP request smuggling / desync detection — CL.TE, TE.CL, TE.TE variants.
git clone https://github.com/defparam/smuggler
cd smuggler && pip3 install -r requirements.txt
# Single target
python3 smuggler.py -u https://target.com/endpoint
# Pipe a list of URLs
cat urls.txt | python3 smuggler.py
# Quiet mode (only show findings)
python3 smuggler.py -u https://target.com -q
# Exit on first finding per host
python3 smuggler.py -u https://target.com -x
| Flag | Purpose |
|------|---------|
| -u, --url <url> | Target URL with endpoint |
| -v, --vhost <host> | Override Host header (virtual host) |
| -x, --exit_early | Exit on first finding (useful in bulk mode) |
| -m, --method <verb> | HTTP method (default: POST) |
| -l, --log <file> | Write output to file + stdout |
| -q, --quiet | Suppress non-finding output |
| -t, --timeout <s> | Socket timeout (default: 5) |
| --no-color | Suppress color codes (for piping/logs) |
| -c, --configfile <file> | Custom payload config file |
| Type | Frontend | Backend | Description | |------|----------|---------|-------------| | CL.TE | Content-Length | Transfer-Encoding | Frontend routes by CL; backend parses chunked TE | | TE.CL | Transfer-Encoding | Content-Length | Frontend routes chunked; backend expects CL | | TE.TE | Transfer-Encoding | Transfer-Encoding | Both parse TE but one can be obfuscated |
smuggler sends mutations of CL/TE headers to detect desync behavior via:
Each mutation is sent with precise socket-level control (no HTTP libraries that auto-normalize headers).
# Using subfinder + httpx to build target list, then smuggle-test
subfinder -d target.com | httpx -silent | python3 smuggler.py -q -x
# From existing URL list
cat endpoints.txt | python3 smuggler.py -l smuggler-results.txt -q
After smuggler reports a potential issue, confirm manually in Burp Repeater:
# CL.TE probe — send with Connection: keep-alive
POST / HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 6
Transfer-Encoding: chunked
0
X
If response is delayed or error changes between requests → real desync.
# 1. Bypass front-end access controls
# Smuggle a request to a restricted path hidden in the body
# 2. Capture other users' requests
# Poison backend socket to prepend attacker-controlled prefix to next user's request
# 3. Cache poisoning
# Smuggle a request that causes malicious response to be cached for next user
# 4. Web cache deception
# Smuggle static-looking path to cache authenticated response
smuggler can produce false positives on large CDN/proxy providers (Google, AWS, Akamai). Always manually verify before reporting or exploiting. Use -q -x in bulk scans to minimize noise.
development
Auth/lab ref: Unicorn Engine CPU-only emulation for shellcode, decryptors, custom VM handlers, instruction tracing, memory hooks, and register-level experiments.
development
Auth/lab ref: Renode board and SoC simulation for MCU/RTOS firmware, UART/GPIO/peripheral modeling, GDB remote debugging, REPL platforms, and RESC scripts.
development
Auth/lab ref: Qiling OS-layer binary emulation for PE/ELF/Mach-O/UEFI/shellcode with rootfs, syscall/API hooks, filesystem mapping, and runtime patching.
databases
Auth/lab ref: QEMU user-mode and full-system emulation for cross-arch binaries, firmware, kernels, disks, serial consoles, networking, and GDB stubs.