Saltar al contenido
OPS // KITitspentest.sh

X-SMU

smuggler.py

CLI independiente en Python que detecta contrabando de peticiones HTTP y problemas de desync mediante respuestas diferenciales del servidor.

Sitio oficialVolver al catálogo

RESUMEN

smuggler.py (github.com/defparam/smuggler), con licencia MIT y escrito en Python 3, es una alternativa de línea de comandos independiente al flujo basado en Burp cubierto en otra entrada de este sitio (ver HTTP Request Smuggler): envía una batería configurable de pares de peticiones con Content-Length/Transfer-Encoding mutados contra un objetivo y busca respuestas diferenciales — timeouts, códigos de estado inesperados o response splitting — que indiquen que el front-end y el back-end no están de acuerdo sobre dónde termina una petición, cubriendo tanto los desyncs clásicos CL.TE/TE.CL como varias variantes de downgrade HTTP/2.

Como no necesita un proxy de por medio y corre enteramente desde la terminal, se integra en scripts de escaneo automatizado o pipelines de CI de una forma que la extensión de Burp de HTTP Request Smuggler no puede, a costa de las plantillas de ataque de apuntar-y-clicar y la integración en vivo con Repeater que ofrece la extensión de Burp para convertir un desync confirmado en una explotación.

CASOS DE USO

Casos de uso en un engagement

  • 01

    Detectar bugs de desync CL.TE y TE.CL desde línea de comandos contra un objetivo detrás de un proxy inverso o CDN.

  • 02

    Ejecutar comprobaciones de contrabando como paso automatizado y scripteable en un pipeline de CI/CD contra un entorno de staging.

  • 03

    Probar variantes de contrabando relacionadas con downgrade de HTTP/2 junto a mutaciones clásicas de headers HTTP/1.1.

  • 04

    Pasar una lista de URLs por stdin para revisar en lote varios hosts detrás de un front-end compartido.

PRIMEROS PASOS

Cuando un objetivo está detrás de un proxy inverso o balanceador y se prefiere una comprobación por línea de comandos y scripteable en vez de un flujo dirigido por Burp, para detectar comportamiento de desync por contrabando de peticiones.

  1. Confirma que el objetivo está detrás de un front-end (proxy, balanceador, CDN) y que las pruebas de contrabando a volumen están dentro del alcance.
  2. Clona el repo y ejecútalo con Python 3 — no requiere dependencias extra más allá de la librería estándar.
  3. Ejecuta un escaneo contra la URL objetivo, o pásale por stdin una lista de URLs en alcance para un run en lote.
  4. Revisa cualquier mutación CL.TE/TE.CL marcada y el archivo de payload guardado para los desyncs sospechosos.
  5. Reproduce manualmente un positivo en Repeater o una herramienta de socket en bruto antes de reportarlo.
python3 smuggler.py -u https://target.example.com

ANTES DE USARLA

Qué revisar antes de lanzarla

Una mutación marcada es una pista, no un desync confirmado — reprodúcela siempre manualmente (Repeater, un socket en bruto) antes de reportar, ya que el ruido de timing en la red puede producir falsos positivos.

El contrabando de peticiones confirmado afecta a otros usuarios que comparten el mismo pool de conexiones del front-end, no solo al tester — coordina con cuidado con el cliente antes de demostrar impacto en una ruta de producción compartida.

Un run completo con todas las mutaciones y variantes HTTP/2 envía un volumen no trivial de peticiones malformadas; confirma que la infraestructura y el equipo de monitoreo del objetivo lo esperan antes de correrlo sin avisar.

SIGUE EXPLORANDO

Ver toda la fase →