Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
smuggler — Python-basiertes Werkzeug zum Testen von HTTP-Request-Smuggling und Desynchronisation, das CL.TE- und TE.CL-Schwachstellen mit konfigurierbaren Mutations-Payloads und automatisierter Überprüfung erkennt. | Kitploit
Tools/GitHubGitHub/defparam/smuggler
SchwachstellenscannerWebanwendungs-ExploitationWebsicherheitPenetrationstests
GitHubdefparam/smuggler

smuggler

Python-basiertes Werkzeug zum Testen von HTTP-Request-Smuggling und Desynchronisation, das CL.TE- und TE.CL-Schwachstellen mit konfigurierbaren Mutations-Payloads und automatisierter Überprüfung erkennt.

Repository anzeigen
2.1k3269vor 5 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
root@kitploit:~
  ______                         _              
 / _____)                       | |             
( (____  ____  _   _  ____  ____| | _____  ____ 
 \____ \|    \| | | |/ _  |/ _  | || ___ |/ ___)
 _____) ) | | | |_| ( (_| ( (_| | || ____| |    
(______/|_|_|_|____/ \___ |\___ |\_)_____)_|    
                    (_____(_____|               

     @defparam

Smuggler

Ein Tool zum Testen von HTTP-Request-Smuggling/-Desync, geschrieben in Python 3

Danksagungen

Ein besonderer Dank geht an James Kettle für seine Forschung und Methoden zu HTTP-Desyncs

Und ein besonderer Dank an Ben Sadeghipour für das Beta-Testen von Smuggler und dafür, dass er mir erlaubt hat, meine Arbeit auf der Nahamcon 2020 zu besprechen.

WICHTIG

Dieses Tool garantiert keine Fehlerfreiheit von Falsch-Positiven oder Falsch-Negativen. Nur weil eine Mutation möglicherweise OK meldet, heißt das nicht, dass es kein Desync-Problem gibt, aber wichtiger noch: Nur weil das Tool ein potenzielles Desync-Problem anzeigt, heißt das nicht, dass definitiv eines existiert. Das Skript kann auf Anfrageverarbeiter großer Entitäten (z. B. Google/AWS/Yahoo/Akamai/usw.) stoßen, die falsch-positive Ergebnisse liefern können.

Installation

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

Beispielnutzung

Einzelner Host:

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

Liste von Hosts:

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

Optionen

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            show this help message and exit
  -u URL, --url URL     Target URL with Endpoint
  -v VHOST, --vhost VHOST
                        Specify a virtual host
  -x, --exit_early      Exit scan on first finding
  -m METHOD, --method METHOD
                        HTTP method to use (e.g GET, POST) Default: POST
  -l LOG, --log LOG     Specify a log file
  -q, --quiet           Quiet mode will only log issues found
  -t TIMEOUT, --timeout TIMEOUT
                        Socket timeout value Default: 5
  --no-color            Suppress color codes
  -c CONFIGFILE, --configfile CONFIGFILE
                        Filepath to the configuration file of payloads

Smuggler benötigt mindestens entweder eine URL über das Argument -u/--url oder eine Liste von URLs, die über stdin an das Skript übergeben werden. Wenn die URL https:// angibt, verbindet sich Smuggler mit SSL/TLS mit dem Host:Port. Wenn die URL http:// angibt, wird überhaupt kein SSL/TLS verwendet. Wenn nur der Host angegeben wird, verwendet das Skript standardmäßig https://

Verwenden Sie -v/--vhost <host>, um einen anderen Host-Header als die Serveradresse anzugeben.

Verwenden Sie -x/--exit_early, um den Scan eines bestimmten Servers zu beenden, wenn ein potenzielles Problem gefunden wird. Im gepipelten Modus fährt Smuggler einfach mit dem nächsten Host auf der Liste fort.

Verwenden Sie -m/--method <method>, um ein anderes HTTP-Verb als POST anzugeben (z. B. GET/PUT/PATCH/OPTIONS/CONNECT/TRACE/DELETE/HEAD usw.)

Verwenden Sie -l/--log <file>, um die Ausgabe sowohl in eine Datei als auch nach stdout zu schreiben.

Verwenden Sie -q/--quiet, um die Ausführlichkeit zu reduzieren und nur gefundene Probleme zu protokollieren.

Verwenden Sie -t/--timeout <value>, um das Socket-Timeout anzugeben. Der Wert sollte hoch genug sein, um festzustellen, dass der Socket hängt, aber niedrig genug, um den Test zu beschleunigen (Standard: 5).

Verwenden Sie --no-color, um die ausgegebenen Farbcodes in stdout zu unterdrücken (Logs enthalten standardmäßig keine Farbcodes).

Verwenden Sie -c/--configfile <configfile>, um Ihre eigene Smuggler-Mutationskonfigurationsdatei anzugeben (Standard: default.py).

Konfigurationsdateien

Konfigurationsdateien sind Python-Dateien, die im Verzeichnis ./config von Smuggler existieren. Diese Dateien beschreiben den Inhalt der HTTP-Anfragen und die zu testenden Transfer-Encoding-Mutationen.

Hier ist ein Beispielinhalt von 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))

Es gibt noch keine Eingabeargumente, um eigene benutzerdefinierte Header und User-Agents anzugeben. Es wird empfohlen, eine eigene Konfigurationsdatei basierend auf default.py zu erstellen und nach Ihren Wünschen zu ändern.

Smuggler wird mit 3 Konfigurationsdateien ausgeliefert: default.py (schnell), doubles.py (speziell, langsam), exhaustive.py (sehr langsam) default.py ist am schnellsten, da es weniger Mutationen enthält.

Konfigurationsdateien mit der Befehlszeilenoption -c/--configfile <configfile> angeben.

Payloads-Verzeichnis

Im Smuggler-Verzeichnis befindet sich das Verzeichnis payloads. Wenn Smuggler ein potenzielles CLTE- oder TECL-Desync-Problem findet, wird es automatisch eine binäre txt-Datei des problematischen Payloads im payloads-Verzeichnis ablegen. Alle Payload-Dateinamen sind mit dem Hostnamen, dem Desync-Typ und dem Mutationstyp annotiert. Verwenden Sie diese Payloads, um sich direkt per Netcat mit dem Server zu verbinden oder sie in andere Analysetools zu importieren.

Hilfsskripte

Wenn Sie ein Desync-Problem gefunden haben, können Sie gerne meine Turbo-Intruder-Desync-Skripte verwenden, die Sie hier finden: https://github.com/defparam/tiscripts DesyncAttack_CLTE.py und DesyncAttack_TECL.py sind großartige Skripte, um einen Desync-Angriff vorzubereiten.

Lizenz

Diese Skripte werden unter der MIT-Lizenz veröffentlicht. Siehe LICENSE.

Tool herunterladen