Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
smuggler — Herramienta basada en Python para pruebas de contrabando de solicitudes HTTP y desincronización, que detecta vulnerabilidades CL.TE y TE.CL utilizando payloads de mutación configurables y escaneo automatizado. | Kitploit
Herramientas/GitHubGitHub/defparam/smuggler
Escáneres de VulnerabilidadesExplotación de Aplicaciones WebSeguridad WebPruebas de Penetración
GitHubdefparam/smuggler

smuggler

Herramienta basada en Python para pruebas de contrabando de solicitudes HTTP y desincronización, que detecta vulnerabilidades CL.TE y TE.CL utilizando payloads de mutación configurables y escaneo automatizado.

Ver Repositorio
2.1k32623hace 5 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
  ______                         _              
 / _____)                       | |             
( (____  ____  _   _  ____  ____| | _____  ____ 
 \____ \|    \| | | |/ _  |/ _  | || ___ |/ ___)
 _____) ) | | | |_| ( (_| ( (_| | || ____| |    
(______/|_|_|_|____/ \___ |\___ |\_)_____)_|    
                    (_____(_____|               

     @defparam

Smuggler

Una herramienta de prueba de HTTP Request Smuggling / Desync escrita en Python 3

Agradecimientos

Un agradecimiento especial a James Kettle por su investigación y métodos sobre desincronizaciones HTTP

Y un agradecimiento especial a Ben Sadeghipour por las pruebas beta de Smuggler y por permitirme discutir mi trabajo en Nahamcon 2020

IMPORTANTE

Esta herramienta no garantiza la ausencia de falsos positivos o falsos negativos. Que una mutación informe OK no significa que no haya un problema de desincronización, pero más importante aún, que la herramienta indique un posible problema de desincronización no significa que definitivamente exista uno. El script puede encontrarse con procesadores de solicitudes de grandes entidades (por ejemplo, Google/AWS/Yahoo/Akamai/etc.) que pueden mostrar resultados falsos positivos.

Instalación

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

Ejemplo de uso

Host único:

python3 smuggler.py -u <URL>

Lista de hosts:

cat list_of_hosts.txt | python3 smuggler.py

Opciones

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 requiere como mínimo una URL a través del argumento -u/--url o una lista de URLs canalizada al script a través de stdin. Si la URL especifica https://, Smuggler se conectará al host:puerto usando SSL/TLS. Si la URL especifica http:// no se usará SSL/TLS en absoluto. Si solo se especifica el host, el script usará https:// por defecto.

Use -v/--vhost <host> para especificar un encabezado Host diferente de la dirección del servidor.

Use -x/--exit_early para salir del escaneo de un servidor determinado cuando se encuentre un problema potencial. En modo canalizado, Smuggler simplemente continuará con el siguiente host de la lista.

Use -m/--method <method> para especificar un verbo HTTP diferente de POST (por ejemplo, GET/PUT/PATCH/OPTIONS/CONNECT/TRACE/DELETE/HEAD/etc.)

Use -l/--log <file> para escribir la salida en un archivo además de stdout.

Use -q/--quiet para reducir la verbosidad y solo registrar los problemas encontrados.

Use -t/--timeout <value> para especificar el tiempo de espera del socket. El valor debe ser lo suficientemente alto para concluir que el socket está colgado, pero lo suficientemente bajo para acelerar las pruebas (por defecto: 5).

Use --no-color para suprimir los códigos de color de la salida impresa en stdout (los registros por defecto no incluyen códigos de color).

Use -c/--configfile <configfile> para especificar su archivo de configuración de mutaciones de Smuggler (por defecto: default.py).

Archivos de configuración

Los archivos de configuración son archivos Python que existen en el directorio ./config de Smuggler. Estos archivos describen el contenido de las solicitudes HTTP y las mutaciones de transfer-encoding a probar.

Aquí está el contenido de ejemplo de default.py:

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))

Todavía no hay argumentos de entrada para especificar sus propios encabezados personalizados y user-agents. Se recomienda crear su propio archivo de configuración basado en default.py y modificarlo a su gusto.

Smuggler viene con 3 archivos de configuración: default.py (rápido), doubles.py (específico, lento), exhaustive.py (muy lento) default.py es el más rápido porque contiene menos mutaciones.

Especifique los archivos de configuración usando la opción de línea de comandos -c/--configfile <configfile>

Directorio de payloads

Dentro del directorio de Smuggler se encuentra el directorio payloads. Cuando Smuggler encuentra un posible problema de desincronización CLTE o TECL, automáticamente guarda un archivo txt binario del payload problemático en el directorio payloads. Todos los nombres de archivos de payload están anotados con el nombre del host, el tipo de desincronización y el tipo de mutación. Use estos payloads para netcat directamente al servidor o para importarlos en otras herramientas de análisis.

Scripts auxiliares

Después de encontrar un problema de desincronización, no dude en usar mis scripts de desincronización de Turbo Intruder que se encuentran aquí: https://github.com/defparam/tiscripts DesyncAttack_CLTE.py y DesyncAttack_TECL.py son excelentes scripts para ayudar a preparar un ataque de desincronización.

Licencia

Estos scripts se publican bajo la licencia MIT. Consulte LICENSE.

Descargar herramienta