
Contrabandista es una herramienta escrita en Python 3 para probar el contrabando / desincronización de solicitudes HTTP
instalación
- clon de git https://github.com/defparam/smuggler.git
- Contrabandista de CD
- python3 smuggler.py -h
Ejemplo de aplicacion
Anfitrión único:
python3 smuggler.py -u
Lista de hosts:
cat list_of_hosts.txt | python3 smuggler.py
Opciones
Uso: smuggler.py [-h] [-u URL] [-v VHOST] [-x] [-m METHOD] [-l LOG] [-q]
[-t TIMEOUT] [–no-color] [-c CONFIGFILE]
argumentos opcionales:
-h, –help Mostrar y salir de este mensaje de ayuda
-u url, -url url URL de destino con punto final
-v VHOST, -vhost VHOST
Especificar un host virtual
-x, –exit_early Finaliza el escaneo en el primer hallazgo
-m MÉTODO, -método MÉTODO
Método HTTP que se utilizará (p. Ej., GET, POST) Estándar: POST
-l LOG, –log LOG Especifica un archivo de registro
-q, –quiet El modo silencioso solo registra los problemas que se encuentran
-t TIMEOUT, -timeout TIMEOUT
Valor de tiempo de espera del conector Estándar: 5
–Sin color suprime códigos de color
-c CONFIGFILE, -configfile CONFIGFILE
Ruta de archivo al archivo de configuración de cargas útiles
Smuggler requiere al menos una URL a través del argumento -u / –url o una lista de URL pasadas al script a través de stdin. Si la URL especifica https://
luego Smuggler se conecta al puerto host a través de SSL / TLS. Si la URL especifica http://
entonces no se utiliza SSL / TLS en absoluto. Si solo se especifica el host, el script se establecerá por defecto en https://
Utilice -v / –vhost
Utilice -x / –exit_early para dejar de escanear un servidor específico cuando se encuentre un problema potencial. En modo canalizado, el contrabandista simplemente va al siguiente host de la lista.
Utilice -m / –method
Utilice -l / –log
Use -q / –quiet para reducir la verbosidad y solo encontrar problemas de protocolo
Utilice -t / –timeout
Utilice –no-color para suprimir los códigos de color de salida impresos en la salida estándar (los registros no contienen códigos de color de forma predeterminada)
Utilice -c / –configfile
Archivos de configuración
Los archivos de configuración son archivos de Python que están disponibles en el directorio ./config del contrabandista. Estos archivos describen el contenido de las solicitudes HTTP y las mutaciones de codificación de transmisión que se probarán.
Aquí hay contenido de muestra de default.py:
def render_template (gadget):
RN = » r n»
p = carga útil ()
p.header = «METHOD ENDPOINT? cb = RANDOM HTTP / 1.1» + RN
# p.header + = «Codificación de transferencia: fragmentado» + 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, como Gecko) Chrome / 78.0.3904.87 Safari / 537.36» + RN
p.header + = «Tipo de contenido: aplicación / x-www-form-urlencoded; Juego de caracteres = UTF-8 ”+ RN
p.header + = «Longitud del contenido: REPLACE_CL» + RN
volver p
Mutaciones[“nameprefix1″] = render_template («Codificación de transferencia: fragmentado»)
Mutaciones[“tabprefix1”] = render_template («Codificación de transferencia: tchunked»)
Mutaciones[“tabprefix2”] = render_template («Codificación de transferencia t: tchunked»)
Mutaciones[“space1”] = render_template («Codificación de transferencia: fragmentado»)
porque soy [0x1,0x4,0x8,0x9,0xa,0xb,0xc,0xd,0x1F,0x20,0x7f,0xA0,0xFF]:
Mutaciones[“midspace-%02x”%i] = render_template («Codificación de transferencia:% cchunked»% (i))
Mutaciones[“postspace-%02x”%i] = render_template («Codificación de transferencia% c: fragmentado»% (i))
Mutaciones[“prespace-%02x”%i] = render_template («% cTransfer-Encoding: fragmentado»% (i))
Mutaciones[“endspace-%02x”%i] = render_template («Codificación de transferencia: fragmentado% c»% (i))
Mutaciones[“xprespace-%02x”%i] = render_template («X: X% cTransfer-Encoding: fragmentado»% (i))
Mutaciones[“endspacex-%02x”%i] = render_template («Codificación de transferencia: fragmentado% cX: X»% (i))
Mutaciones[“rxprespace-%02x”%i] = render_template («X: X r% cTransfer-Encoding: fragmentado»% (i))
Mutaciones[“xnprespace-%02x”%i] = render_template («X: X% c nTransfer-Encoding: fragmentado»% (i))
Mutaciones[“endspacerx-%02x”%i] = render_template («Codificación de transferencia: fragmentado r% cX: X»% (i))
Mutaciones[“endspacexn-%02x”%i] = render_template («Codificación de transferencia: fragmentado% c nX: X»% (i))
Todavía no hay argumentos de entrada para especificar sus propios encabezados de cliente y agentes de usuario. Se recomienda crear su propio archivo de configuración basado en default.py y cambiarlo de acuerdo con sus requisitos.
Smuggler viene con 3 archivos de configuración: default.py (rápido), doubles.py (nicho, lento), Comprehensive.py (muy lento) default.py es el más rápido ya que contiene menos mutaciones.
Especifique los archivos de configuración con la opción de línea de comandos -c / –configfile
Directorio de carga útil
El directorio de cargas útiles se encuentra en el directorio de contrabandistas. Cuando Smuggler encuentra un problema potencial de desincronización CLTE o TECL, un archivo .txt binario de la carga útil problemática se coloca automáticamente en el directorio de carga útil. Todos los nombres de archivo de la carga útil se anotan con el nombre de host, el tipo de desincronización y el tipo de mutación. Utilice estas cargas útiles para transferir Netcat directamente al servidor o para importarlo a otras herramientas de análisis.