Smuggler
Outil de détection et d'exploitation du HTTP request smuggling. Sonde les vulnérabilités de désynchronisation CL.TE, TE.CL et TE.TE. HTTP request smuggling detection and exploitation tool. Probes for CL.TE, TE.CL, and TE.TE desync vulnerabilities.
↗ https://github.com/defparam/smugglerOverview
Smuggler automates the detection of HTTP request smuggling vulnerabilities by probing front-end/back-end server pairs for desync issues across multiple techniques.
Common Usage
Basic scan
python3 smuggler.py -u https://target.com
# Scan with a specific technique
python3 smuggler.py -u https://target.com -t CL.TE
python3 smuggler.py -u https://target.com -t TE.CL
python3 smuggler.py -u https://target.com -t TE.TE
Scan from a list of URLs
cat urls.txt | python3 smuggler.py
Verbose output
python3 smuggler.py -u https://target.com -v
Custom timeout
python3 smuggler.py -u https://target.com --timeout 15
Smuggling Techniques
| Technique | Description |
|---|---|
| CL.TE | Front-end uses Content-Length, back-end uses Transfer-Encoding |
| TE.CL | Front-end uses Transfer-Encoding, back-end uses Content-Length |
| TE.TE | Both use Transfer-Encoding but one can be obfuscated |
Manual Testing in Burp
- Send request to Repeater
- Disable “Update Content-Length” in Repeater options
- Craft a request with both
Content-LengthandTransfer-Encodingheaders - Observe timing differences and unexpected responses
See PortSwigger Web Academy for detailed smuggling labs.
Help / Man page
smuggler.py [options]
OPTIONS:
-u URL Target URL
-t TECHNIQUE Specific technique: CL.TE, TE.CL, TE.TE
(default: all techniques)
-v Verbose output
--timeout N Socket timeout in seconds (default: 5)
--exit-early Stop after first finding
STDIN:
cat urls.txt | python3 smuggler.py Scan multiple URLs
TECHNIQUES:
CL.TE Content-Length / Transfer-Encoding desync
TE.CL Transfer-Encoding / Content-Length desync
TE.TE Transfer-Encoding obfuscation bypass
OUTPUT:
[+] Possible vuln Potential desync detected
[!] Confirmed Confirmed vulnerable endpoint
Vue d’ensemble
Smuggler automatise la détection des vulnérabilités de HTTP request smuggling en sondant les paires de serveurs front-end/back-end pour des problèmes de désynchronisation avec plusieurs techniques.
Utilisation courante
# Scan de base
python3 smuggler.py -u https://target.com
# Scanner avec une technique spécifique
python3 smuggler.py -u https://target.com -t CL.TE
python3 smuggler.py -u https://target.com -t TE.CL
python3 smuggler.py -u https://target.com -t TE.TE
# Scanner depuis une liste d'URLs
cat urls.txt | python3 smuggler.py
# Sortie verbeuse
python3 smuggler.py -u https://target.com -v
# Timeout personnalisé
python3 smuggler.py -u https://target.com --timeout 15
Techniques de smuggling
| Technique | Description |
|---|---|
| CL.TE | Le front-end utilise Content-Length, le back-end utilise Transfer-Encoding |
| TE.CL | Le front-end utilise Transfer-Encoding, le back-end utilise Content-Length |
| TE.TE | Les deux utilisent Transfer-Encoding mais l’un peut être obfusqué |
Test manuel dans Burp
- Envoyer la requête au Repeater
- Désactiver “Update Content-Length” dans les options du Repeater
- Créer une requête avec les en-têtes
Content-LengthetTransfer-Encoding - Observer les différences de timing et les réponses inattendues
Voir PortSwigger Web Academy pour les labs détaillés sur le smuggling.
Aide / Page de manuel
smuggler.py [options]
OPTIONS:
-u URL Target URL
-t TECHNIQUE Specific technique: CL.TE, TE.CL, TE.TE
(default: all techniques)
-v Verbose output
--timeout N Socket timeout in seconds (default: 5)
--exit-early Stop after first finding
STDIN:
cat urls.txt | python3 smuggler.py Scan multiple URLs
TECHNIQUES:
CL.TE Content-Length / Transfer-Encoding desync
TE.CL Transfer-Encoding / Content-Length desync
TE.TE Transfer-Encoding obfuscation bypass
OUTPUT:
[+] Possible vuln Potential desync detected
[!] Confirmed Confirmed vulnerable endpoint