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/smuggler

Overview

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

TechniqueDescription
CL.TEFront-end uses Content-Length, back-end uses Transfer-Encoding
TE.CLFront-end uses Transfer-Encoding, back-end uses Content-Length
TE.TEBoth use Transfer-Encoding but one can be obfuscated

Manual Testing in Burp

  1. Send request to Repeater
  2. Disable “Update Content-Length” in Repeater options
  3. Craft a request with both Content-Length and Transfer-Encoding headers
  4. 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

TechniqueDescription
CL.TELe front-end utilise Content-Length, le back-end utilise Transfer-Encoding
TE.CLLe front-end utilise Transfer-Encoding, le back-end utilise Content-Length
TE.TELes deux utilisent Transfer-Encoding mais l’un peut être obfusqué

Test manuel dans Burp

  1. Envoyer la requête au Repeater
  2. Désactiver “Update Content-Length” dans les options du Repeater
  3. Créer une requête avec les en-têtes Content-Length et Transfer-Encoding
  4. 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