Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
smuggler — Outil de test de désynchronisation et de contrebande de requêtes HTTP basé sur Python qui détecte les vulnérabilités CL.TE et TE.CL en utilisant des charges utiles de mutation configurables et un balayage automatisé. | Kitploit
Outils/GitHubGitHub/defparam/smuggler
Scanners de VulnérabilitésExploitation d'Applications WebSécurité WebTests d'Intrusion
GitHubdefparam/smuggler

smuggler

Outil de test de désynchronisation et de contrebande de requêtes HTTP basé sur Python qui détecte les vulnérabilités CL.TE et TE.CL en utilisant des charges utiles de mutation configurables et un balayage automatisé.

Voir le dépôt
2.1k3269il y a 5 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
root@kitploit:~
  ______                         _              
 / _____)                       | |             
( (____  ____  _   _  ____  ____| | _____  ____ 
 \____ \|    \| | | |/ _  |/ _  | || ___ |/ ___)
 _____) ) | | | |_| ( (_| ( (_| | || ____| |    
(______/|_|_|_|____/ \___ |\___ |\_)_____)_|    
                    (_____(_____|               

     @defparam

Smuggler

Un outil de test de contrebande de requêtes HTTP / désynchronisation écrit en Python 3

Remerciements

Un remerciement spécial à James Kettle pour ses recherches et méthodes sur les désynchronisations HTTP

Et un remerciement spécial à Ben Sadeghipour pour avoir bêta-testé Smuggler et pour m'avoir permis de discuter de mon travail à Nahamcon 2020

IMPORTANT

Cet outil ne garantit pas l'absence de faux positifs ou de faux négatifs. Ce n'est pas parce qu'une mutation signale OK qu'il n'y a pas de problème de désynchronisation, mais plus important encore, ce n'est pas parce que l'outil indique un problème potentiel de désynchronisation qu'il en existe définitivement un. Le script peut rencontrer des processeurs de requêtes de grandes entités (par exemple Google/AWS/Yahoo/Akamai/etc.) pouvant afficher des résultats faussement positifs.

Installation

  1. git clone https://github.com/defparam/smuggler.git
  2. cd smuggler
  3. python3 smuggler.py -h

Exemple d'utilisation

Hôte unique :

root@kitploit:~
python3 smuggler.py -u <URL>

Liste d'hôtes :

root@kitploit:~
cat list_of_hosts.txt | python3 smuggler.py

Options

root@kitploit:~
usage: smuggler.py [-h] [-u URL] [-v VHOST] [-x] [-m METHOD] [-l LOG] [-q]
                   [-t TIMEOUT] [--no-color] [-c CONFIGFILE]

optional arguments:
  -h, --help            affiche ce message d'aide et quitte
  -u URL, --url URL     URL cible avec le point de terminaison
  -v VHOST, --vhost VHOST
                        Spécifie un hôte virtuel
  -x, --exit_early      Quitte le scan dès la première découverte
  -m METHOD, --method METHOD
                        Méthode HTTP à utiliser (par exemple GET, POST) Défaut : POST
  -l LOG, --log LOG     Spécifie un fichier de log
  -q, --quiet           Mode silencieux, ne logue que les problèmes trouvés
  -t TIMEOUT, --timeout TIMEOUT
                        Valeur de timeout de socket Défaut : 5
  --no-color            Supprime les codes couleur
  -c CONFIGFILE, --configfile CONFIGFILE
                        Chemin du fichier de configuration des charges utiles

Smuggler nécessite au minimum soit une URL via l'argument -u/--url, soit une liste d'URLs transmise via l'entrée standard. Si l'URL spécifie https://, Smuggler se connectera à l'hôte:port en utilisant SSL/TLS. Si l'URL spécifie http://, aucun SSL/TLS ne sera utilisé. Si seul l'hôte est spécifié, le script utilisera https:// par défaut.

Utilisez -v/--vhost <host> pour spécifier un en-tête Host différent de l'adresse du serveur.

Utilisez -x/--exit_early pour quitter le scan d'un serveur donné lorsqu'un problème potentiel est trouvé. En mode pipé, Smuggler continuera simplement vers l'hôte suivant de la liste.

Utilisez -m/--method <method> pour spécifier un verbe HTTP différent de POST (par exemple GET/PUT/PATCH/OPTIONS/CONNECT/TRACE/DELETE/HEAD/etc...)

Utilisez -l/--log <file> pour écrire la sortie dans un fichier en plus de la sortie standard.

Utilisez -q/--quiet pour réduire la verbosité et ne loguer que les problèmes trouvés.

Utilisez -t/--timeout <value> pour spécifier le timeout de la socket. La valeur doit être suffisamment élevée pour conclure que la socket est bloquée, mais suffisamment basse pour accélérer les tests (défaut : 5).

Utilisez --no-color pour supprimer les codes couleur imprimés sur la sortie standard (les logs n'incluent pas les codes couleur par défaut).

Utilisez -c/--configfile <configfile> pour spécifier votre fichier de configuration de mutations Smuggler (défaut : default.py).

Fichiers de configuration

Les fichiers de configuration sont des fichiers Python qui se trouvent dans le répertoire ./config de Smuggler. Ces fichiers décrivent le contenu des requêtes HTTP et les mutations de l'encodage de transfert à tester.

Voici un exemple de contenu de default.py :

root@kitploit:~
def render_template(gadget):
	RN = "\r\n"
	p = Payload()
	p.header  = "__METHOD__ __ENDPOINT__?cb=__RANDOM__ HTTP/1.1" + RN
	# p.header += "Transfer-Encoding: chunked" +RN	
	p.header += gadget + RN
	p.header += "Host: __HOST__" + RN
	p.header += "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36" + RN
	p.header += "Content-type: application/x-www-form-urlencoded; charset=UTF-8" + RN
	p.header += "Content-Length: __REPLACE_CL__" + RN
	return p


mutations["nameprefix1"] = render_template(" Transfer-Encoding: chunked")
mutations["tabprefix1"] = render_template("Transfer-Encoding:\tchunked")
mutations["tabprefix2"] = render_template("Transfer-Encoding\t:\tchunked")
mutations["space1"] = render_template("Transfer-Encoding : chunked")

for i in [0x1,0x4,0x8,0x9,0xa,0xb,0xc,0xd,0x1F,0x20,0x7f,0xA0,0xFF]:
	mutations["midspace-%02x"%i] = render_template("Transfer-Encoding:%cchunked"%(i))
	mutations["postspace-%02x"%i] = render_template("Transfer-Encoding%c: chunked"%(i))
	mutations["prespace-%02x"%i] = render_template("%cTransfer-Encoding: chunked"%(i))
	mutations["endspace-%02x"%i] = render_template("Transfer-Encoding: chunked%c"%(i))
	mutations["xprespace-%02x"%i] = render_template("X: X%cTransfer-Encoding: chunked"%(i))
	mutations["endspacex-%02x"%i] = render_template("Transfer-Encoding: chunked%cX: X"%(i))
	mutations["rxprespace-%02x"%i] = render_template("X: X\r%cTransfer-Encoding: chunked"%(i))
	mutations["xnprespace-%02x"%i] = render_template("X: X%c\nTransfer-Encoding: chunked"%(i))
	mutations["endspacerx-%02x"%i] = render_template("Transfer-Encoding: chunked\r%cX: X"%(i))
	mutations["endspacexn-%02x"%i] = render_template("Transfer-Encoding: chunked%c\nX: X"%(i))

Il n'y a pas encore d'arguments d'entrée pour spécifier vos propres en-têtes personnalisés et user-agents. Il est recommandé de créer votre propre fichier de configuration basé sur default.py et de le modifier selon vos besoins.

Smuggler est livré avec 3 fichiers de configuration : default.py (rapide), doubles.py (spécifique, lent), exhaustive.py (très lent). default.py est le plus rapide car il contient moins de mutations.

spécifiez les fichiers de configuration à l'aide de l'option de ligne de commande -c/--configfile <configfile>

Répertoire des charges utiles

Dans le répertoire Smuggler se trouve le répertoire payloads. Lorsque Smuggler trouve un problème potentiel de désynchronisation CLTE ou TECL, il sauvegarde automatiquement un fichier texte binaire de la charge utile problématique dans le répertoire payloads. Tous les noms de fichiers de charges utiles sont annotés avec le nom d'hôte, le type de désynchronisation et le type de mutation. Utilisez ces charges utiles pour netcat directement sur le serveur ou pour les importer dans d'autres outils d'analyse.

Scripts d'aide

Après avoir trouvé un problème de désynchronisation, n'hésitez pas à utiliser mes scripts de désynchronisation Turbo Intruder disponibles ici : https://github.com/defparam/tiscripts DesyncAttack_CLTE.py et DesyncAttack_TECL.py sont d'excellents scripts pour aider à organiser une attaque de désynchronisation.

Licence

Ces scripts sont publiés sous la licence MIT. Voir LICENSE.

Télécharger l’outil