---
url: https://docs.ogmabox.com/es/app/utilities/race-smuggling.md
description: >-
  Prueba condiciones de carrera y el comportamiento de contrabando de
  solicitudes HTTP con las utilidades de Ogma.
---

# Condiciones de carrera y contrabando HTTP {#race-and-smuggling}

Condiciones de carrera / Contrabando HTTP ofrece dos herramientas especializadas para ataques HTTP sensibles a los tiempos y a nivel de protocolo.

## Condiciones de carrera {#race-conditions}

La pestaña Condiciones de carrera envía varias copias de una solicitud simultáneamente al mismo endpoint y permite comparar las respuestas y los tiempos de las ejecuciones en paralelo.

### Cuándo usarla {#when-to-use-it}

* **TOCTOU (tiempo de comprobación/tiempo de uso)**: prueba si las solicitudes concurrentes pueden intercalarse entre una comprobación y una operación de cambio de estado.
* **Manipulación de cuentas**: envía cambios de saldo, canjes de cupones u operaciones con límites de manera concurrente para comprobar si se produce doble gasto o un exceso de canjes.
* **Elusión de límites de votos o de tasa**: confirma si los límites por usuario se aplican de forma atómica.

### Ejecución de una prueba de condiciones de carrera {#running-a-race-test}

1. Crea la solicitud objetivo en la pestaña Condiciones de carrera o envíala a ella.
2. Establece el valor de **concurrencia**: cuántas copias se enviarán en paralelo.
3. Haz clic en **Enviar prueba de carrera**. Todas las copias se envían lo más simultáneamente posible.
4. Revisa la tabla de respuestas: código de estado, cuerpo y tiempo transcurrido para cada copia.
5. Las diferencias entre respuestas (distintos códigos de estado, distintos cuerpos de respuesta, éxito inesperado en las copias 2+) indican una ventana de carrera.

### Condiciones de carrera con un único paquete HTTP/2 {#http-2-single-packet-racing}

Cuando el objetivo admita HTTP/2, activa el **modo HTTP/2**. HTTP/2 multiplexa todas las solicitudes en paralelo sobre una conexión, lo que elimina la variación de los tiempos de red y hace más fiable su llegada concurrente al servidor.

## Contrabando de solicitudes HTTP {#http-request-smuggling}

La pestaña Contrabando HTTP prueba cómo gestiona un servidor las cabeceras ambiguas `Content-Length` y `Transfer-Encoding` para detectar desincronización entre el frontend y el backend.

### Contexto {#background}

Cuando un proxy inverso y un servidor backend discrepan sobre dónde termina una solicitud y empieza la siguiente, un prefijo introducido mediante contrabando desde la solicitud A puede anteponerse a la solicitud B. El impacto abarca desde el envenenamiento de caché hasta la elusión de autenticación y la inyección de solicitudes arbitrarias.

### Variantes de desincronización {#desync-variants}

| Variante | Descripción |
|---|---|
| CL.TE | El frontend usa Content-Length; el backend usa Transfer-Encoding |
| TE.CL | El frontend usa Transfer-Encoding; el backend usa Content-Length |
| TE.TE | Ambos usan Transfer-Encoding, pero responden de manera distinta a una cabecera ofuscada |

### Ejecución de un sondeo de contrabando de solicitudes {#running-a-smuggling-probe}

1. Selecciona el endpoint objetivo en la pestaña Contrabando HTTP.
2. Elige la variante de desincronización que quieras probar.
3. Haz clic en **Enviar sondeo**. La herramienta envía la solicitud preparada y mide la respuesta.
4. Un tiempo de espera agotado o una respuesta inesperada en la segunda solicitud de la secuencia indica una posible desincronización.
5. Confírmalo manualmente antes de crear un hallazgo; se producen falsos positivos cuando las condiciones de red provocan un tiempo de espera agotado que no está relacionado con el sondeo.

## Páginas relacionadas {#related-pages}

* [Reenvío](../replay.md)
* [Intercepción](../intercept.md)
* [Hallazgos](../findings.md)
