Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
smuggler — Strumento di testing per HTTP request smuggling e desync basato su Python che rileva le vulnerabilità CL.TE e TE.CL utilizzando payload di mutazione configurabili e scansione automatizzata. | Kitploit
Strumenti/GitHubGitHub/defparam/smuggler
Scanner di VulnerabilitàSfruttamento di Applicazioni WebSicurezza WebPenetration Testing
GitHubdefparam/smuggler

smuggler

Strumento di testing per HTTP request smuggling e desync basato su Python che rileva le vulnerabilità CL.TE e TE.CL utilizzando payload di mutazione configurabili e scansione automatizzata.

Vedi Repository
2.1k32695 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

/ ) | |
( (
____ _ _ ____ | | _____ ____ _ | | | | |/ _ |/ _ | || ___ |/ __) _____) ) | | | || ( (| ( (
| | || | |
(
/||||_/ _
|___ |_))_|
(
(_____|

root@kitploit:~
 @defparam

Smuggler

Uno strumento di test per HTTP Request Smuggling / Desync scritto in Python 3

Ringraziamenti

Un ringraziamento speciale a James Kettle per le sue ricerche e metodi sugli HTTP desync

E un ringraziamento speciale a Ben Sadeghipour per il beta testing di Smuggler e per avermi permesso di discutere del mio lavoro al Nahamcon 2020

IMPORTANTE

Questo strumento non garantisce l'assenza di falsi positivi o falsi negativi. Solo perché una mutazione può segnalare OK non significa che non ci sia un problema di desync, ma cosa più importante, solo perché lo strumento indica un potenziale problema di desync non significa che ne esista sicuramente uno. Lo script potrebbe incontrare processori di richieste di grandi entità (es. Google/AWS/Yahoo/Akamai/ecc.) che potrebbero mostrare risultati falsi positivi.

Installazione

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

Esempio di Utilizzo

Singolo host:

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

Elenco di host:

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

Opzioni

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

argomenti opzionali: -h, --help mostra questo messaggio di aiuto ed esci -u URL, --url URL URL di destinazione con endpoint -v VHOST, --vhost VHOST Specifica un host virtuale -x, --exit_early Esci dalla scansione al primo risultato -m METHOD, --method METHOD Metodo HTTP da utilizzare (es. GET, POST) Predefinito: POST -l LOG, --log LOG Specifica un file di log -q, --quiet Modalità silenziosa registra solo i problemi trovati -t TIMEOUT, --timeout TIMEOUT Valore del timeout del socket Predefinito: 5 --no-color Sopprime i codici colore -c CONFIGFILE, --configfile CONFIGFILE Percorso del file di configurazione dei payload

Smuggler richiede come minimo o un URL tramite l'argomento -u/--url o un elenco di URL passati allo script tramite stdin. Se l'URL specifica https:// allora Smuggler si connetterà all'host:porta usando SSL/TLS. Se l'URL specifica http:// allora non verrà utilizzato SSL/TLS. Se viene specificato solo l'host, lo script utilizzerà di default https://

Usa -v/--vhost <host> per specificare un header host diverso dall'indirizzo del server

Usa -x/--exit_early per uscire dalla scansione di un dato server quando viene trovato un potenziale problema. In modalità pipe, smuggler continuerà semplicemente con il prossimo host nell'elenco

Usa -m/--method <method> per specificare un verbo HTTP diverso da POST (es. GET/PUT/PATCH/OPTIONS/CONNECT/TRACE/DELETE/HEAD/ecc.)

Usa -l/--log <file> per scrivere l'output su file oltre che su stdout

Usa -q/--quiet per ridurre la verbosità e registrare solo i problemi trovati

Usa -t/--timeout <value> per specificare il timeout del socket. Il valore dovrebbe essere abbastanza alto da concludere che il socket sia in attesa, ma abbastanza basso da velocizzare i test (default: 5)

Usa --no-color per sopprimere i codici colore dell'output stampato su stdout (i log di default non includono i codici colore)

Usa -c/--configfile <configfile> per specificare il file di configurazione delle mutazioni di smuggler (default: default.py)

File di Configurazione

I file di configurazione sono file Python che esistono nella directory ./config di smuggler. Questi file descrivono il contenuto delle richieste HTTP e le mutazioni del transfer-encoding da testare.

Ecco un esempio di contenuto di 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))

Non ci sono ancora argomenti di input per specificare i propri header e user-agent personalizzati. Si consiglia di creare il proprio file di configurazione basato su default.py e modificarlo a proprio piacimento.

Smuggler viene fornito con 3 file di configurazione: default.py (veloce), doubles.py (di nicchia, lento), exhaustive.py (molto lento)

specificare i file di configurazione usando l'opzione della riga di comando -c/--configfile <configfile>

Directory dei Payload

All'interno della directory di Smuggler si trova la directory payloads. Quando Smuggler trova un potenziale problema di desync CLTE o TECL, scaricherà automaticamente un file binario txt del payload problematico nella directory payloads. Tutti i nomi dei file payload sono annotati con il nome host, il tipo di desync e il tipo di mutazione. Usa questi payload per connetterti direttamente al server con netcat o per importarli in altri strumenti di analisi.

Script di Supporto

Dopo aver trovato un problema di desync, sentiti libero di usare i miei script desync per Turbo Intruder trovati qui: https://github.com/defparam/tiscripts DesyncAttack_CLTE.py e DesyncAttack_TECL.py sono ottimi script per aiutare a mettere in scena un attacco desync

Licenza

Questi script sono rilasciati sotto licenza MIT. Vedi LICENSE.

Scarica lo strumento